{-# LINE 2 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}-- -*-haskell-*--- GIMP Toolkit (GTK) Widget Button---- Author : Axel Simon---- Created: 15 May 2001---- Copyright (C) 1999-2005 Axel Simon---- This library is free software; you can redistribute it and/or-- modify it under the terms of the GNU Lesser General Public-- License as published by the Free Software Foundation; either-- version 2.1 of the License, or (at your option) any later version.---- This library is distributed in the hope that it will be useful,-- but WITHOUT ANY WARRANTY; without even the implied warranty of-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU-- Lesser General Public License for more details.---- |-- Maintainer : gtk2hs-users@lists.sourceforge.net-- Stability : provisional-- Portability : portable (depends on GHC)---- A widget that creates a signal when clicked on--moduleGraphics.UI.Gtk.Buttons.Button(-- * Detail---- | The 'Button' widget is generally used to attach a function to that is-- called when the button is pressed. The various signals and how to use them-- are outlined below.---- The 'Button' widget can hold any valid child widget. That is it can hold-- most any other standard 'Widget'. The most commonly used child is the-- 'Label'.-- * Class Hierarchy-- |-- @-- | 'GObject'-- | +----'Object'-- | +----'Widget'-- | +----'Container'-- | +----'Bin'-- | +----Button-- | +----'ToggleButton'-- | +----'ColorButton'-- | +----'FontButton'-- | +----'OptionMenu'-- @-- * TypesButton,ButtonClass,castToButton,gTypeButton,toButton,-- * ConstructorsbuttonNew,buttonNewWithLabel,buttonNewWithMnemonic,buttonNewFromStock,-- * MethodsbuttonPressed,buttonReleased,buttonClicked,buttonEnter,buttonLeave,ReliefStyle(..),buttonSetRelief,buttonGetRelief,buttonSetLabel,buttonGetLabel,buttonSetUseStock,buttonGetUseStock,buttonSetUseUnderline,buttonGetUseUnderline,buttonSetFocusOnClick,buttonGetFocusOnClick,buttonSetAlignment,buttonGetAlignment,buttonGetImage,buttonSetImage,PositionType(..),buttonSetImagePosition,buttonGetImagePosition,buttonGetEventWindow,-- * AttributesbuttonLabel,buttonUseUnderline,buttonUseStock,buttonFocusOnClick,buttonRelief,buttonXalign,buttonYalign,buttonImage,buttonImagePosition,-- * SignalsbuttonActivated,-- * DeprecatedonButtonActivate,afterButtonActivate,onClicked,afterClicked,onEnter,afterEnter,onLeave,afterLeave,onPressed,afterPressed,onReleased,afterReleased)whereimportControl.Monad(liftM)importSystem.Glib.FFIimportSystem.Glib.UTFStringimportSystem.Glib.AttributesimportSystem.Glib.PropertiesimportGraphics.UI.Gtk.Abstract.Object(makeNewObject)importGraphics.UI.Gtk.Types{-# LINE 147 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}importGraphics.UI.Gtk.Signals{-# LINE 148 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}importGraphics.UI.Gtk.General.Enums(ReliefStyle(..),PositionType(..))importGraphics.UI.Gtk.General.StockItems{-# LINE 152 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}---------------------- Constructors-- | Creates a new 'Button' widget. To add a child widget to the button, use-- 'Graphics.UI.Gtk.Abstract.Container.containerAdd'.--buttonNew::IOButtonbuttonNew=makeNewObjectmkButton$liftM(castPtr::PtrWidget->PtrButton)$gtk_button_new{-# LINE 164 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}-- | Creates a 'Button' widget with a 'Label' child containing the given text.--buttonNewWithLabel::String-- ^ @label@ - The text you want the 'Label' to hold.->IOButtonbuttonNewWithLabellabel=makeNewObjectmkButton$liftM(castPtr::PtrWidget->PtrButton)$withUTFStringlabel$\labelPtr->gtk_button_new_with_label{-# LINE 175 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}labelPtr-- | Creates a new 'Button' containing a label. If characters in @label@ are-- preceded by an underscore, they are underlined. If you need a literal-- underscore character in a label, use \'__\' (two underscores). The first-- underlined character represents a keyboard accelerator called a mnemonic.-- Pressing Alt and that key activates the button.--buttonNewWithMnemonic::String-- ^ @label@ - The text of the button, with an underscore in-- front of the mnemonic character->IOButtonbuttonNewWithMnemoniclabel=makeNewObjectmkButton$liftM(castPtr::PtrWidget->PtrButton)$withUTFStringlabel$\labelPtr->gtk_button_new_with_mnemonic{-# LINE 192 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}labelPtr-- | Creates a new 'Button' containing the image and text from a stock item.---- If @stockId@ is unknown, then it will be treated as a mnemonic label (as-- for 'buttonNewWithMnemonic').--buttonNewFromStock::StockId-- ^ @stockId@ - the name of the stock item->IOButtonbuttonNewFromStockstockId=makeNewObjectmkButton$liftM(castPtr::PtrWidget->PtrButton)$withUTFStringstockId$\stockIdPtr->throwIfNull"buttonNewFromStock: Invalid stock identifier."$gtk_button_new_from_stock{-# LINE 208 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}stockIdPtr---------------------- Methods-- | Emits the button pressed signal for the given 'Button'.--buttonPressed::ButtonClassself=>self->IO()buttonPressedself=(\(Buttonarg1)->withForeignPtrarg1$\argPtr1->gtk_button_pressedargPtr1){-# LINE 218 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)-- | Emits the button released signal for the given 'Button'.--buttonReleased::ButtonClassself=>self->IO()buttonReleasedself=(\(Buttonarg1)->withForeignPtrarg1$\argPtr1->gtk_button_releasedargPtr1){-# LINE 225 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)-- | Emits the button clicked signal for the given 'Button'.---- This is similar to calling 'buttonPressed' and 'buttonReleased' in sequence.--buttonClicked::ButtonClassself=>self->IO()buttonClickedself=(\(Buttonarg1)->withForeignPtrarg1$\argPtr1->gtk_button_clickedargPtr1){-# LINE 234 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)-- | Emit the cursor enters signal to the button.--buttonEnter::ButtonClassself=>self->IO()buttonEnterself=(\(Buttonarg1)->withForeignPtrarg1$\argPtr1->gtk_button_enterargPtr1){-# LINE 241 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)-- | Emit the cursor leaves signal to the button.--buttonLeave::ButtonClassself=>self->IO()buttonLeaveself=(\(Buttonarg1)->withForeignPtrarg1$\argPtr1->gtk_button_leaveargPtr1){-# LINE 248 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)-- | Sets the relief style of the edges of the given 'Button' widget. Three-- styles exist, 'ReliefNormal', 'ReliefHalf', 'ReliefNone'. The default style-- is, as one can guess, 'ReliefNormal'.--buttonSetRelief::ButtonClassself=>self->ReliefStyle-- ^ @newstyle@ - The 'ReliefStyle' as described above.->IO()buttonSetReliefselfnewstyle=(\(Buttonarg1)arg2->withForeignPtrarg1$\argPtr1->gtk_button_set_reliefargPtr1arg2){-# LINE 259 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)((fromIntegral.fromEnum)newstyle)-- | Returns the current relief style of the given 'Button'.--buttonGetRelief::ButtonClassself=>self->IOReliefStyle-- ^ returns The current 'ReliefStyle'buttonGetReliefself=liftM(toEnum.fromIntegral)$(\(Buttonarg1)->withForeignPtrarg1$\argPtr1->gtk_button_get_reliefargPtr1){-# LINE 269 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)-- %hash c:d8cb d:1e7d-- | If the child of the button is a 'Misc' or 'Alignment', this property can-- be used to control it's horizontal alignment. 0.0 is left aligned, 1.0 is-- right aligned.---- Allowed values: [0,1]---- Default value: 0.5---- * Available since Gtk+ version 2.4--buttonXAlign::ButtonClassself=>AttrselfFloatbuttonXAlign=newAttrFromFloatProperty"xalign"-- %hash c:ce4e d:4fec-- | If the child of the button is a 'Misc' or 'Alignment', this property can-- be used to control it's vertical alignment. 0.0 is top aligned, 1.0 is-- bottom aligned.---- Allowed values: [0,1]---- Default value: 0.5---- * Available since Gtk+ version 2.4--buttonYAlign::ButtonClassself=>AttrselfFloatbuttonYAlign=newAttrFromFloatProperty"yalign"-- | Sets the text of the label of the button. This text is also used-- to select the stock item if 'buttonSetUseStock' is used.---- This will also clear any previously set labels.--buttonSetLabel::ButtonClassself=>self->String->IO()buttonSetLabelselflabel=withUTFStringlabel$\labelPtr->(\(Buttonarg1)arg2->withForeignPtrarg1$\argPtr1->gtk_button_set_labelargPtr1arg2){-# LINE 310 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)labelPtr-- | Gets the text from the label of the button, as set by-- 'buttonSetLabel'. If the label text has not been set the return value will-- be @\"\"@.-- This will be the case if you create an empty button with 'buttonNew' to use-- as a container.--buttonGetLabel::ButtonClassself=>self->IOStringbuttonGetLabelself=dostrPtr<-(\(Buttonarg1)->withForeignPtrarg1$\argPtr1->gtk_button_get_labelargPtr1){-# LINE 322 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)ifstrPtr==nullPtrthenreturn""elsepeekUTFStringstrPtr-- | If true, the label set on the button is used as a stock id to select the-- stock item for the button.---- Setting this property to @True@ will make the button lookup its label in-- the table of stock items. If there is a match, the button will use the-- stock item instead of the label. You need to set this flag before you-- change the label.--buttonSetUseStock::ButtonClassself=>self->Bool-- ^ @useStock@ - @True@ if the button should use a stock item->IO()buttonSetUseStockselfuseStock=(\(Buttonarg1)arg2->withForeignPtrarg1$\argPtr1->gtk_button_set_use_stockargPtr1arg2){-# LINE 338 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)(fromBooluseStock)-- | Returns whether the button label is a stock item.--buttonGetUseStock::ButtonClassself=>self->IOBool-- ^ returns @True@ if the button label is used to select a stock-- item instead of being used directly as the label text.buttonGetUseStockself=liftMtoBool$(\(Buttonarg1)->withForeignPtrarg1$\argPtr1->gtk_button_get_use_stockargPtr1){-# LINE 349 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)-- | If true, an underline in the text of the button label indicates the next-- character should be used for the mnemonic accelerator key.---- Setting this property will make the button join any underline character-- into the following letter and inserting this letter as a keyboard shortcut.-- You need to set this flag before you change the label.--buttonSetUseUnderline::ButtonClassself=>self->Bool-- ^ @useUnderline@ - @True@ if underlines in the text indicate-- mnemonics->IO()buttonSetUseUnderlineselfuseUnderline=(\(Buttonarg1)arg2->withForeignPtrarg1$\argPtr1->gtk_button_set_use_underlineargPtr1arg2){-# LINE 364 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)(fromBooluseUnderline)-- | Returns whether an embedded underline in the button label indicates a-- mnemonic. See 'buttonSetUseUnderline'.--buttonGetUseUnderline::ButtonClassself=>self->IOBool-- ^ returns @True@ if an embedded underline in the button label-- indicates the mnemonic accelerator keys.buttonGetUseUnderlineself=liftMtoBool$(\(Buttonarg1)->withForeignPtrarg1$\argPtr1->gtk_button_get_use_underlineargPtr1){-# LINE 376 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)-- | Sets whether the button will grab focus when it is clicked with the-- mouse. Making mouse clicks not grab focus is useful in places like toolbars-- where you don't want the keyboard focus removed from the main area of the-- application.---- * Available since Gtk version 2.4--buttonSetFocusOnClick::ButtonClassself=>self->Bool-- ^ @focusOnClick@ - whether the button grabs focus when clicked-- with the mouse->IO()buttonSetFocusOnClickselffocusOnClick=(\(Buttonarg1)arg2->withForeignPtrarg1$\argPtr1->gtk_button_set_focus_on_clickargPtr1arg2){-# LINE 392 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)(fromBoolfocusOnClick)-- | Returns whether the button grabs focus when it is clicked with the mouse.-- See 'buttonSetFocusOnClick'.---- * Available since Gtk version 2.4--buttonGetFocusOnClick::ButtonClassself=>self->IOBool-- ^ returns @True@ if the button grabs focus when it is clicked-- with the mouse.buttonGetFocusOnClickself=liftMtoBool$(\(Buttonarg1)->withForeignPtrarg1$\argPtr1->gtk_button_get_focus_on_clickargPtr1){-# LINE 406 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)-- | Sets the alignment of the child. This has no effect unless the child-- derives from 'Misc' or 'Alignment'.---- * Available since Gtk version 2.4--buttonSetAlignment::ButtonClassself=>self->(Float,Float)-- ^ @(xalign, yalign)@ - the horizontal position of the-- child (0.0 is left aligned, 1.0 is right aligned) and-- the vertical position of the child (0.0 is top aligned,-- 1.0 is bottom aligned)->IO()buttonSetAlignmentself(xalign,yalign)=(\(Buttonarg1)arg2arg3->withForeignPtrarg1$\argPtr1->gtk_button_set_alignmentargPtr1arg2arg3){-# LINE 421 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)(realToFracxalign)(realToFracyalign)-- | Gets the alignment of the child in the button.---- * Available since Gtk version 2.4--buttonGetAlignment::ButtonClassself=>self->IO(Float,Float)-- ^ @(xalign, yalign)@ - horizontal and vertical-- alignmentbuttonGetAlignmentself=alloca$\xalignPtr->alloca$\yalignPtr->do(\(Buttonarg1)arg2arg3->withForeignPtrarg1$\argPtr1->gtk_button_get_alignmentargPtr1arg2arg3){-# LINE 436 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)xalignPtryalignPtrxalign<-peekxalignPtryalign<-peekyalignPtrreturn(realToFracxalign,realToFracyalign)-- | Gets the widget that is currenty set as the image of the button. This may-- have been explicitly set by 'buttonSetImage' or constructed by-- 'buttonNewFromStock'.---- * Available since Gtk+ version 2.6--buttonGetImage::ButtonClassself=>self->IO(MaybeWidget)-- ^ a 'Widget' or @Nothing@ in case there is no imagebuttonGetImageself=maybeNull(makeNewObjectmkWidget)$(\(Buttonarg1)->withForeignPtrarg1$\argPtr1->gtk_button_get_imageargPtr1){-# LINE 456 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)-- | Set the image of the button to the given widget. Note that it depends on-- the \"gtk-button-images\" setting whether the image will be displayed or not.---- * Available since Gtk+ version 2.6--buttonSetImage::(ButtonClassself,WidgetClassimage)=>self->image-- ^ a widget to set as the image for the button->IO()buttonSetImageselfimage=(\(Buttonarg1)(Widgetarg2)->withForeignPtrarg1$\argPtr1->withForeignPtrarg2$\argPtr2->gtk_button_set_imageargPtr1argPtr2){-# LINE 468 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)(toWidgetimage)-- %hash c:e7a6 d:7a76-- | Sets the position of the image relative to the text inside the button.---- * Available since Gtk+ version 2.10--buttonSetImagePosition::ButtonClassself=>self->PositionType-- ^ @position@ - the position->IO()buttonSetImagePositionselfposition=(\(Buttonarg1)arg2->withForeignPtrarg1$\argPtr1->gtk_button_set_image_positionargPtr1arg2){-# LINE 483 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)((fromIntegral.fromEnum)position)-- %hash c:3841 d:1f6a-- | Gets the position of the image relative to the text inside the button.---- * Available since Gtk+ version 2.10--buttonGetImagePosition::ButtonClassself=>self->IOPositionType-- ^ returns the positionbuttonGetImagePositionself=liftM(toEnum.fromIntegral)$(\(Buttonarg1)->withForeignPtrarg1$\argPtr1->gtk_button_get_image_positionargPtr1){-# LINE 496 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)-- | Returns the button's event window if it is realized, 'Nothing' otherwise. ---- * Available since Gtk+ version 2.22--buttonGetEventWindow::ButtonClassself=>self->IO(MaybeDrawWindow)-- ^ returns button's event window or 'Nothing'buttonGetEventWindowself=maybeNull(makeNewGObjectmkDrawWindow)$(\(Buttonarg1)->withForeignPtrarg1$\argPtr1->gtk_button_get_event_windowargPtr1){-# LINE 509 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}(toButtonself)---------------------- Attributes-- | Text of the label widget inside the button, if the button contains a-- label widget.---- Default value: @\"\"@--buttonLabel::ButtonClassself=>AttrselfStringbuttonLabel=newAttrbuttonGetLabelbuttonSetLabel-- | If set, an underline in the text indicates the next character should be-- used for the mnemonic accelerator key.---- Default value: @False@--buttonUseUnderline::ButtonClassself=>AttrselfBoolbuttonUseUnderline=newAttrbuttonGetUseUnderlinebuttonSetUseUnderline-- | If set, the label is used to pick a stock item instead of being-- displayed.---- Default value: @False@--buttonUseStock::ButtonClassself=>AttrselfBoolbuttonUseStock=newAttrbuttonGetUseStockbuttonSetUseStock-- | Whether the button grabs focus when it is clicked with the mouse.---- Default value: @True@--buttonFocusOnClick::ButtonClassself=>AttrselfBoolbuttonFocusOnClick=newAttrbuttonGetFocusOnClickbuttonSetFocusOnClick-- | The border relief style.---- Default value: 'ReliefNormal'--buttonRelief::ButtonClassself=>AttrselfReliefStylebuttonRelief=newAttrbuttonGetReliefbuttonSetRelief-- | If the child of the button is a 'Misc' or 'Alignment', this property can-- be used to control it's horizontal alignment. 0.0 is left aligned, 1.0 is-- right aligned.---- Allowed values: [0,1]---- Default value: 0.5--buttonXalign::ButtonClassself=>AttrselfFloatbuttonXalign=newAttrFromFloatProperty"xalign"-- | If the child of the button is a 'Misc' or 'Alignment', this property can-- be used to control it's vertical alignment. 0.0 is top aligned, 1.0 is-- bottom aligned.---- Allowed values: [0,1]---- Default value: 0.5--buttonYalign::ButtonClassself=>AttrselfFloatbuttonYalign=newAttrFromFloatProperty"yalign"-- | Child widget to appear next to the button text.---- * Available since Gtk version 2.6--buttonImage::(ButtonClassself,WidgetClassimage)=>ReadWriteAttrself(MaybeWidget)imagebuttonImage=newAttrbuttonGetImagebuttonSetImage-- %hash c:20f4 d:8ca6-- | The position of the image relative to the text inside the button.---- Default value: 'PosLeft'---- * Available since Gtk+ version 2.10--buttonImagePosition::ButtonClassself=>AttrselfPositionTypebuttonImagePosition=newAttrFromEnumProperty"image-position"gtk_position_type_get_type{-# LINE 611 "./Graphics/UI/Gtk/Buttons/Button.chs" #-}---------------------- Signals-- %hash c:b660 d:ab72-- | Emitted when the button has been activated (pressed and released).--buttonActivated::ButtonClassself=>Signalself(IO())buttonActivated=Signal(connect_NONE__NONE"clicked")---------------------- Deprecated Signals-- | The button has been depressed (but not-- necessarily released yet). See @clicked@ signal.--onButtonActivate,afterButtonActivate::ButtonClassb=>b->IO()->IO(ConnectIdb)onButtonActivate=connect_NONE__NONE"activate"FalseafterButtonActivate=connect_NONE__NONE"activate"True-- | The button was clicked. This is only emitted if-- the mouse cursor was over the button when it was released.--onClicked,afterClicked::ButtonClassb=>b->IO()->IO(ConnectIdb)onClicked=connect_NONE__NONE"clicked"FalseafterClicked=connect_NONE__NONE"clicked"True-- | The cursor enters the button box.--onEnter,afterEnter::ButtonClassb=>b->IO()->IO(ConnectIdb)onEnter=connect_NONE__NONE"enter"FalseafterEnter=connect_NONE__NONE"enter"True-- | The cursor leaves the button box.--onLeave,afterLeave::ButtonClassb=>b->IO()->IO(ConnectIdb)onLeave=connect_NONE__NONE"leave"FalseafterLeave=connect_NONE__NONE"leave"True-- | The button is pressed.--onPressed,afterPressed::ButtonClassb=>b->IO()->IO(ConnectIdb)onPressed=connect_NONE__NONE"pressed"FalseafterPressed=connect_NONE__NONE"pressed"True-- | The button is released.--onReleased,afterReleased::ButtonClassb=>b->IO()->IO(ConnectIdb)onReleased=connect_NONE__NONE"released"FalseafterReleased=connect_NONE__NONE"released"Trueforeignimportccallunsafe"gtk_button_new"gtk_button_new::(IO(PtrWidget))foreignimportccallunsafe"gtk_button_new_with_label"gtk_button_new_with_label::((PtrCChar)->(IO(PtrWidget)))foreignimportccallunsafe"gtk_button_new_with_mnemonic"gtk_button_new_with_mnemonic::((PtrCChar)->(IO(PtrWidget)))foreignimportccallunsafe"gtk_button_new_from_stock"gtk_button_new_from_stock::((PtrCChar)->(IO(PtrWidget)))foreignimportccallsafe"gtk_button_pressed"gtk_button_pressed::((PtrButton)->(IO()))foreignimportccallsafe"gtk_button_released"gtk_button_released::((PtrButton)->(IO()))foreignimportccallsafe"gtk_button_clicked"gtk_button_clicked::((PtrButton)->(IO()))foreignimportccallsafe"gtk_button_enter"gtk_button_enter::((PtrButton)->(IO()))foreignimportccallsafe"gtk_button_leave"gtk_button_leave::((PtrButton)->(IO()))foreignimportccallsafe"gtk_button_set_relief"gtk_button_set_relief::((PtrButton)->(CInt->(IO())))foreignimportccallunsafe"gtk_button_get_relief"gtk_button_get_relief::((PtrButton)->(IOCInt))foreignimportccallsafe"gtk_button_set_label"gtk_button_set_label::((PtrButton)->((PtrCChar)->(IO())))foreignimportccallunsafe"gtk_button_get_label"gtk_button_get_label::((PtrButton)->(IO(PtrCChar)))foreignimportccallsafe"gtk_button_set_use_stock"gtk_button_set_use_stock::((PtrButton)->(CInt->(IO())))foreignimportccallunsafe"gtk_button_get_use_stock"gtk_button_get_use_stock::((PtrButton)->(IOCInt))foreignimportccallsafe"gtk_button_set_use_underline"gtk_button_set_use_underline::((PtrButton)->(CInt->(IO())))foreignimportccallunsafe"gtk_button_get_use_underline"gtk_button_get_use_underline::((PtrButton)->(IOCInt))foreignimportccallunsafe"gtk_button_set_focus_on_click"gtk_button_set_focus_on_click::((PtrButton)->(CInt->(IO())))foreignimportccallunsafe"gtk_button_get_focus_on_click"gtk_button_get_focus_on_click::((PtrButton)->(IOCInt))foreignimportccallunsafe"gtk_button_set_alignment"gtk_button_set_alignment::((PtrButton)->(CFloat->(CFloat->(IO()))))foreignimportccallunsafe"gtk_button_get_alignment"gtk_button_get_alignment::((PtrButton)->((PtrCFloat)->((PtrCFloat)->(IO()))))foreignimportccallsafe"gtk_button_get_image"gtk_button_get_image::((PtrButton)->(IO(PtrWidget)))foreignimportccallsafe"gtk_button_set_image"gtk_button_set_image::((PtrButton)->((PtrWidget)->(IO())))foreignimportccallsafe"gtk_button_set_image_position"gtk_button_set_image_position::((PtrButton)->(CInt->(IO())))foreignimportccallsafe"gtk_button_get_image_position"gtk_button_get_image_position::((PtrButton)->(IOCInt))foreignimportccallsafe"gtk_button_get_event_window"gtk_button_get_event_window::((PtrButton)->(IO(PtrDrawWindow)))foreignimportccallunsafe"gtk_position_type_get_type"gtk_position_type_get_type::CUInt