1 /* 2 * This file is part of gtkD. 3 * 4 * gtkD is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License 6 * as published by the Free Software Foundation; either version 3 7 * of the License, or (at your option) any later version, with 8 * some exceptions, please read the COPYING file. 9 * 10 * gtkD is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with gtkD; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 18 */ 19 20 // generated automatically - do not change 21 // find conversion definition on APILookup.txt 22 // implement new conversion functionalities on the wrap.utils pakage 23 24 25 module gtk.PaperSize; 26 27 private import glib.ConstructionException; 28 private import glib.ErrorG; 29 private import glib.GException; 30 private import glib.KeyFile; 31 private import glib.ListG; 32 private import glib.Str; 33 private import glib.Variant; 34 private import gobject.ObjectG; 35 private import gtk.c.functions; 36 public import gtk.c.types; 37 public import gtkc.gtktypes; 38 private import gtkd.Loader; 39 40 41 /** 42 * GtkPaperSize handles paper sizes. It uses the standard called 43 * [PWG 5101.1-2002 PWG: Standard for Media Standardized Names](http://www.pwg.org/standards.html) 44 * to name the paper sizes (and to get the data for the page sizes). 45 * In addition to standard paper sizes, GtkPaperSize allows to 46 * construct custom paper sizes with arbitrary dimensions. 47 * 48 * The #GtkPaperSize object stores not only the dimensions (width 49 * and height) of a paper size and its name, it also provides 50 * default [print margins][print-margins]. 51 * 52 * Printing support has been added in GTK+ 2.10. 53 */ 54 public class PaperSize 55 { 56 /** the main Gtk struct */ 57 protected GtkPaperSize* gtkPaperSize; 58 protected bool ownedRef; 59 60 /** Get the main Gtk struct */ 61 public GtkPaperSize* getPaperSizeStruct(bool transferOwnership = false) 62 { 63 if (transferOwnership) 64 ownedRef = false; 65 return gtkPaperSize; 66 } 67 68 /** the main Gtk struct as a void* */ 69 protected void* getStruct() 70 { 71 return cast(void*)gtkPaperSize; 72 } 73 74 /** 75 * Sets our main struct and passes it to the parent class. 76 */ 77 public this (GtkPaperSize* gtkPaperSize, bool ownedRef = false) 78 { 79 this.gtkPaperSize = gtkPaperSize; 80 this.ownedRef = ownedRef; 81 } 82 83 ~this () 84 { 85 if ( Linker.isLoaded(LIBRARY_GTK) && ownedRef ) 86 gtk_paper_size_free(gtkPaperSize); 87 } 88 89 90 /** */ 91 public static GType getType() 92 { 93 return gtk_paper_size_get_type(); 94 } 95 96 /** 97 * Creates a new #GtkPaperSize object by parsing a 98 * [PWG 5101.1-2002](ftp://ftp.pwg.org/pub/pwg/candidates/cs-pwgmsn10-20020226-5101.1.pdf) 99 * paper name. 100 * 101 * If @name is %NULL, the default paper size is returned, 102 * see gtk_paper_size_get_default(). 103 * 104 * Params: 105 * name = a paper size name, or %NULL 106 * 107 * Returns: a new #GtkPaperSize, use gtk_paper_size_free() 108 * to free it 109 * 110 * Since: 2.10 111 * 112 * Throws: ConstructionException GTK+ fails to create the object. 113 */ 114 public this(string name) 115 { 116 auto p = gtk_paper_size_new(Str.toStringz(name)); 117 118 if(p is null) 119 { 120 throw new ConstructionException("null returned by new"); 121 } 122 123 this(cast(GtkPaperSize*) p); 124 } 125 126 /** 127 * Creates a new #GtkPaperSize object with the 128 * given parameters. 129 * 130 * Params: 131 * name = the paper name 132 * displayName = the human-readable name 133 * width = the paper width, in units of @unit 134 * height = the paper height, in units of @unit 135 * unit = the unit for @width and @height. not %GTK_UNIT_NONE. 136 * 137 * Returns: a new #GtkPaperSize object, use gtk_paper_size_free() 138 * to free it 139 * 140 * Since: 2.10 141 * 142 * Throws: ConstructionException GTK+ fails to create the object. 143 */ 144 public this(string name, string displayName, double width, double height, GtkUnit unit) 145 { 146 auto p = gtk_paper_size_new_custom(Str.toStringz(name), Str.toStringz(displayName), width, height, unit); 147 148 if(p is null) 149 { 150 throw new ConstructionException("null returned by new_custom"); 151 } 152 153 this(cast(GtkPaperSize*) p); 154 } 155 156 /** 157 * Deserialize a paper size from an a{sv} variant in 158 * the format produced by gtk_paper_size_to_gvariant(). 159 * 160 * Params: 161 * variant = an a{sv} #GVariant 162 * 163 * Returns: a new #GtkPaperSize object 164 * 165 * Since: 3.22 166 * 167 * Throws: ConstructionException GTK+ fails to create the object. 168 */ 169 public this(Variant variant) 170 { 171 auto p = gtk_paper_size_new_from_gvariant((variant is null) ? null : variant.getVariantStruct()); 172 173 if(p is null) 174 { 175 throw new ConstructionException("null returned by new_from_gvariant"); 176 } 177 178 this(cast(GtkPaperSize*) p); 179 } 180 181 /** 182 * Creates a new #GtkPaperSize object by using 183 * IPP information. 184 * 185 * If @ipp_name is not a recognized paper name, 186 * @width and @height are used to 187 * construct a custom #GtkPaperSize object. 188 * 189 * Params: 190 * ippName = an IPP paper name 191 * width = the paper width, in points 192 * height = the paper height in points 193 * 194 * Returns: a new #GtkPaperSize, use gtk_paper_size_free() 195 * to free it 196 * 197 * Since: 3.16 198 * 199 * Throws: ConstructionException GTK+ fails to create the object. 200 */ 201 public this(string ippName, double width, double height) 202 { 203 auto p = gtk_paper_size_new_from_ipp(Str.toStringz(ippName), width, height); 204 205 if(p is null) 206 { 207 throw new ConstructionException("null returned by new_from_ipp"); 208 } 209 210 this(cast(GtkPaperSize*) p); 211 } 212 213 /** 214 * Reads a paper size from the group @group_name in the key file 215 * @key_file. 216 * 217 * Params: 218 * keyFile = the #GKeyFile to retrieve the papersize from 219 * groupName = the name ofthe group in the key file to read, 220 * or %NULL to read the first group 221 * 222 * Returns: a new #GtkPaperSize object with the restored 223 * paper size, or %NULL if an error occurred 224 * 225 * Since: 2.12 226 * 227 * Throws: GException on failure. 228 * Throws: ConstructionException GTK+ fails to create the object. 229 */ 230 public this(KeyFile keyFile, string groupName) 231 { 232 GError* err = null; 233 234 auto p = gtk_paper_size_new_from_key_file((keyFile is null) ? null : keyFile.getKeyFileStruct(), Str.toStringz(groupName), &err); 235 236 if (err !is null) 237 { 238 throw new GException( new ErrorG(err) ); 239 } 240 241 if(p is null) 242 { 243 throw new ConstructionException("null returned by new_from_key_file"); 244 } 245 246 this(cast(GtkPaperSize*) p); 247 } 248 249 /** 250 * Creates a new #GtkPaperSize object by using 251 * PPD information. 252 * 253 * If @ppd_name is not a recognized PPD paper name, 254 * @ppd_display_name, @width and @height are used to 255 * construct a custom #GtkPaperSize object. 256 * 257 * Params: 258 * ppdName = a PPD paper name 259 * ppdDisplayName = the corresponding human-readable name 260 * width = the paper width, in points 261 * height = the paper height in points 262 * 263 * Returns: a new #GtkPaperSize, use gtk_paper_size_free() 264 * to free it 265 * 266 * Since: 2.10 267 * 268 * Throws: ConstructionException GTK+ fails to create the object. 269 */ 270 public this(string ppdName, string ppdDisplayName, double width, double height) 271 { 272 auto p = gtk_paper_size_new_from_ppd(Str.toStringz(ppdName), Str.toStringz(ppdDisplayName), width, height); 273 274 if(p is null) 275 { 276 throw new ConstructionException("null returned by new_from_ppd"); 277 } 278 279 this(cast(GtkPaperSize*) p); 280 } 281 282 /** 283 * Copies an existing #GtkPaperSize. 284 * 285 * Returns: a copy of @other 286 * 287 * Since: 2.10 288 */ 289 public PaperSize copy() 290 { 291 auto p = gtk_paper_size_copy(gtkPaperSize); 292 293 if(p is null) 294 { 295 return null; 296 } 297 298 return ObjectG.getDObject!(PaperSize)(cast(GtkPaperSize*) p, true); 299 } 300 301 /** 302 * Free the given #GtkPaperSize object. 303 * 304 * Since: 2.10 305 */ 306 public void free() 307 { 308 gtk_paper_size_free(gtkPaperSize); 309 ownedRef = false; 310 } 311 312 /** 313 * Gets the default bottom margin for the #GtkPaperSize. 314 * 315 * Params: 316 * unit = the unit for the return value, not %GTK_UNIT_NONE 317 * 318 * Returns: the default bottom margin 319 * 320 * Since: 2.10 321 */ 322 public double getDefaultBottomMargin(GtkUnit unit) 323 { 324 return gtk_paper_size_get_default_bottom_margin(gtkPaperSize, unit); 325 } 326 327 /** 328 * Gets the default left margin for the #GtkPaperSize. 329 * 330 * Params: 331 * unit = the unit for the return value, not %GTK_UNIT_NONE 332 * 333 * Returns: the default left margin 334 * 335 * Since: 2.10 336 */ 337 public double getDefaultLeftMargin(GtkUnit unit) 338 { 339 return gtk_paper_size_get_default_left_margin(gtkPaperSize, unit); 340 } 341 342 /** 343 * Gets the default right margin for the #GtkPaperSize. 344 * 345 * Params: 346 * unit = the unit for the return value, not %GTK_UNIT_NONE 347 * 348 * Returns: the default right margin 349 * 350 * Since: 2.10 351 */ 352 public double getDefaultRightMargin(GtkUnit unit) 353 { 354 return gtk_paper_size_get_default_right_margin(gtkPaperSize, unit); 355 } 356 357 /** 358 * Gets the default top margin for the #GtkPaperSize. 359 * 360 * Params: 361 * unit = the unit for the return value, not %GTK_UNIT_NONE 362 * 363 * Returns: the default top margin 364 * 365 * Since: 2.10 366 */ 367 public double getDefaultTopMargin(GtkUnit unit) 368 { 369 return gtk_paper_size_get_default_top_margin(gtkPaperSize, unit); 370 } 371 372 /** 373 * Gets the human-readable name of the #GtkPaperSize. 374 * 375 * Returns: the human-readable name of @size 376 * 377 * Since: 2.10 378 */ 379 public string getDisplayName() 380 { 381 return Str.toString(gtk_paper_size_get_display_name(gtkPaperSize)); 382 } 383 384 /** 385 * Gets the paper height of the #GtkPaperSize, in 386 * units of @unit. 387 * 388 * Params: 389 * unit = the unit for the return value, not %GTK_UNIT_NONE 390 * 391 * Returns: the paper height 392 * 393 * Since: 2.10 394 */ 395 public double getHeight(GtkUnit unit) 396 { 397 return gtk_paper_size_get_height(gtkPaperSize, unit); 398 } 399 400 /** 401 * Gets the name of the #GtkPaperSize. 402 * 403 * Returns: the name of @size 404 * 405 * Since: 2.10 406 */ 407 public string getName() 408 { 409 return Str.toString(gtk_paper_size_get_name(gtkPaperSize)); 410 } 411 412 /** 413 * Gets the PPD name of the #GtkPaperSize, which 414 * may be %NULL. 415 * 416 * Returns: the PPD name of @size 417 * 418 * Since: 2.10 419 */ 420 public string getPpdName() 421 { 422 return Str.toString(gtk_paper_size_get_ppd_name(gtkPaperSize)); 423 } 424 425 /** 426 * Gets the paper width of the #GtkPaperSize, in 427 * units of @unit. 428 * 429 * Params: 430 * unit = the unit for the return value, not %GTK_UNIT_NONE 431 * 432 * Returns: the paper width 433 * 434 * Since: 2.10 435 */ 436 public double getWidth(GtkUnit unit) 437 { 438 return gtk_paper_size_get_width(gtkPaperSize, unit); 439 } 440 441 /** 442 * Returns %TRUE if @size is not a standard paper size. 443 * 444 * Returns: whether @size is a custom paper size. 445 */ 446 public bool isCustom() 447 { 448 return gtk_paper_size_is_custom(gtkPaperSize) != 0; 449 } 450 451 /** 452 * Compares two #GtkPaperSize objects. 453 * 454 * Params: 455 * size2 = another #GtkPaperSize object 456 * 457 * Returns: %TRUE, if @size1 and @size2 458 * represent the same paper size 459 * 460 * Since: 2.10 461 */ 462 public bool isEqual(PaperSize size2) 463 { 464 return gtk_paper_size_is_equal(gtkPaperSize, (size2 is null) ? null : size2.getPaperSizeStruct()) != 0; 465 } 466 467 /** 468 * Returns %TRUE if @size is an IPP standard paper size. 469 * 470 * Returns: whether @size is not an IPP custom paper size. 471 */ 472 public bool isIpp() 473 { 474 return gtk_paper_size_is_ipp(gtkPaperSize) != 0; 475 } 476 477 /** 478 * Changes the dimensions of a @size to @width x @height. 479 * 480 * Params: 481 * width = the new width in units of @unit 482 * height = the new height in units of @unit 483 * unit = the unit for @width and @height 484 * 485 * Since: 2.10 486 */ 487 public void setSize(double width, double height, GtkUnit unit) 488 { 489 gtk_paper_size_set_size(gtkPaperSize, width, height, unit); 490 } 491 492 /** 493 * Serialize a paper size to an a{sv} variant. 494 * 495 * Returns: a new, floating, #GVariant 496 * 497 * Since: 3.22 498 */ 499 public Variant toGvariant() 500 { 501 auto p = gtk_paper_size_to_gvariant(gtkPaperSize); 502 503 if(p is null) 504 { 505 return null; 506 } 507 508 return new Variant(cast(GVariant*) p); 509 } 510 511 /** 512 * This function adds the paper size from @size to @key_file. 513 * 514 * Params: 515 * keyFile = the #GKeyFile to save the paper size to 516 * groupName = the group to add the settings to in @key_file 517 * 518 * Since: 2.12 519 */ 520 public void toKeyFile(KeyFile keyFile, string groupName) 521 { 522 gtk_paper_size_to_key_file(gtkPaperSize, (keyFile is null) ? null : keyFile.getKeyFileStruct(), Str.toStringz(groupName)); 523 } 524 525 /** 526 * Returns the name of the default paper size, which 527 * depends on the current locale. 528 * 529 * Returns: the name of the default paper size. The string 530 * is owned by GTK+ and should not be modified. 531 * 532 * Since: 2.10 533 */ 534 public static string getDefault() 535 { 536 return Str.toString(gtk_paper_size_get_default()); 537 } 538 539 /** 540 * Creates a list of known paper sizes. 541 * 542 * Params: 543 * includeCustom = whether to include custom paper sizes 544 * as defined in the page setup dialog 545 * 546 * Returns: a newly allocated list of newly 547 * allocated #GtkPaperSize objects 548 * 549 * Since: 2.12 550 */ 551 public static ListG getPaperSizes(bool includeCustom) 552 { 553 auto p = gtk_paper_size_get_paper_sizes(includeCustom); 554 555 if(p is null) 556 { 557 return null; 558 } 559 560 return new ListG(cast(GList*) p, true); 561 } 562 }