1package gtk 2 3// #include <gtk/gtk.h> 4// #include "gtk.go.h" 5// #include "print.go.h" 6import "C" 7import ( 8 "errors" 9 "runtime" 10 "unsafe" 11 12 "github.com/gotk3/gotk3/cairo" 13 "github.com/gotk3/gotk3/glib" 14 "github.com/gotk3/gotk3/internal/callback" 15 "github.com/gotk3/gotk3/pango" 16) 17 18func init() { 19 tm := []glib.TypeMarshaler{ 20 // Enums 21 {glib.Type(C.gtk_page_orientation_get_type()), marshalPageOrientation}, 22 {glib.Type(C.gtk_print_error_get_type()), marshalPrintError}, 23 {glib.Type(C.gtk_print_operation_action_get_type()), marshalPrintOperationAction}, 24 {glib.Type(C.gtk_print_operation_result_get_type()), marshalPrintOperationResult}, 25 {glib.Type(C.gtk_print_status_get_type()), marshalPrintStatus}, 26 {glib.Type(C.gtk_unit_get_type()), marshalUnit}, 27 28 // Objects/Interfaces 29 {glib.Type(C.gtk_number_up_layout_get_type()), marshalNumberUpLayout}, 30 {glib.Type(C.gtk_page_orientation_get_type()), marshalPageOrientation}, 31 {glib.Type(C.gtk_page_set_get_type()), marshalPageSet}, 32 {glib.Type(C.gtk_page_setup_get_type()), marshalPageSetup}, 33 {glib.Type(C.gtk_print_context_get_type()), marshalPrintContext}, 34 {glib.Type(C.gtk_print_duplex_get_type()), marshalPrintDuplex}, 35 {glib.Type(C.gtk_print_operation_get_type()), marshalPrintOperation}, 36 {glib.Type(C.gtk_print_operation_preview_get_type()), marshalPrintOperationPreview}, 37 {glib.Type(C.gtk_print_pages_get_type()), marshalPrintPages}, 38 {glib.Type(C.gtk_print_quality_get_type()), marshalPrintQuality}, 39 {glib.Type(C.gtk_print_settings_get_type()), marshalPrintSettings}, 40 41 // Boxed 42 {glib.Type(C.gtk_paper_size_get_type()), marshalPaperSize}, 43 } 44 45 glib.RegisterGValueMarshalers(tm) 46 47 WrapMap["GtkPageSetup"] = wrapPageSetup 48 WrapMap["GtkPrintContext"] = wrapPrintContext 49 WrapMap["GtkPrintOperation"] = wrapPrintOperation 50 WrapMap["GtkPrintOperationPreview"] = wrapPrintOperationPreview 51 WrapMap["GtkPrintSettings"] = wrapPrintSettings 52} 53 54/* 55 * Constants 56 */ 57 58// NumberUpLayout is a representation of GTK's GtkNumberUpLayout. 59type NumberUpLayout int 60 61const ( 62 NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM NumberUpLayout = C.GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM 63 NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP NumberUpLayout = C.GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP 64 NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM NumberUpLayout = C.GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM 65 NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP NumberUpLayout = C.GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP 66 NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT NumberUpLayout = C.GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT 67 NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT NumberUpLayout = C.GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT 68 NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT NumberUpLayout = C.GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT 69 NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT NumberUpLayout = C.GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT 70) 71 72func marshalNumberUpLayout(p uintptr) (interface{}, error) { 73 c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p))) 74 return NumberUpLayout(c), nil 75} 76 77// PageOrientation is a representation of GTK's GtkPageOrientation. 78type PageOrientation int 79 80const ( 81 PAGE_ORIENTATION_PORTRAIT PageOrientation = C.GTK_PAGE_ORIENTATION_PORTRAIT 82 PAGE_ORIENTATION_LANDSCAPE PageOrientation = C.GTK_PAGE_ORIENTATION_LANDSCAPE 83 PAGE_ORIENTATION_REVERSE_PORTRAIT PageOrientation = C.GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT 84 PAGE_ORIENTATION_REVERSE_LANDSCAPE PageOrientation = C.GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE 85) 86 87func marshalPageOrientation(p uintptr) (interface{}, error) { 88 c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p))) 89 return PageOrientation(c), nil 90} 91 92// PrintDuplex is a representation of GTK's GtkPrintDuplex. 93type PrintDuplex int 94 95const ( 96 PRINT_DUPLEX_SIMPLEX PrintDuplex = C.GTK_PRINT_DUPLEX_SIMPLEX 97 PRINT_DUPLEX_HORIZONTAL PrintDuplex = C.GTK_PRINT_DUPLEX_HORIZONTAL 98 PRINT_DUPLEX_VERTICAL PrintDuplex = C.GTK_PRINT_DUPLEX_VERTICAL 99) 100 101func marshalPrintDuplex(p uintptr) (interface{}, error) { 102 c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p))) 103 return PrintDuplex(c), nil 104} 105 106// PrintPages is a representation of GTK's GtkPrintPages. 107type PrintPages int 108 109const ( 110 PRINT_PAGES_ALL PrintPages = C.GTK_PRINT_PAGES_ALL 111 PRINT_PAGES_CURRENT PrintPages = C.GTK_PRINT_PAGES_CURRENT 112 PRINT_PAGES_RANGES PrintPages = C.GTK_PRINT_PAGES_RANGES 113 PRINT_PAGES_SELECTION PrintPages = C.GTK_PRINT_PAGES_SELECTION 114) 115 116func marshalPrintPages(p uintptr) (interface{}, error) { 117 c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p))) 118 return PrintPages(c), nil 119} 120 121// PageSet is a representation of GTK's GtkPageSet. 122type PageSet int 123 124const ( 125 PAGE_SET_ALL PageSet = C.GTK_PAGE_SET_ALL 126 PAGE_SET_EVEN PageSet = C.GTK_PAGE_SET_EVEN 127 PAGE_SET_ODD PageSet = C.GTK_PAGE_SET_ODD 128) 129 130func marshalPageSet(p uintptr) (interface{}, error) { 131 c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p))) 132 return PageSet(c), nil 133} 134 135// PrintOperationAction is a representation of GTK's GtkPrintError. 136type PrintError int 137 138const ( 139 PRINT_ERROR_GENERAL PrintError = C.GTK_PRINT_ERROR_GENERAL 140 PRINT_ERROR_INTERNAL_ERROR PrintError = C.GTK_PRINT_ERROR_INTERNAL_ERROR 141 PRINT_ERROR_NOMEM PrintError = C.GTK_PRINT_ERROR_NOMEM 142 PRINT_ERROR_INVALID_FILE PrintError = C.GTK_PRINT_ERROR_INVALID_FILE 143) 144 145func marshalPrintError(p uintptr) (interface{}, error) { 146 c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p))) 147 return PrintError(c), nil 148} 149 150// PrintOperationAction is a representation of GTK's GtkPrintOperationAction. 151type PrintOperationAction int 152 153const ( 154 PRINT_OPERATION_ACTION_PRINT_DIALOG PrintOperationAction = C.GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG 155 PRINT_OPERATION_ACTION_PRINT PrintOperationAction = C.GTK_PRINT_OPERATION_ACTION_PRINT 156 PRINT_OPERATION_ACTION_PREVIEW PrintOperationAction = C.GTK_PRINT_OPERATION_ACTION_PREVIEW 157 PRINT_OPERATION_ACTION_EXPORT PrintOperationAction = C.GTK_PRINT_OPERATION_ACTION_EXPORT 158) 159 160func marshalPrintOperationAction(p uintptr) (interface{}, error) { 161 c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p))) 162 return PrintOperationAction(c), nil 163} 164 165// PrintOperationResult is a representation of GTK's GtkPrintOperationResult. 166type PrintOperationResult int 167 168const ( 169 PRINT_OPERATION_RESULT_ERROR PrintOperationResult = C.GTK_PRINT_OPERATION_RESULT_ERROR 170 PRINT_OPERATION_RESULT_APPLY PrintOperationResult = C.GTK_PRINT_OPERATION_RESULT_APPLY 171 PRINT_OPERATION_RESULT_CANCEL PrintOperationResult = C.GTK_PRINT_OPERATION_RESULT_CANCEL 172 PRINT_OPERATION_RESULT_IN_PROGRESS PrintOperationResult = C.GTK_PRINT_OPERATION_RESULT_IN_PROGRESS 173) 174 175func marshalPrintOperationResult(p uintptr) (interface{}, error) { 176 c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p))) 177 return PrintOperationResult(c), nil 178} 179 180// PrintStatus is a representation of GTK's GtkPrintStatus. 181type PrintStatus int 182 183const ( 184 PRINT_STATUS_INITIAL PrintStatus = C.GTK_PRINT_STATUS_INITIAL 185 PRINT_STATUS_PREPARING PrintStatus = C.GTK_PRINT_STATUS_PREPARING 186 PRINT_STATUS_GENERATING_DATA PrintStatus = C.GTK_PRINT_STATUS_GENERATING_DATA 187 PRINT_STATUS_SENDING_DATA PrintStatus = C.GTK_PRINT_STATUS_SENDING_DATA 188 PRINT_STATUS_PENDING PrintStatus = C.GTK_PRINT_STATUS_PENDING 189 PRINT_STATUS_PENDING_ISSUE PrintStatus = C.GTK_PRINT_STATUS_PENDING_ISSUE 190 PRINT_STATUS_PRINTING PrintStatus = C.GTK_PRINT_STATUS_PRINTING 191 PRINT_STATUS_FINISHED PrintStatus = C.GTK_PRINT_STATUS_FINISHED 192 PRINT_STATUS_FINISHED_ABORTED PrintStatus = C.GTK_PRINT_STATUS_FINISHED_ABORTED 193) 194 195func marshalPrintStatus(p uintptr) (interface{}, error) { 196 c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p))) 197 return PrintStatus(c), nil 198} 199 200// PrintQuality is a representation of GTK's GtkPrintQuality. 201type PrintQuality int 202 203const ( 204 PRINT_QUALITY_LOW PrintQuality = C.GTK_PRINT_QUALITY_LOW 205 PRINT_QUALITY_NORMAL PrintQuality = C.GTK_PRINT_QUALITY_NORMAL 206 PRINT_QUALITY_HIGH PrintQuality = C.GTK_PRINT_QUALITY_HIGH 207 PRINT_QUALITY_DRAFT PrintQuality = C.GTK_PRINT_QUALITY_DRAFT 208) 209 210func marshalPrintQuality(p uintptr) (interface{}, error) { 211 c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p))) 212 return PrintQuality(c), nil 213} 214 215// Unit is a representation of GTK's GtkUnit. 216type Unit int 217 218const ( 219 GTK_UNIT_NONE Unit = C.GTK_UNIT_NONE 220 GTK_UNIT_POINTS Unit = C.GTK_UNIT_POINTS 221 GTK_UNIT_INCH Unit = C.GTK_UNIT_INCH 222 GTK_UNIT_MM Unit = C.GTK_UNIT_MM 223) 224 225func marshalUnit(p uintptr) (interface{}, error) { 226 c := C.g_value_get_enum((*C.GValue)(unsafe.Pointer(p))) 227 return Unit(c), nil 228} 229 230/* 231 * GtkPageSetup 232 */ 233type PageSetup struct { 234 *glib.Object 235} 236 237func (ps *PageSetup) native() *C.GtkPageSetup { 238 if ps == nil || ps.GObject == nil { 239 return nil 240 } 241 p := unsafe.Pointer(ps.GObject) 242 return C.toGtkPageSetup(p) 243} 244 245func marshalPageSetup(p uintptr) (interface{}, error) { 246 c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p))) 247 obj := glib.Take(unsafe.Pointer(c)) 248 return wrapPageSetup(obj), nil 249} 250 251func wrapPageSetup(obj *glib.Object) *PageSetup { 252 if obj == nil { 253 return nil 254 } 255 256 return &PageSetup{obj} 257} 258 259// PageSetupNew() is a wrapper around gtk_page_setup_new(). 260func PageSetupNew() (*PageSetup, error) { 261 c := C.gtk_page_setup_new() 262 if c == nil { 263 return nil, nilPtrErr 264 } 265 obj := glib.Take(unsafe.Pointer(c)) 266 return wrapPageSetup(obj), nil 267} 268 269// Copy() is a wrapper around gtk_page_setup_copy(). 270func (ps *PageSetup) Copy() (*PageSetup, error) { 271 c := C.gtk_page_setup_copy(ps.native()) 272 if c == nil { 273 return nil, nilPtrErr 274 } 275 obj := glib.Take(unsafe.Pointer(c)) 276 return wrapPageSetup(obj), nil 277} 278 279// GetOrientation() is a wrapper around gtk_page_setup_get_orientation(). 280func (ps *PageSetup) GetOrientation() PageOrientation { 281 c := C.gtk_page_setup_get_orientation(ps.native()) 282 return PageOrientation(c) 283} 284 285// SetOrientation() is a wrapper around gtk_page_setup_set_orientation(). 286func (ps *PageSetup) SetOrientation(orientation PageOrientation) { 287 C.gtk_page_setup_set_orientation(ps.native(), C.GtkPageOrientation(orientation)) 288} 289 290// GetPaperSize() is a wrapper around gtk_page_setup_get_paper_size(). 291func (ps *PageSetup) GetPaperSize() *PaperSize { 292 c := C.gtk_page_setup_get_paper_size(ps.native()) 293 p := &PaperSize{c} 294 runtime.SetFinalizer(p, (*PaperSize).free) 295 return p 296} 297 298// SetPaperSize() is a wrapper around gtk_page_setup_set_paper_size(). 299func (ps *PageSetup) SetPaperSize(size *PaperSize) { 300 C.gtk_page_setup_set_paper_size(ps.native(), size.native()) 301} 302 303// GetTopMargin() is a wrapper around gtk_page_setup_get_top_margin(). 304func (ps *PageSetup) GetTopMargin(unit Unit) float64 { 305 c := C.gtk_page_setup_get_top_margin(ps.native(), C.GtkUnit(unit)) 306 return float64(c) 307} 308 309// SetTopMargin() is a wrapper around gtk_page_setup_set_top_margin(). 310func (ps *PageSetup) SetTopMargin(margin float64, unit Unit) { 311 C.gtk_page_setup_set_top_margin(ps.native(), C.gdouble(margin), C.GtkUnit(unit)) 312} 313 314// GetBottomMargin() is a wrapper around gtk_page_setup_get_bottom_margin(). 315func (ps *PageSetup) GetBottomMargin(unit Unit) float64 { 316 c := C.gtk_page_setup_get_bottom_margin(ps.native(), C.GtkUnit(unit)) 317 return float64(c) 318} 319 320// SetBottomMargin() is a wrapper around gtk_page_setup_set_bottom_margin(). 321func (ps *PageSetup) SetBottomMargin(margin float64, unit Unit) { 322 C.gtk_page_setup_set_bottom_margin(ps.native(), C.gdouble(margin), C.GtkUnit(unit)) 323} 324 325// GetLeftMargin() is a wrapper around gtk_page_setup_get_left_margin(). 326func (ps *PageSetup) GetLeftMargin(unit Unit) float64 { 327 c := C.gtk_page_setup_get_left_margin(ps.native(), C.GtkUnit(unit)) 328 return float64(c) 329} 330 331// SetLeftMargin() is a wrapper around gtk_page_setup_set_left_margin(). 332func (ps *PageSetup) SetLeftMargin(margin float64, unit Unit) { 333 C.gtk_page_setup_set_left_margin(ps.native(), C.gdouble(margin), C.GtkUnit(unit)) 334} 335 336// GetRightMargin() is a wrapper around gtk_page_setup_get_right_margin(). 337func (ps *PageSetup) GetRightMargin(unit Unit) float64 { 338 c := C.gtk_page_setup_get_right_margin(ps.native(), C.GtkUnit(unit)) 339 return float64(c) 340} 341 342// SetRightMargin() is a wrapper around gtk_page_setup_set_right_margin(). 343func (ps *PageSetup) SetRightMargin(margin float64, unit Unit) { 344 C.gtk_page_setup_set_right_margin(ps.native(), C.gdouble(margin), C.GtkUnit(unit)) 345} 346 347// SetPaperSizeAndDefaultMargins() is a wrapper around gtk_page_setup_set_paper_size_and_default_margins(). 348func (ps *PageSetup) SetPaperSizeAndDefaultMargins(size *PaperSize) { 349 C.gtk_page_setup_set_paper_size_and_default_margins(ps.native(), size.native()) 350} 351 352// GetPaperWidth() is a wrapper around gtk_page_setup_get_paper_width(). 353func (ps *PageSetup) GetPaperWidth(unit Unit) float64 { 354 c := C.gtk_page_setup_get_paper_width(ps.native(), C.GtkUnit(unit)) 355 return float64(c) 356} 357 358// GetPaperHeight() is a wrapper around gtk_page_setup_get_paper_height(). 359func (ps *PageSetup) GetPaperHeight(unit Unit) float64 { 360 c := C.gtk_page_setup_get_paper_height(ps.native(), C.GtkUnit(unit)) 361 return float64(c) 362} 363 364// GetPageWidth() is a wrapper around gtk_page_setup_get_page_width(). 365func (ps *PageSetup) GetPageWidth(unit Unit) float64 { 366 c := C.gtk_page_setup_get_page_width(ps.native(), C.GtkUnit(unit)) 367 return float64(c) 368} 369 370// GetPageHeight() is a wrapper around gtk_page_setup_get_page_height(). 371func (ps *PageSetup) GetPageHeight(unit Unit) float64 { 372 c := C.gtk_page_setup_get_page_height(ps.native(), C.GtkUnit(unit)) 373 return float64(c) 374} 375 376// PageSetupNewFromFile() is a wrapper around gtk_page_setup_new_from_file(). 377func PageSetupNewFromFile(fileName string) (*PageSetup, error) { 378 cstr := C.CString(fileName) 379 defer C.free(unsafe.Pointer(cstr)) 380 var err *C.GError = nil 381 c := C.gtk_page_setup_new_from_file((*C.gchar)(cstr), &err) 382 if c == nil { 383 defer C.g_error_free(err) 384 return nil, errors.New(C.GoString((*C.char)(err.message))) 385 } 386 obj := glib.Take(unsafe.Pointer(c)) 387 return &PageSetup{obj}, nil 388 389} 390 391// PageSetupNewFromKeyFile() is a wrapper around gtk_page_setup_new_from_key_file(). 392 393// PageSetupLoadFile() is a wrapper around gtk_page_setup_load_file(). 394func (ps *PageSetup) PageSetupLoadFile(name string) error { 395 cstr := C.CString(name) 396 defer C.free(unsafe.Pointer(cstr)) 397 var err *C.GError = nil 398 res := C.gtk_page_setup_load_file(ps.native(), cstr, &err) 399 if !gobool(res) { 400 defer C.g_error_free(err) 401 return errors.New(C.GoString((*C.char)(err.message))) 402 } 403 return nil 404} 405 406// PageSetupLoadKeyFile() is a wrapper around gtk_page_setup_load_key_file(). 407 408// PageSetupToFile() is a wrapper around gtk_page_setup_to_file(). 409func (ps *PageSetup) PageSetupToFile(name string) error { 410 cstr := C.CString(name) 411 defer C.free(unsafe.Pointer(cstr)) 412 var err *C.GError = nil 413 res := C.gtk_page_setup_to_file(ps.native(), cstr, &err) 414 if !gobool(res) { 415 defer C.g_error_free(err) 416 return errors.New(C.GoString((*C.char)(err.message))) 417 } 418 return nil 419} 420 421// PageSetupToKeyFile() is a wrapper around gtk_page_setup_to_key_file(). 422 423/* 424 * GtkPaperSize 425 */ 426 427// PaperSize is a representation of GTK's GtkPaperSize 428type PaperSize struct { 429 GtkPaperSize *C.GtkPaperSize 430} 431 432// native returns a pointer to the underlying GtkPaperSize. 433func (ps *PaperSize) native() *C.GtkPaperSize { 434 if ps == nil { 435 return nil 436 } 437 return ps.GtkPaperSize 438} 439 440func marshalPaperSize(p uintptr) (interface{}, error) { 441 c := C.g_value_get_boxed((*C.GValue)(unsafe.Pointer(p))) 442 return &PaperSize{(*C.GtkPaperSize)(unsafe.Pointer(c))}, nil 443} 444 445const ( 446 UNIT_PIXEL int = C.GTK_UNIT_PIXEL 447 PAPER_NAME_A3 string = C.GTK_PAPER_NAME_A3 448 PAPER_NAME_A4 string = C.GTK_PAPER_NAME_A4 449 PAPER_NAME_A5 string = C.GTK_PAPER_NAME_A5 450 PAPER_NAME_B5 string = C.GTK_PAPER_NAME_B5 451 PAPER_NAME_LETTER string = C.GTK_PAPER_NAME_LETTER 452 PAPER_NAME_EXECUTIVE string = C.GTK_PAPER_NAME_EXECUTIVE 453 PAPER_NAME_LEGAL string = C.GTK_PAPER_NAME_LEGAL 454) 455 456// PaperSizeNew() is a wrapper around gtk_paper_size_new(). 457func PaperSizeNew(name string) (*PaperSize, error) { 458 cstr := C.CString(name) 459 defer C.free(unsafe.Pointer(cstr)) 460 var gName *C.gchar 461 462 if name == "" { 463 gName = nil 464 } else { 465 gName = (*C.gchar)(cstr) 466 } 467 468 c := C.gtk_paper_size_new(gName) 469 if c == nil { 470 return nil, nilPtrErr 471 } 472 473 t := &PaperSize{c} 474 runtime.SetFinalizer(t, (*PaperSize).free) 475 return t, nil 476} 477 478// PaperSizeNewFromPPD() is a wrapper around gtk_paper_size_new_from_ppd(). 479func PaperSizeNewFromPPD(name, displayName string, width, height float64) (*PaperSize, error) { 480 cName := C.CString(name) 481 defer C.free(unsafe.Pointer(cName)) 482 cDisplayName := C.CString(displayName) 483 defer C.free(unsafe.Pointer(cDisplayName)) 484 c := C.gtk_paper_size_new_from_ppd((*C.gchar)(cName), (*C.gchar)(cDisplayName), 485 C.gdouble(width), C.gdouble(height)) 486 if c == nil { 487 return nil, nilPtrErr 488 } 489 t := &PaperSize{c} 490 runtime.SetFinalizer(t, (*PaperSize).free) 491 return t, nil 492} 493 494// PaperSizeNewCustom() is a wrapper around gtk_paper_size_new_custom(). 495func PaperSizeNewCustom(name, displayName string, width, height float64, unit Unit) (*PaperSize, error) { 496 cName := C.CString(name) 497 defer C.free(unsafe.Pointer(cName)) 498 cDisplayName := C.CString(displayName) 499 defer C.free(unsafe.Pointer(cDisplayName)) 500 c := C.gtk_paper_size_new_custom((*C.gchar)(cName), (*C.gchar)(cDisplayName), 501 C.gdouble(width), C.gdouble(height), C.GtkUnit(unit)) 502 if c == nil { 503 return nil, nilPtrErr 504 } 505 t := &PaperSize{c} 506 runtime.SetFinalizer(t, (*PaperSize).free) 507 return t, nil 508} 509 510// Copy() is a wrapper around gtk_paper_size_copy(). 511func (ps *PaperSize) Copy() (*PaperSize, error) { 512 c := C.gtk_paper_size_copy(ps.native()) 513 if c == nil { 514 return nil, nilPtrErr 515 } 516 t := &PaperSize{c} 517 runtime.SetFinalizer(t, (*PaperSize).free) 518 return t, nil 519} 520 521// free() is a wrapper around gtk_paper_size_free(). 522func (ps *PaperSize) free() { 523 C.gtk_paper_size_free(ps.native()) 524} 525 526// IsEqual() is a wrapper around gtk_paper_size_is_equal(). 527func (ps *PaperSize) IsEqual(other *PaperSize) bool { 528 c := C.gtk_paper_size_is_equal(ps.native(), other.native()) 529 return gobool(c) 530} 531 532// PaperSizeGetPaperSizes() is a wrapper around gtk_paper_size_get_paper_sizes(). 533func PaperSizeGetPaperSizes(includeCustom bool) *glib.List { 534 clist := C.gtk_paper_size_get_paper_sizes(gbool(includeCustom)) 535 if clist == nil { 536 return nil 537 } 538 539 glist := glib.WrapList(uintptr(unsafe.Pointer(clist))) 540 glist.DataWrapper(func(ptr unsafe.Pointer) interface{} { 541 return &PaperSize{(*C.GtkPaperSize)(ptr)} 542 }) 543 544 runtime.SetFinalizer(glist, func(glist *glib.List) { 545 glist.FreeFull(func(item interface{}) { 546 ps := item.(*PaperSize) 547 C.gtk_paper_size_free(ps.GtkPaperSize) 548 }) 549 }) 550 551 return glist 552} 553 554// GetName() is a wrapper around gtk_paper_size_get_name(). 555func (ps *PaperSize) GetName() string { 556 c := C.gtk_paper_size_get_name(ps.native()) 557 return C.GoString((*C.char)(c)) 558} 559 560// GetDisplayName() is a wrapper around gtk_paper_size_get_display_name(). 561func (ps *PaperSize) GetDisplayName() string { 562 c := C.gtk_paper_size_get_display_name(ps.native()) 563 return C.GoString((*C.char)(c)) 564} 565 566// GetPPDName() is a wrapper around gtk_paper_size_get_ppd_name(). 567func (ps *PaperSize) GetPPDName() (string, error) { 568 c := C.gtk_paper_size_get_ppd_name(ps.native()) 569 if c == nil { 570 return "", nilPtrErr 571 } 572 return C.GoString((*C.char)(c)), nil 573} 574 575// GetWidth() is a wrapper around gtk_paper_size_get_width(). 576func (ps *PaperSize) GetWidth(unit Unit) float64 { 577 c := C.gtk_paper_size_get_width(ps.native(), C.GtkUnit(unit)) 578 return float64(c) 579} 580 581// GetHeight() is a wrapper around gtk_paper_size_get_height(). 582func (ps *PaperSize) GetHeight(unit Unit) float64 { 583 c := C.gtk_paper_size_get_width(ps.native(), C.GtkUnit(unit)) 584 return float64(c) 585} 586 587// IsCustom() is a wrapper around gtk_paper_size_is_custom(). 588func (ps *PaperSize) IsCustom() bool { 589 c := C.gtk_paper_size_is_custom(ps.native()) 590 return gobool(c) 591} 592 593// SetSize() is a wrapper around gtk_paper_size_set_size(). 594func (ps *PaperSize) SetSize(width, height float64, unit Unit) { 595 C.gtk_paper_size_set_size(ps.native(), C.gdouble(width), C.gdouble(height), C.GtkUnit(unit)) 596} 597 598// GetDefaultTopMargin() is a wrapper around gtk_paper_size_get_default_top_margin(). 599func (ps *PaperSize) GetDefaultTopMargin(unit Unit) float64 { 600 c := C.gtk_paper_size_get_default_top_margin(ps.native(), C.GtkUnit(unit)) 601 return float64(c) 602} 603 604// GetDefaultBottomMargin() is a wrapper around gtk_paper_size_get_default_bottom_margin(). 605func (ps *PaperSize) GetDefaultBottomMargin(unit Unit) float64 { 606 c := C.gtk_paper_size_get_default_bottom_margin(ps.native(), C.GtkUnit(unit)) 607 return float64(c) 608} 609 610// GetDefaultLeftMargin() is a wrapper around gtk_paper_size_get_default_left_margin(). 611func (ps *PaperSize) GetDefaultLeftMargin(unit Unit) float64 { 612 c := C.gtk_paper_size_get_default_left_margin(ps.native(), C.GtkUnit(unit)) 613 return float64(c) 614} 615 616// GetDefaultRightMargin() is a wrapper around gtk_paper_size_get_default_right_margin(). 617func (ps *PaperSize) GetDefaultRightMargin(unit Unit) float64 { 618 c := C.gtk_paper_size_get_default_right_margin(ps.native(), C.GtkUnit(unit)) 619 return float64(c) 620} 621 622// PaperSizeGetDefault() is a wrapper around gtk_paper_size_get_default(). 623func PaperSizeGetDefaultRightMargin(unit Unit) string { 624 c := C.gtk_paper_size_get_default() 625 return C.GoString((*C.char)(c)) 626} 627 628// PaperSizeNewFromKeyFile() is a wrapper around gtk_paper_size_new_from_key_file(). 629// PaperSizeToKeyFile() is a wrapper around gtk_paper_size_to_key_file(). 630 631/* 632 * GtkPrintContext 633 */ 634 635// PrintContext is a representation of GTK's GtkPrintContext. 636type PrintContext struct { 637 *glib.Object 638} 639 640// native() returns a pointer to the underlying GtkPrintContext. 641func (pc *PrintContext) native() *C.GtkPrintContext { 642 if pc == nil || pc.GObject == nil { 643 return nil 644 } 645 p := unsafe.Pointer(pc.GObject) 646 return C.toGtkPrintContext(p) 647} 648 649func marshalPrintContext(p uintptr) (interface{}, error) { 650 c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p))) 651 obj := glib.Take(unsafe.Pointer(c)) 652 return wrapPrintContext(obj), nil 653} 654 655func wrapPrintContext(obj *glib.Object) *PrintContext { 656 if obj == nil { 657 return nil 658 } 659 660 return &PrintContext{obj} 661} 662 663// GetCairoContext() is a wrapper around gtk_print_context_get_cairo_context(). 664func (pc *PrintContext) GetCairoContext() *cairo.Context { 665 c := C.gtk_print_context_get_cairo_context(pc.native()) 666 return cairo.WrapContext(uintptr(unsafe.Pointer(c))) 667} 668 669// SetCairoContext() is a wrapper around gtk_print_context_set_cairo_context(). 670func (pc *PrintContext) SetCairoContext(cr *cairo.Context, dpiX, dpiY float64) { 671 C.gtk_print_context_set_cairo_context(pc.native(), 672 (*C.cairo_t)(unsafe.Pointer(cr.Native())), 673 C.double(dpiX), C.double(dpiY)) 674} 675 676// GetPageSetup() is a wrapper around gtk_print_context_get_page_setup(). 677func (pc *PrintContext) GetPageSetup() *PageSetup { 678 c := C.gtk_print_context_get_page_setup(pc.native()) 679 obj := glib.Take(unsafe.Pointer(c)) 680 return wrapPageSetup(obj) 681} 682 683// GetWidth() is a wrapper around gtk_print_context_get_width(). 684func (pc *PrintContext) GetWidth() float64 { 685 c := C.gtk_print_context_get_width(pc.native()) 686 return float64(c) 687} 688 689// GetHeight() is a wrapper around gtk_print_context_get_height(). 690func (pc *PrintContext) GetHeight() float64 { 691 c := C.gtk_print_context_get_height(pc.native()) 692 return float64(c) 693} 694 695// GetDpiX() is a wrapper around gtk_print_context_get_dpi_x(). 696func (pc *PrintContext) GetDpiX() float64 { 697 c := C.gtk_print_context_get_dpi_x(pc.native()) 698 return float64(c) 699} 700 701// GetDpiY() is a wrapper around gtk_print_context_get_dpi_y(). 702func (pc *PrintContext) GetDpiY() float64 { 703 c := C.gtk_print_context_get_dpi_y(pc.native()) 704 return float64(c) 705} 706 707// GetPangoFontMap() is a wrapper around gtk_print_context_get_pango_fontmap(). 708func (pc *PrintContext) GetPangoFontMap() *pango.FontMap { 709 c := C.gtk_print_context_get_pango_fontmap(pc.native()) 710 return pango.WrapFontMap(uintptr(unsafe.Pointer(c))) 711} 712 713// CreatePangoContext() is a wrapper around gtk_print_context_create_pango_context(). 714func (pc *PrintContext) CreatePangoContext() *pango.Context { 715 c := C.gtk_print_context_create_pango_context(pc.native()) 716 return pango.WrapContext(uintptr(unsafe.Pointer(c))) 717} 718 719// CreatePangoLayout() is a wrapper around gtk_print_context_create_pango_layout(). 720func (pc *PrintContext) CreatePangoLayout() *pango.Layout { 721 c := C.gtk_print_context_create_pango_layout(pc.native()) 722 return pango.WrapLayout(uintptr(unsafe.Pointer(c))) 723} 724 725// GetHardMargins() is a wrapper around gtk_print_context_get_hard_margins(). 726func (pc *PrintContext) GetHardMargins() (float64, float64, float64, float64, error) { 727 var top, bottom, left, right C.gdouble 728 c := C.gtk_print_context_get_hard_margins(pc.native(), &top, &bottom, &left, &right) 729 if gobool(c) == false { 730 return 0.0, 0.0, 0.0, 0.0, errors.New("unable to retrieve hard margins") 731 } 732 return float64(top), float64(bottom), float64(left), float64(right), nil 733} 734 735/* 736 * GtkPrintOperation 737 */ 738type PrintOperation struct { 739 *glib.Object 740 741 // Interfaces 742 PrintOperationPreview 743} 744 745func (po *PrintOperation) native() *C.GtkPrintOperation { 746 if po == nil || po.GObject == nil { 747 return nil 748 } 749 p := unsafe.Pointer(po.GObject) 750 return C.toGtkPrintOperation(p) 751} 752 753func (v *PrintOperation) toPrintOperationPreview() *C.GtkPrintOperationPreview { 754 if v == nil { 755 return nil 756 } 757 return C.toGtkPrintOperationPreview(unsafe.Pointer(v.GObject)) 758} 759 760func marshalPrintOperation(p uintptr) (interface{}, error) { 761 c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p))) 762 obj := glib.Take(unsafe.Pointer(c)) 763 return wrapPrintOperation(obj), nil 764} 765 766func wrapPrintOperation(obj *glib.Object) *PrintOperation { 767 if obj == nil { 768 return nil 769 } 770 771 pop := wrapPrintOperationPreview(obj) 772 return &PrintOperation{obj, *pop} 773} 774 775// PrintOperationNew() is a wrapper around gtk_print_operation_new(). 776func PrintOperationNew() (*PrintOperation, error) { 777 c := C.gtk_print_operation_new() 778 if c == nil { 779 return nil, nilPtrErr 780 } 781 obj := glib.Take(unsafe.Pointer(c)) 782 return wrapPrintOperation(obj), nil 783} 784 785// SetAllowAsync() is a wrapper around gtk_print_operation_set_allow_async(). 786func (po *PrintOperation) PrintOperationSetAllowAsync(allowSync bool) { 787 C.gtk_print_operation_set_allow_async(po.native(), gbool(allowSync)) 788} 789 790// GetError() is a wrapper around gtk_print_operation_get_error(). 791func (po *PrintOperation) PrintOperationGetError() error { 792 var err *C.GError = nil 793 C.gtk_print_operation_get_error(po.native(), &err) 794 defer C.g_error_free(err) 795 return errors.New(C.GoString((*C.char)(err.message))) 796} 797 798// SetDefaultPageSetup() is a wrapper around gtk_print_operation_set_default_page_setup(). 799func (po *PrintOperation) SetDefaultPageSetup(ps *PageSetup) { 800 C.gtk_print_operation_set_default_page_setup(po.native(), ps.native()) 801} 802 803// GetDefaultPageSetup() is a wrapper around gtk_print_operation_get_default_page_setup(). 804func (po *PrintOperation) GetDefaultPageSetup() (*PageSetup, error) { 805 c := C.gtk_print_operation_get_default_page_setup(po.native()) 806 if c == nil { 807 return nil, nilPtrErr 808 } 809 obj := glib.Take(unsafe.Pointer(c)) 810 return wrapPageSetup(obj), nil 811} 812 813// SetPrintSettings() is a wrapper around gtk_print_operation_set_print_settings(). 814func (po *PrintOperation) SetPrintSettings(ps *PrintSettings) { 815 C.gtk_print_operation_set_print_settings(po.native(), ps.native()) 816} 817 818// GetPrintSettings() is a wrapper around gtk_print_operation_get_print_settings(). 819func (po *PrintOperation) GetPrintSettings(ps *PageSetup) (*PrintSettings, error) { 820 c := C.gtk_print_operation_get_print_settings(po.native()) 821 if c == nil { 822 return nil, nilPtrErr 823 } 824 obj := glib.Take(unsafe.Pointer(c)) 825 return wrapPrintSettings(obj), nil 826} 827 828// SetJobName() is a wrapper around gtk_print_operation_set_job_name(). 829func (po *PrintOperation) SetJobName(name string) { 830 cstr := C.CString(name) 831 defer C.free(unsafe.Pointer(cstr)) 832 C.gtk_print_operation_set_job_name(po.native(), (*C.gchar)(cstr)) 833} 834 835// SetNPages() is a wrapper around gtk_print_operation_set_n_pages(). 836func (po *PrintOperation) SetNPages(pages int) { 837 C.gtk_print_operation_set_n_pages(po.native(), C.gint(pages)) 838} 839 840// GetNPagesToPrint() is a wrapper around gtk_print_operation_get_n_pages_to_print(). 841func (po *PrintOperation) GetNPagesToPrint() int { 842 c := C.gtk_print_operation_get_n_pages_to_print(po.native()) 843 return int(c) 844} 845 846// SetCurrentPage() is a wrapper around gtk_print_operation_set_current_page(). 847func (po *PrintOperation) SetCurrentPage(page int) { 848 C.gtk_print_operation_set_current_page(po.native(), C.gint(page)) 849} 850 851// SetUseFullPage() is a wrapper around gtk_print_operation_set_use_full_page(). 852func (po *PrintOperation) SetUseFullPage(full bool) { 853 C.gtk_print_operation_set_use_full_page(po.native(), gbool(full)) 854} 855 856// SetUnit() is a wrapper around gtk_print_operation_set_unit(). 857func (po *PrintOperation) SetUnit(unit Unit) { 858 C.gtk_print_operation_set_unit(po.native(), C.GtkUnit(unit)) 859} 860 861// SetExportFilename() is a wrapper around gtk_print_operation_set_export_filename(). 862func (po *PrintOperation) SetExportFilename(name string) { 863 cstr := C.CString(name) 864 defer C.free(unsafe.Pointer(cstr)) 865 C.gtk_print_operation_set_export_filename(po.native(), (*C.gchar)(cstr)) 866} 867 868// SetShowProgress() is a wrapper around gtk_print_operation_set_show_progress(). 869func (po *PrintOperation) SetShowProgress(show bool) { 870 C.gtk_print_operation_set_show_progress(po.native(), gbool(show)) 871} 872 873// SetTrackPrintStatus() is a wrapper around gtk_print_operation_set_track_print_status(). 874func (po *PrintOperation) SetTrackPrintStatus(progress bool) { 875 C.gtk_print_operation_set_track_print_status(po.native(), gbool(progress)) 876} 877 878// SetCustomTabLabel() is a wrapper around gtk_print_operation_set_custom_tab_label(). 879func (po *PrintOperation) SetCustomTabLabel(label string) { 880 cstr := C.CString(label) 881 defer C.free(unsafe.Pointer(cstr)) 882 C.gtk_print_operation_set_custom_tab_label(po.native(), (*C.gchar)(cstr)) 883} 884 885// Run() is a wrapper around gtk_print_operation_run(). 886func (po *PrintOperation) Run(action PrintOperationAction, parent IWindow) (PrintOperationResult, error) { 887 var err *C.GError = nil 888 889 var w *C.GtkWindow = nil 890 if parent != nil { 891 w = parent.toWindow() 892 } 893 894 c := C.gtk_print_operation_run(po.native(), C.GtkPrintOperationAction(action), w, &err) 895 res := PrintOperationResult(c) 896 if res == PRINT_OPERATION_RESULT_ERROR { 897 defer C.g_error_free(err) 898 return res, errors.New(C.GoString((*C.char)(err.message))) 899 } 900 return res, nil 901} 902 903// Cancel() is a wrapper around gtk_print_operation_cancel(). 904func (po *PrintOperation) Cancel() { 905 C.gtk_print_operation_cancel(po.native()) 906} 907 908// DrawPageFinish() is a wrapper around gtk_print_operation_draw_page_finish(). 909func (po *PrintOperation) DrawPageFinish() { 910 C.gtk_print_operation_draw_page_finish(po.native()) 911} 912 913// SetDeferDrawing() is a wrapper around gtk_print_operation_set_defer_drawing(). 914func (po *PrintOperation) SetDeferDrawing() { 915 C.gtk_print_operation_set_defer_drawing(po.native()) 916} 917 918// GetStatus() is a wrapper around gtk_print_operation_get_status(). 919func (po *PrintOperation) GetStatus() PrintStatus { 920 c := C.gtk_print_operation_get_status(po.native()) 921 return PrintStatus(c) 922} 923 924// GetStatusString() is a wrapper around gtk_print_operation_get_status_string(). 925func (po *PrintOperation) GetStatusString() string { 926 c := C.gtk_print_operation_get_status_string(po.native()) 927 return C.GoString((*C.char)(c)) 928} 929 930// IsFinished() is a wrapper around gtk_print_operation_is_finished(). 931func (po *PrintOperation) IsFinished() bool { 932 c := C.gtk_print_operation_is_finished(po.native()) 933 return gobool(c) 934} 935 936// SetSupportSelection() is a wrapper around gtk_print_operation_set_support_selection(). 937func (po *PrintOperation) SetSupportSelection(selection bool) { 938 C.gtk_print_operation_set_support_selection(po.native(), gbool(selection)) 939} 940 941// GetSupportSelection() is a wrapper around gtk_print_operation_get_support_selection(). 942func (po *PrintOperation) GetSupportSelection() bool { 943 c := C.gtk_print_operation_get_support_selection(po.native()) 944 return gobool(c) 945} 946 947// SetHasSelection() is a wrapper around gtk_print_operation_set_has_selection(). 948func (po *PrintOperation) SetHasSelection(selection bool) { 949 C.gtk_print_operation_set_has_selection(po.native(), gbool(selection)) 950} 951 952// GetHasSelection() is a wrapper around gtk_print_operation_get_has_selection(). 953func (po *PrintOperation) GetHasSelection() bool { 954 c := C.gtk_print_operation_get_has_selection(po.native()) 955 return gobool(c) 956} 957 958// SetEmbedPageSetup() is a wrapper around gtk_print_operation_set_embed_page_setup(). 959func (po *PrintOperation) SetEmbedPageSetup(embed bool) { 960 C.gtk_print_operation_set_embed_page_setup(po.native(), gbool(embed)) 961} 962 963// GetEmbedPageSetup() is a wrapper around gtk_print_operation_get_embed_page_setup(). 964func (po *PrintOperation) GetEmbedPageSetup() bool { 965 c := C.gtk_print_operation_get_embed_page_setup(po.native()) 966 return gobool(c) 967} 968 969// PrintRunPageSetupDialog() is a wrapper around gtk_print_run_page_setup_dialog(). 970func PrintRunPageSetupDialog(parent IWindow, pageSetup *PageSetup, settings *PrintSettings) *PageSetup { 971 972 var w *C.GtkWindow = nil 973 if parent != nil { 974 w = parent.toWindow() 975 } 976 977 c := C.gtk_print_run_page_setup_dialog(w, pageSetup.native(), settings.native()) 978 obj := glib.Take(unsafe.Pointer(c)) 979 return wrapPageSetup(obj) 980} 981 982type PageSetupDoneCallback func(setup *PageSetup) 983 984// PrintRunPageSetupDialogAsync() is a wrapper around gtk_print_run_page_setup_dialog_async(). 985func PrintRunPageSetupDialogAsync(parent IWindow, setup *PageSetup, 986 settings *PrintSettings, cb PageSetupDoneCallback) { 987 988 var w *C.GtkWindow = nil 989 if parent != nil { 990 w = parent.toWindow() 991 } 992 993 C._gtk_print_run_page_setup_dialog_async(w, setup.native(), 994 settings.native(), C.gpointer(callback.Assign(cb))) 995} 996 997/* 998 * GtkPrintOperationPreview 999 */ 1000 1001// PrintOperationPreview is a representation of GTK's GtkPrintOperationPreview GInterface. 1002type PrintOperationPreview struct { 1003 *glib.Object 1004} 1005 1006// IPrintOperationPreview is an interface type implemented by all structs 1007// embedding a PrintOperationPreview. It is meant to be used as an argument type 1008// for wrapper functions that wrap around a C GTK function taking a 1009// GtkPrintOperationPreview. 1010type IPrintOperationPreview interface { 1011 toPrintOperationPreview() *C.GtkPrintOperationPreview 1012} 1013 1014// native() returns a pointer to the underlying GObject as a GtkPrintOperationPreview. 1015func (v *PrintOperationPreview) native() *C.GtkPrintOperationPreview { 1016 if v == nil || v.GObject == nil { 1017 return nil 1018 } 1019 p := unsafe.Pointer(v.GObject) 1020 return C.toGtkPrintOperationPreview(p) 1021} 1022 1023func marshalPrintOperationPreview(p uintptr) (interface{}, error) { 1024 c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p))) 1025 obj := glib.Take(unsafe.Pointer(c)) 1026 return wrapPrintOperationPreview(obj), nil 1027} 1028 1029func wrapPrintOperationPreview(obj *glib.Object) *PrintOperationPreview { 1030 if obj == nil { 1031 return nil 1032 } 1033 1034 return &PrintOperationPreview{obj} 1035} 1036 1037func (v *PrintOperationPreview) toPrintOperationPreview() *C.GtkPrintOperationPreview { 1038 if v == nil { 1039 return nil 1040 } 1041 return v.native() 1042} 1043 1044// RenderPage()() is a wrapper around gtk_print_operation_preview_render_page(). 1045func (pop *PrintOperationPreview) RenderPage(page int) { 1046 C.gtk_print_operation_preview_render_page(pop.native(), C.gint(page)) 1047} 1048 1049// EndPreview()() is a wrapper around gtk_print_operation_preview_end_preview(). 1050func (pop *PrintOperationPreview) EndPreview() { 1051 C.gtk_print_operation_preview_end_preview(pop.native()) 1052} 1053 1054// IsSelected()() is a wrapper around gtk_print_operation_preview_is_selected(). 1055func (pop *PrintOperationPreview) IsSelected(page int) bool { 1056 c := C.gtk_print_operation_preview_is_selected(pop.native(), C.gint(page)) 1057 return gobool(c) 1058} 1059 1060/* 1061 * GtkPrintSettings 1062 */ 1063 1064type PrintSettings struct { 1065 *glib.Object 1066} 1067 1068func (ps *PrintSettings) native() *C.GtkPrintSettings { 1069 if ps == nil || ps.GObject == nil { 1070 return nil 1071 } 1072 1073 p := unsafe.Pointer(ps.GObject) 1074 return C.toGtkPrintSettings(p) 1075} 1076 1077func marshalPrintSettings(p uintptr) (interface{}, error) { 1078 c := C.g_value_get_object((*C.GValue)(unsafe.Pointer(p))) 1079 return wrapPrintSettings(glib.Take(unsafe.Pointer(c))), nil 1080} 1081 1082func wrapPrintSettings(obj *glib.Object) *PrintSettings { 1083 if obj == nil { 1084 return nil 1085 } 1086 1087 return &PrintSettings{obj} 1088} 1089 1090const ( 1091 PRINT_SETTINGS_PRINTER string = C.GTK_PRINT_SETTINGS_PRINTER 1092 PRINT_SETTINGS_ORIENTATION string = C.GTK_PRINT_SETTINGS_ORIENTATION 1093 PRINT_SETTINGS_PAPER_FORMAT string = C.GTK_PRINT_SETTINGS_PAPER_FORMAT 1094 PRINT_SETTINGS_PAPER_WIDTH string = C.GTK_PRINT_SETTINGS_PAPER_WIDTH 1095 PRINT_SETTINGS_PAPER_HEIGHT string = C.GTK_PRINT_SETTINGS_PAPER_HEIGHT 1096 PRINT_SETTINGS_USE_COLOR string = C.GTK_PRINT_SETTINGS_USE_COLOR 1097 PRINT_SETTINGS_COLLATE string = C.GTK_PRINT_SETTINGS_COLLATE 1098 PRINT_SETTINGS_REVERSE string = C.GTK_PRINT_SETTINGS_REVERSE 1099 PRINT_SETTINGS_DUPLEX string = C.GTK_PRINT_SETTINGS_DUPLEX 1100 PRINT_SETTINGS_QUALITY string = C.GTK_PRINT_SETTINGS_QUALITY 1101 PRINT_SETTINGS_N_COPIES string = C.GTK_PRINT_SETTINGS_N_COPIES 1102 PRINT_SETTINGS_NUMBER_UP string = C.GTK_PRINT_SETTINGS_NUMBER_UP 1103 PRINT_SETTINGS_NUMBER_UP_LAYOUT string = C.GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT 1104 PRINT_SETTINGS_RESOLUTION string = C.GTK_PRINT_SETTINGS_RESOLUTION 1105 PRINT_SETTINGS_RESOLUTION_X string = C.GTK_PRINT_SETTINGS_RESOLUTION_X 1106 PRINT_SETTINGS_RESOLUTION_Y string = C.GTK_PRINT_SETTINGS_RESOLUTION_Y 1107 PRINT_SETTINGS_PRINTER_LPI string = C.GTK_PRINT_SETTINGS_PRINTER_LPI 1108 PRINT_SETTINGS_SCALE string = C.GTK_PRINT_SETTINGS_SCALE 1109 PRINT_SETTINGS_PRINT_PAGES string = C.GTK_PRINT_SETTINGS_PRINT_PAGES 1110 PRINT_SETTINGS_PAGE_RANGES string = C.GTK_PRINT_SETTINGS_PAGE_RANGES 1111 PRINT_SETTINGS_PAGE_SET string = C.GTK_PRINT_SETTINGS_PAGE_SET 1112 PRINT_SETTINGS_DEFAULT_SOURCE string = C.GTK_PRINT_SETTINGS_DEFAULT_SOURCE 1113 PRINT_SETTINGS_MEDIA_TYPE string = C.GTK_PRINT_SETTINGS_MEDIA_TYPE 1114 PRINT_SETTINGS_DITHER string = C.GTK_PRINT_SETTINGS_DITHER 1115 PRINT_SETTINGS_FINISHINGS string = C.GTK_PRINT_SETTINGS_FINISHINGS 1116 PRINT_SETTINGS_OUTPUT_BIN string = C.GTK_PRINT_SETTINGS_OUTPUT_BIN 1117 PRINT_SETTINGS_OUTPUT_DIR string = C.GTK_PRINT_SETTINGS_OUTPUT_DIR 1118 PRINT_SETTINGS_OUTPUT_BASENAME string = C.GTK_PRINT_SETTINGS_OUTPUT_BASENAME 1119 PRINT_SETTINGS_OUTPUT_FILE_FORMAT string = C.GTK_PRINT_SETTINGS_OUTPUT_FILE_FORMAT 1120 PRINT_SETTINGS_OUTPUT_URI string = C.GTK_PRINT_SETTINGS_OUTPUT_URI 1121 PRINT_SETTINGS_WIN32_DRIVER_EXTRA string = C.GTK_PRINT_SETTINGS_WIN32_DRIVER_EXTRA 1122 PRINT_SETTINGS_WIN32_DRIVER_VERSION string = C.GTK_PRINT_SETTINGS_WIN32_DRIVER_VERSION 1123) 1124 1125// PrintSettingsNew() is a wrapper around gtk_print_settings_new(). 1126func PrintSettingsNew() (*PrintSettings, error) { 1127 c := C.gtk_print_settings_new() 1128 if c == nil { 1129 return nil, nilPtrErr 1130 } 1131 obj := glib.Take(unsafe.Pointer(c)) 1132 return wrapPrintSettings(obj), nil 1133} 1134 1135// Copy() is a wrapper around gtk_print_settings_copy(). 1136func (ps *PrintSettings) Copy() (*PrintSettings, error) { 1137 c := C.gtk_print_settings_copy(ps.native()) 1138 if c == nil { 1139 return nil, nilPtrErr 1140 } 1141 obj := glib.Take(unsafe.Pointer(c)) 1142 return wrapPrintSettings(obj), nil 1143} 1144 1145// HasKey() is a wrapper around gtk_print_settings_has_key(). 1146func (ps *PrintSettings) HasKey(key string) bool { 1147 cstr := C.CString(key) 1148 defer C.free(unsafe.Pointer(cstr)) 1149 c := C.gtk_print_settings_has_key(ps.native(), (*C.gchar)(cstr)) 1150 return gobool(c) 1151} 1152 1153// Get() is a wrapper around gtk_print_settings_get(). 1154func (ps *PrintSettings) Get(key string) string { 1155 cstr := C.CString(key) 1156 defer C.free(unsafe.Pointer(cstr)) 1157 c := C.gtk_print_settings_get(ps.native(), (*C.gchar)(cstr)) 1158 return C.GoString((*C.char)(c)) 1159} 1160 1161// Set() is a wrapper around gtk_print_settings_set(). 1162// TODO: Since value can't be nil, we can't unset values here. 1163func (ps *PrintSettings) Set(key, value string) { 1164 cKey := C.CString(key) 1165 defer C.free(unsafe.Pointer(cKey)) 1166 cValue := C.CString(value) 1167 defer C.free(unsafe.Pointer(cValue)) 1168 C.gtk_print_settings_set(ps.native(), (*C.gchar)(cKey), (*C.gchar)(cValue)) 1169} 1170 1171// Unset() is a wrapper around gtk_print_settings_unset(). 1172func (ps *PrintSettings) Unset(key string) { 1173 cstr := C.CString(key) 1174 defer C.free(unsafe.Pointer(cstr)) 1175 C.gtk_print_settings_unset(ps.native(), (*C.gchar)(cstr)) 1176} 1177 1178type PrintSettingsCallback func(key, value string) 1179 1180// Foreach() is a wrapper around gtk_print_settings_foreach(). 1181func (ps *PrintSettings) ForEach(cb PrintSettingsCallback) { 1182 // Clean up callback immediately as we only need it for the duration of this Foreach call 1183 id := callback.Assign(cb) 1184 defer callback.Delete(id) 1185 1186 C._gtk_print_settings_foreach(ps.native(), C.gpointer(id)) 1187} 1188 1189// GetBool() is a wrapper around gtk_print_settings_get_bool(). 1190func (ps *PrintSettings) GetBool(key string) bool { 1191 cstr := C.CString(key) 1192 defer C.free(unsafe.Pointer(cstr)) 1193 c := C.gtk_print_settings_get_bool(ps.native(), (*C.gchar)(cstr)) 1194 return gobool(c) 1195} 1196 1197// SetBool() is a wrapper around gtk_print_settings_set_bool(). 1198func (ps *PrintSettings) SetBool(key string, value bool) { 1199 cstr := C.CString(key) 1200 defer C.free(unsafe.Pointer(cstr)) 1201 C.gtk_print_settings_set_bool(ps.native(), (*C.gchar)(cstr), gbool(value)) 1202} 1203 1204// GetDouble() is a wrapper around gtk_print_settings_get_double(). 1205func (ps *PrintSettings) GetDouble(key string) float64 { 1206 cstr := C.CString(key) 1207 defer C.free(unsafe.Pointer(cstr)) 1208 c := C.gtk_print_settings_get_double(ps.native(), (*C.gchar)(cstr)) 1209 return float64(c) 1210} 1211 1212// GetDoubleWithDefault() is a wrapper around gtk_print_settings_get_double_with_default(). 1213func (ps *PrintSettings) GetDoubleWithDefault(key string, def float64) float64 { 1214 cstr := C.CString(key) 1215 defer C.free(unsafe.Pointer(cstr)) 1216 c := C.gtk_print_settings_get_double_with_default(ps.native(), 1217 (*C.gchar)(cstr), C.gdouble(def)) 1218 return float64(c) 1219} 1220 1221// SetDouble() is a wrapper around gtk_print_settings_set_double(). 1222func (ps *PrintSettings) SetDouble(key string, value float64) { 1223 cstr := C.CString(key) 1224 defer C.free(unsafe.Pointer(cstr)) 1225 C.gtk_print_settings_set_double(ps.native(), (*C.gchar)(cstr), C.gdouble(value)) 1226} 1227 1228// GetLength() is a wrapper around gtk_print_settings_get_length(). 1229func (ps *PrintSettings) GetLength(key string, unit Unit) float64 { 1230 cstr := C.CString(key) 1231 defer C.free(unsafe.Pointer(cstr)) 1232 c := C.gtk_print_settings_get_length(ps.native(), (*C.gchar)(cstr), C.GtkUnit(unit)) 1233 return float64(c) 1234} 1235 1236// SetLength() is a wrapper around gtk_print_settings_set_length(). 1237func (ps *PrintSettings) SetLength(key string, value float64, unit Unit) { 1238 cstr := C.CString(key) 1239 defer C.free(unsafe.Pointer(cstr)) 1240 C.gtk_print_settings_set_length(ps.native(), (*C.gchar)(cstr), C.gdouble(value), C.GtkUnit(unit)) 1241} 1242 1243// GetInt() is a wrapper around gtk_print_settings_get_int(). 1244func (ps *PrintSettings) GetInt(key string) int { 1245 cstr := C.CString(key) 1246 defer C.free(unsafe.Pointer(cstr)) 1247 c := C.gtk_print_settings_get_int(ps.native(), (*C.gchar)(cstr)) 1248 return int(c) 1249} 1250 1251// GetIntWithDefault() is a wrapper around gtk_print_settings_get_int_with_default(). 1252func (ps *PrintSettings) GetIntWithDefault(key string, def int) int { 1253 cstr := C.CString(key) 1254 defer C.free(unsafe.Pointer(cstr)) 1255 c := C.gtk_print_settings_get_int_with_default(ps.native(), (*C.gchar)(cstr), C.gint(def)) 1256 return int(c) 1257} 1258 1259// SetInt() is a wrapper around gtk_print_settings_set_int(). 1260func (ps *PrintSettings) SetInt(key string, value int) { 1261 cstr := C.CString(key) 1262 defer C.free(unsafe.Pointer(cstr)) 1263 C.gtk_print_settings_set_int(ps.native(), (*C.gchar)(cstr), C.gint(value)) 1264} 1265 1266// GetPrinter() is a wrapper around gtk_print_settings_get_printer(). 1267func (ps *PrintSettings) GetPrinter() string { 1268 c := C.gtk_print_settings_get_printer(ps.native()) 1269 return C.GoString((*C.char)(c)) 1270} 1271 1272// SetPrinter() is a wrapper around gtk_print_settings_set_printer(). 1273func (ps *PrintSettings) SetPrinter(printer string) { 1274 cstr := C.CString(printer) 1275 defer C.free(unsafe.Pointer(cstr)) 1276 C.gtk_print_settings_set_printer(ps.native(), (*C.gchar)(cstr)) 1277} 1278 1279// GetOrientation() is a wrapper around gtk_print_settings_get_orientation(). 1280func (ps *PrintSettings) GetOrientation() PageOrientation { 1281 c := C.gtk_print_settings_get_orientation(ps.native()) 1282 return PageOrientation(c) 1283} 1284 1285// SetOrientation() is a wrapper around gtk_print_settings_set_orientation(). 1286func (ps *PrintSettings) SetOrientation(orientation PageOrientation) { 1287 C.gtk_print_settings_set_orientation(ps.native(), C.GtkPageOrientation(orientation)) 1288} 1289 1290// GetPaperSize() is a wrapper around gtk_print_settings_get_paper_size(). 1291func (ps *PrintSettings) GetPaperSize() (*PaperSize, error) { 1292 c := C.gtk_print_settings_get_paper_size(ps.native()) 1293 if c == nil { 1294 return nil, nilPtrErr 1295 } 1296 p := &PaperSize{c} 1297 runtime.SetFinalizer(p, (*PaperSize).free) 1298 return p, nil 1299} 1300 1301// SetPaperSize() is a wrapper around gtk_print_settings_set_paper_size(). 1302func (ps *PrintSettings) SetPaperSize(size *PaperSize) { 1303 C.gtk_print_settings_set_paper_size(ps.native(), size.native()) 1304} 1305 1306// GetPaperWidth() is a wrapper around gtk_print_settings_get_paper_width(). 1307func (ps *PrintSettings) GetPaperWidth(unit Unit) float64 { 1308 c := C.gtk_print_settings_get_paper_width(ps.native(), C.GtkUnit(unit)) 1309 return float64(c) 1310} 1311 1312// SetPaperWidth() is a wrapper around gtk_print_settings_set_paper_width(). 1313func (ps *PrintSettings) SetPaperWidth(width float64, unit Unit) { 1314 C.gtk_print_settings_set_paper_width(ps.native(), C.gdouble(width), C.GtkUnit(unit)) 1315} 1316 1317// GetPaperHeight() is a wrapper around gtk_print_settings_get_paper_height(). 1318func (ps *PrintSettings) GetPaperHeight(unit Unit) float64 { 1319 c := C.gtk_print_settings_get_paper_height(ps.native(), C.GtkUnit(unit)) 1320 return float64(c) 1321} 1322 1323// SetPaperHeight() is a wrapper around gtk_print_settings_set_paper_height(). 1324func (ps *PrintSettings) SetPaperHeight(width float64, unit Unit) { 1325 C.gtk_print_settings_set_paper_height(ps.native(), C.gdouble(width), C.GtkUnit(unit)) 1326} 1327 1328// GetUseColor() is a wrapper around gtk_print_settings_get_use_color(). 1329func (ps *PrintSettings) GetUseColor() bool { 1330 c := C.gtk_print_settings_get_use_color(ps.native()) 1331 return gobool(c) 1332} 1333 1334// SetUseColor() is a wrapper around gtk_print_settings_set_use_color(). 1335func (ps *PrintSettings) SetUseColor(color bool) { 1336 C.gtk_print_settings_set_use_color(ps.native(), gbool(color)) 1337} 1338 1339// GetCollate() is a wrapper around gtk_print_settings_get_collate(). 1340func (ps *PrintSettings) GetCollate() bool { 1341 c := C.gtk_print_settings_get_collate(ps.native()) 1342 return gobool(c) 1343} 1344 1345// SetCollate() is a wrapper around gtk_print_settings_set_collate(). 1346func (ps *PrintSettings) SetCollate(collate bool) { 1347 C.gtk_print_settings_set_collate(ps.native(), gbool(collate)) 1348} 1349 1350// GetReverse() is a wrapper around gtk_print_settings_get_reverse(). 1351func (ps *PrintSettings) GetReverse() bool { 1352 c := C.gtk_print_settings_get_reverse(ps.native()) 1353 return gobool(c) 1354} 1355 1356// SetReverse() is a wrapper around gtk_print_settings_set_reverse(). 1357func (ps *PrintSettings) SetReverse(reverse bool) { 1358 C.gtk_print_settings_set_reverse(ps.native(), gbool(reverse)) 1359} 1360 1361// GetDuplex() is a wrapper around gtk_print_settings_get_duplex(). 1362func (ps *PrintSettings) GetDuplex() PrintDuplex { 1363 c := C.gtk_print_settings_get_duplex(ps.native()) 1364 return PrintDuplex(c) 1365} 1366 1367// SetDuplex() is a wrapper around gtk_print_settings_set_duplex(). 1368func (ps *PrintSettings) SetDuplex(duplex PrintDuplex) { 1369 C.gtk_print_settings_set_duplex(ps.native(), C.GtkPrintDuplex(duplex)) 1370} 1371 1372// GetQuality() is a wrapper around gtk_print_settings_get_quality(). 1373func (ps *PrintSettings) GetQuality() PrintQuality { 1374 c := C.gtk_print_settings_get_quality(ps.native()) 1375 return PrintQuality(c) 1376} 1377 1378// SetQuality() is a wrapper around gtk_print_settings_set_quality(). 1379func (ps *PrintSettings) SetQuality(quality PrintQuality) { 1380 C.gtk_print_settings_set_quality(ps.native(), C.GtkPrintQuality(quality)) 1381} 1382 1383// GetNCopies() is a wrapper around gtk_print_settings_get_n_copies(). 1384func (ps *PrintSettings) GetNCopies() int { 1385 c := C.gtk_print_settings_get_n_copies(ps.native()) 1386 return int(c) 1387} 1388 1389// SetNCopies() is a wrapper around gtk_print_settings_set_n_copies(). 1390func (ps *PrintSettings) SetNCopies(copies int) { 1391 C.gtk_print_settings_set_n_copies(ps.native(), C.gint(copies)) 1392} 1393 1394// GetNmberUp() is a wrapper around gtk_print_settings_get_number_up(). 1395func (ps *PrintSettings) GetNmberUp() int { 1396 c := C.gtk_print_settings_get_number_up(ps.native()) 1397 return int(c) 1398} 1399 1400// SetNumberUp() is a wrapper around gtk_print_settings_set_number_up(). 1401func (ps *PrintSettings) SetNumberUp(numberUp int) { 1402 C.gtk_print_settings_set_number_up(ps.native(), C.gint(numberUp)) 1403} 1404 1405// GetNumberUpLayout() is a wrapper around gtk_print_settings_get_number_up_layout(). 1406func (ps *PrintSettings) GetNumberUpLayout() NumberUpLayout { 1407 c := C.gtk_print_settings_get_number_up_layout(ps.native()) 1408 return NumberUpLayout(c) 1409} 1410 1411// SetNumberUpLayout() is a wrapper around gtk_print_settings_set_number_up_layout(). 1412func (ps *PrintSettings) SetNumberUpLayout(numberUpLayout NumberUpLayout) { 1413 C.gtk_print_settings_set_number_up_layout(ps.native(), C.GtkNumberUpLayout(numberUpLayout)) 1414} 1415 1416// GetResolution() is a wrapper around gtk_print_settings_get_resolution(). 1417func (ps *PrintSettings) GetResolution() int { 1418 c := C.gtk_print_settings_get_resolution(ps.native()) 1419 return int(c) 1420} 1421 1422// SetResolution() is a wrapper around gtk_print_settings_set_resolution(). 1423func (ps *PrintSettings) SetResolution(resolution int) { 1424 C.gtk_print_settings_set_resolution(ps.native(), C.gint(resolution)) 1425} 1426 1427// SetResolutionXY() is a wrapper around gtk_print_settings_set_resolution_xy(). 1428func (ps *PrintSettings) SetResolutionXY(resolutionX, resolutionY int) { 1429 C.gtk_print_settings_set_resolution_xy(ps.native(), C.gint(resolutionX), C.gint(resolutionY)) 1430} 1431 1432// GetResolutionX() is a wrapper around gtk_print_settings_get_resolution_x(). 1433func (ps *PrintSettings) GetResolutionX() int { 1434 c := C.gtk_print_settings_get_resolution_x(ps.native()) 1435 return int(c) 1436} 1437 1438// GetResolutionY() is a wrapper around gtk_print_settings_get_resolution_y(). 1439func (ps *PrintSettings) GetResolutionY() int { 1440 c := C.gtk_print_settings_get_resolution_y(ps.native()) 1441 return int(c) 1442} 1443 1444// GetPrinterLpi() is a wrapper around gtk_print_settings_get_printer_lpi(). 1445func (ps *PrintSettings) GetPrinterLpi() float64 { 1446 c := C.gtk_print_settings_get_printer_lpi(ps.native()) 1447 return float64(c) 1448} 1449 1450// SetPrinterLpi() is a wrapper around gtk_print_settings_set_printer_lpi(). 1451func (ps *PrintSettings) SetPrinterLpi(lpi float64) { 1452 C.gtk_print_settings_set_printer_lpi(ps.native(), C.gdouble(lpi)) 1453} 1454 1455// GetScale() is a wrapper around gtk_print_settings_get_scale(). 1456func (ps *PrintSettings) GetScale() float64 { 1457 c := C.gtk_print_settings_get_scale(ps.native()) 1458 return float64(c) 1459} 1460 1461// SetScale() is a wrapper around gtk_print_settings_set_scale(). 1462func (ps *PrintSettings) SetScale(scale float64) { 1463 C.gtk_print_settings_set_scale(ps.native(), C.gdouble(scale)) 1464} 1465 1466// GetPrintPages() is a wrapper around gtk_print_settings_get_print_pages(). 1467func (ps *PrintSettings) GetPrintPages() PrintPages { 1468 c := C.gtk_print_settings_get_print_pages(ps.native()) 1469 return PrintPages(c) 1470} 1471 1472// SetPrintPages() is a wrapper around gtk_print_settings_set_print_pages(). 1473func (ps *PrintSettings) SetPrintPages(pages PrintPages) { 1474 C.gtk_print_settings_set_print_pages(ps.native(), C.GtkPrintPages(pages)) 1475} 1476 1477// GetPageSet() is a wrapper around gtk_print_settings_get_page_set(). 1478func (ps *PrintSettings) GetPageSet(pages PrintPages) PageSet { 1479 c := C.gtk_print_settings_get_page_set(ps.native()) 1480 return PageSet(c) 1481} 1482 1483// SetPageSet() is a wrapper around gtk_print_settings_set_page_set(). 1484func (ps *PrintSettings) SetPageSet(pageSet PageSet) { 1485 C.gtk_print_settings_set_page_set(ps.native(), C.GtkPageSet(pageSet)) 1486} 1487 1488// GetDefaultSource() is a wrapper around gtk_print_settings_get_default_source(). 1489func (ps *PrintSettings) GetDefaultSource() string { 1490 c := C.gtk_print_settings_get_default_source(ps.native()) 1491 return C.GoString((*C.char)(c)) 1492} 1493 1494// SetSefaultSource() is a wrapper around gtk_print_settings_set_default_source(). 1495func (ps *PrintSettings) SetSefaultSource(defaultSource string) { 1496 cstr := C.CString(defaultSource) 1497 defer C.free(unsafe.Pointer(cstr)) 1498 C.gtk_print_settings_set_default_source(ps.native(), (*C.gchar)(cstr)) 1499} 1500 1501// GetMediaType() is a wrapper around gtk_print_settings_get_media_type(). 1502func (ps *PrintSettings) GetMediaType() string { 1503 c := C.gtk_print_settings_get_media_type(ps.native()) 1504 return C.GoString((*C.char)(c)) 1505} 1506 1507// SetMediaType() is a wrapper around gtk_print_settings_set_media_type(). 1508func (ps *PrintSettings) SetMediaType(mediaType string) { 1509 cstr := C.CString(mediaType) 1510 defer C.free(unsafe.Pointer(cstr)) 1511 C.gtk_print_settings_set_media_type(ps.native(), (*C.gchar)(cstr)) 1512} 1513 1514// GetDither() is a wrapper around gtk_print_settings_get_dither(). 1515func (ps *PrintSettings) GetDither() string { 1516 c := C.gtk_print_settings_get_dither(ps.native()) 1517 return C.GoString((*C.char)(c)) 1518} 1519 1520// SetDither() is a wrapper around gtk_print_settings_set_dither(). 1521func (ps *PrintSettings) SetDither(dither string) { 1522 cstr := C.CString(dither) 1523 defer C.free(unsafe.Pointer(cstr)) 1524 C.gtk_print_settings_set_dither(ps.native(), (*C.gchar)(cstr)) 1525} 1526 1527// GetFinishings() is a wrapper around gtk_print_settings_get_finishings(). 1528func (ps *PrintSettings) GetFinishings() string { 1529 c := C.gtk_print_settings_get_finishings(ps.native()) 1530 return C.GoString((*C.char)(c)) 1531} 1532 1533// SetFinishings() is a wrapper around gtk_print_settings_set_finishings(). 1534func (ps *PrintSettings) SetFinishings(dither string) { 1535 cstr := C.CString(dither) 1536 defer C.free(unsafe.Pointer(cstr)) 1537 C.gtk_print_settings_set_finishings(ps.native(), (*C.gchar)(cstr)) 1538} 1539 1540// GetOutputBin() is a wrapper around gtk_print_settings_get_output_bin(). 1541func (ps *PrintSettings) GetOutputBin() string { 1542 c := C.gtk_print_settings_get_output_bin(ps.native()) 1543 return C.GoString((*C.char)(c)) 1544} 1545 1546// SetOutputBin() is a wrapper around gtk_print_settings_set_output_bin(). 1547func (ps *PrintSettings) SetOutputBin(bin string) { 1548 cstr := C.CString(bin) 1549 defer C.free(unsafe.Pointer(cstr)) 1550 C.gtk_print_settings_set_output_bin(ps.native(), (*C.gchar)(cstr)) 1551} 1552 1553// PrintSettingsNewFromFile() is a wrapper around gtk_print_settings_new_from_file(). 1554func PrintSettingsNewFromFile(name string) (*PrintSettings, error) { 1555 cstr := C.CString(name) 1556 defer C.free(unsafe.Pointer(cstr)) 1557 var err *C.GError = nil 1558 c := C.gtk_print_settings_new_from_file((*C.gchar)(cstr), &err) 1559 if c == nil { 1560 defer C.g_error_free(err) 1561 return nil, errors.New(C.GoString((*C.char)(err.message))) 1562 } 1563 obj := glib.Take(unsafe.Pointer(c)) 1564 return wrapPrintSettings(obj), nil 1565} 1566 1567// PrintSettingsNewFromKeyFile() is a wrapper around gtk_print_settings_new_from_key_file(). 1568 1569// LoadFile() is a wrapper around gtk_print_settings_load_file(). 1570func (ps *PrintSettings) LoadFile(name string) error { 1571 cstr := C.CString(name) 1572 defer C.free(unsafe.Pointer(cstr)) 1573 var err *C.GError = nil 1574 c := C.gtk_print_settings_load_file(ps.native(), (*C.gchar)(cstr), &err) 1575 if gobool(c) == false { 1576 defer C.g_error_free(err) 1577 return errors.New(C.GoString((*C.char)(err.message))) 1578 } 1579 return nil 1580} 1581 1582// LoadKeyFile() is a wrapper around gtk_print_settings_load_key_file(). 1583 1584// ToFile() is a wrapper around gtk_print_settings_to_file(). 1585func (ps *PrintSettings) ToFile(name string) error { 1586 cstr := C.CString(name) 1587 defer C.free(unsafe.Pointer(cstr)) 1588 var err *C.GError = nil 1589 c := C.gtk_print_settings_to_file(ps.native(), (*C.gchar)(cstr), &err) 1590 if gobool(c) == false { 1591 return errors.New(C.GoString((*C.char)(err.message))) 1592 } 1593 return nil 1594} 1595 1596// ToKeyFile() is a wrapper around gtk_print_settings_to_key_file(). 1597