{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) 'GI.Gtk.Objects.FileChooserNative.FileChooserNative' is an abstraction of a dialog box suitable for use with “File\/Open” or “File\/Save as” commands. By default, this just uses a 'GI.Gtk.Objects.FileChooserDialog.FileChooserDialog' to implement the actual dialog. However, on certain platforms, such as Windows and macOS, the native platform file chooser is used instead. When the application is running in a sandboxed environment without direct filesystem access (such as Flatpak), 'GI.Gtk.Objects.FileChooserNative.FileChooserNative' may call the proper APIs (portals) to let the user choose a file and make it available to the application. While the API of 'GI.Gtk.Objects.FileChooserNative.FileChooserNative' closely mirrors 'GI.Gtk.Objects.FileChooserDialog.FileChooserDialog', the main difference is that there is no access to any 'GI.Gtk.Objects.Window.Window' or 'GI.Gtk.Objects.Widget.Widget' for the dialog. This is required, as there may not be one in the case of a platform native dialog. Showing, hiding and running the dialog is handled by the 'GI.Gtk.Objects.NativeDialog.NativeDialog' functions. ## Typical usage ## {@/gtkfilechoosernative/@-typical-usage} In the simplest of cases, you can the following code to use 'GI.Gtk.Objects.FileChooserDialog.FileChooserDialog' to select a file for opening: > >GtkFileChooserNative *native; >GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN; >gint res; > >native = gtk_file_chooser_native_new ("Open File", > parent_window, > action, > "_Open", > "_Cancel"); > >res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native)); >if (res == GTK_RESPONSE_ACCEPT) > { > char *filename; > GtkFileChooser *chooser = GTK_FILE_CHOOSER (native); > filename = gtk_file_chooser_get_filename (chooser); > open_file (filename); > g_free (filename); > } > >g_object_unref (native); To use a dialog for saving, you can use this: > >GtkFileChooserNative *native; >GtkFileChooser *chooser; >GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE; >gint res; > >native = gtk_file_chooser_native_new ("Save File", > parent_window, > action, > "_Save", > "_Cancel"); >chooser = GTK_FILE_CHOOSER (native); > >gtk_file_chooser_set_do_overwrite_confirmation (chooser, TRUE); > >if (user_edited_a_new_document) > gtk_file_chooser_set_current_name (chooser, > _("Untitled document")); >else > gtk_file_chooser_set_filename (chooser, > existing_filename); > >res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native)); >if (res == GTK_RESPONSE_ACCEPT) > { > char *filename; > > filename = gtk_file_chooser_get_filename (chooser); > save_to_file (filename); > g_free (filename); > } > >g_object_unref (native); For more information on how to best set up a file dialog, see 'GI.Gtk.Objects.FileChooserDialog.FileChooserDialog'. ## Response Codes ## {@/gtkfilechooserdialognative/@-responses} 'GI.Gtk.Objects.FileChooserNative.FileChooserNative' inherits from 'GI.Gtk.Objects.NativeDialog.NativeDialog', which means it will return @/GTK_RESPONSE_ACCEPT/@ if the user accepted, and @/GTK_RESPONSE_CANCEL/@ if he pressed cancel. It can also return @/GTK_RESPONSE_DELETE_EVENT/@ if the window was unexpectedly closed. ## Differences from 'GI.Gtk.Objects.FileChooserDialog.FileChooserDialog' ## {@/gtkfilechooserdialognative/@-differences} There are a few things in the GtkFileChooser API that are not possible to use with 'GI.Gtk.Objects.FileChooserNative.FileChooserNative', as such use would prohibit the use of a native dialog. There is no support for the signals that are emitted when the user navigates in the dialog, including: * 'GI.Gtk.Interfaces.FileChooser.FileChooser'::@/current-folder-changed/@ * 'GI.Gtk.Interfaces.FileChooser.FileChooser'::@/selection-changed/@ * 'GI.Gtk.Interfaces.FileChooser.FileChooser'::@/file-activated/@ * 'GI.Gtk.Interfaces.FileChooser.FileChooser'::@/confirm-overwrite/@ You can also not use the methods that directly control user navigation: * 'GI.Gtk.Interfaces.FileChooser.fileChooserUnselectFilename' * 'GI.Gtk.Interfaces.FileChooser.fileChooserSelectAll' * 'GI.Gtk.Interfaces.FileChooser.fileChooserUnselectAll' If you need any of the above you will have to use 'GI.Gtk.Objects.FileChooserDialog.FileChooserDialog' directly. No operations that change the the dialog work while the dialog is visible. Set all the properties that are required before showing the dialog. ## Win32 details ## {@/gtkfilechooserdialognative/@-win32} On windows the IFileDialog implementation (added in Windows Vista) is used. It supports many of the features that 'GI.Gtk.Objects.FileChooserDialog.FileChooserDialog' does, but there are some things it does not handle: * Extra widgets added with 'GI.Gtk.Interfaces.FileChooser.fileChooserSetExtraWidget'. * Use of custom previews by connecting to 'GI.Gtk.Interfaces.FileChooser.FileChooser'::@/update-preview/@. * Any 'GI.Gtk.Objects.FileFilter.FileFilter' added using a mimetype or custom filter. If any of these features are used the regular 'GI.Gtk.Objects.FileChooserDialog.FileChooserDialog' will be used in place of the native one. ## Portal details ## {@/gtkfilechooserdialognative/@-portal} When the org.freedesktop.portal.FileChooser portal is available on the session bus, it is used to bring up an out-of-process file chooser. Depending on the kind of session the application is running in, this may or may not be a GTK+ file chooser. In this situation, the following things are not supported and will be silently ignored: * Extra widgets added with 'GI.Gtk.Interfaces.FileChooser.fileChooserSetExtraWidget'. * Use of custom previews by connecting to 'GI.Gtk.Interfaces.FileChooser.FileChooser'::@/update-preview/@. * Any 'GI.Gtk.Objects.FileFilter.FileFilter' added with a custom filter. ## macOS details ## {@/gtkfilechooserdialognative/@-macos} On macOS the NSSavePanel and NSOpenPanel classes are used to provide native file chooser dialogs. Some features provided by 'GI.Gtk.Objects.FileChooserDialog.FileChooserDialog' are not supported: * Extra widgets added with 'GI.Gtk.Interfaces.FileChooser.fileChooserSetExtraWidget', unless the widget is an instance of GtkLabel, in which case the label text will be used to set the NSSavePanel message instance property. * Use of custom previews by connecting to 'GI.Gtk.Interfaces.FileChooser.FileChooser'::@/update-preview/@. * Any 'GI.Gtk.Objects.FileFilter.FileFilter' added with a custom filter. * Shortcut folders. -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gtk.Objects.FileChooserNative ( -- * Exported types FileChooserNative(..) , IsFileChooserNative , toFileChooserNative , noFileChooserNative , -- * Methods -- ** getAcceptLabel #method:getAcceptLabel# #if ENABLE_OVERLOADING FileChooserNativeGetAcceptLabelMethodInfo, #endif fileChooserNativeGetAcceptLabel , -- ** getCancelLabel #method:getCancelLabel# #if ENABLE_OVERLOADING FileChooserNativeGetCancelLabelMethodInfo, #endif fileChooserNativeGetCancelLabel , -- ** new #method:new# fileChooserNativeNew , -- ** setAcceptLabel #method:setAcceptLabel# #if ENABLE_OVERLOADING FileChooserNativeSetAcceptLabelMethodInfo, #endif fileChooserNativeSetAcceptLabel , -- ** setCancelLabel #method:setCancelLabel# #if ENABLE_OVERLOADING FileChooserNativeSetCancelLabelMethodInfo, #endif fileChooserNativeSetCancelLabel , -- * Properties -- ** acceptLabel #attr:acceptLabel# {- | The text used for the label on the accept button in the dialog, or 'Nothing' to use the default text. -} #if ENABLE_OVERLOADING FileChooserNativeAcceptLabelPropertyInfo, #endif clearFileChooserNativeAcceptLabel , constructFileChooserNativeAcceptLabel , #if ENABLE_OVERLOADING fileChooserNativeAcceptLabel , #endif getFileChooserNativeAcceptLabel , setFileChooserNativeAcceptLabel , -- ** cancelLabel #attr:cancelLabel# {- | The text used for the label on the cancel button in the dialog, or 'Nothing' to use the default text. -} #if ENABLE_OVERLOADING FileChooserNativeCancelLabelPropertyInfo, #endif clearFileChooserNativeCancelLabel , constructFileChooserNativeCancelLabel , #if ENABLE_OVERLOADING fileChooserNativeCancelLabel , #endif getFileChooserNativeCancelLabel , setFileChooserNativeCancelLabel , ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import qualified GI.GObject.Objects.Object as GObject.Object import {-# SOURCE #-} qualified GI.Gtk.Enums as Gtk.Enums import {-# SOURCE #-} qualified GI.Gtk.Interfaces.FileChooser as Gtk.FileChooser import {-# SOURCE #-} qualified GI.Gtk.Objects.NativeDialog as Gtk.NativeDialog import {-# SOURCE #-} qualified GI.Gtk.Objects.Window as Gtk.Window -- | Memory-managed wrapper type. newtype FileChooserNative = FileChooserNative (ManagedPtr FileChooserNative) foreign import ccall "gtk_file_chooser_native_get_type" c_gtk_file_chooser_native_get_type :: IO GType instance GObject FileChooserNative where gobjectType = c_gtk_file_chooser_native_get_type -- | Type class for types which can be safely cast to `FileChooserNative`, for instance with `toFileChooserNative`. class (GObject o, O.IsDescendantOf FileChooserNative o) => IsFileChooserNative o instance (GObject o, O.IsDescendantOf FileChooserNative o) => IsFileChooserNative o instance O.HasParentTypes FileChooserNative type instance O.ParentTypes FileChooserNative = '[Gtk.NativeDialog.NativeDialog, GObject.Object.Object, Gtk.FileChooser.FileChooser] -- | Cast to `FileChooserNative`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toFileChooserNative :: (MonadIO m, IsFileChooserNative o) => o -> m FileChooserNative toFileChooserNative = liftIO . unsafeCastTo FileChooserNative -- | A convenience alias for `Nothing` :: `Maybe` `FileChooserNative`. noFileChooserNative :: Maybe FileChooserNative noFileChooserNative = Nothing #if ENABLE_OVERLOADING type family ResolveFileChooserNativeMethod (t :: Symbol) (o :: *) :: * where ResolveFileChooserNativeMethod "addChoice" o = Gtk.FileChooser.FileChooserAddChoiceMethodInfo ResolveFileChooserNativeMethod "addFilter" o = Gtk.FileChooser.FileChooserAddFilterMethodInfo ResolveFileChooserNativeMethod "addShortcutFolder" o = Gtk.FileChooser.FileChooserAddShortcutFolderMethodInfo ResolveFileChooserNativeMethod "addShortcutFolderUri" o = Gtk.FileChooser.FileChooserAddShortcutFolderUriMethodInfo ResolveFileChooserNativeMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveFileChooserNativeMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveFileChooserNativeMethod "destroy" o = Gtk.NativeDialog.NativeDialogDestroyMethodInfo ResolveFileChooserNativeMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveFileChooserNativeMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveFileChooserNativeMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveFileChooserNativeMethod "hide" o = Gtk.NativeDialog.NativeDialogHideMethodInfo ResolveFileChooserNativeMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveFileChooserNativeMethod "listFilters" o = Gtk.FileChooser.FileChooserListFiltersMethodInfo ResolveFileChooserNativeMethod "listShortcutFolderUris" o = Gtk.FileChooser.FileChooserListShortcutFolderUrisMethodInfo ResolveFileChooserNativeMethod "listShortcutFolders" o = Gtk.FileChooser.FileChooserListShortcutFoldersMethodInfo ResolveFileChooserNativeMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveFileChooserNativeMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveFileChooserNativeMethod "ref" o = GObject.Object.ObjectRefMethodInfo ResolveFileChooserNativeMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveFileChooserNativeMethod "removeChoice" o = Gtk.FileChooser.FileChooserRemoveChoiceMethodInfo ResolveFileChooserNativeMethod "removeFilter" o = Gtk.FileChooser.FileChooserRemoveFilterMethodInfo ResolveFileChooserNativeMethod "removeShortcutFolder" o = Gtk.FileChooser.FileChooserRemoveShortcutFolderMethodInfo ResolveFileChooserNativeMethod "removeShortcutFolderUri" o = Gtk.FileChooser.FileChooserRemoveShortcutFolderUriMethodInfo ResolveFileChooserNativeMethod "run" o = Gtk.NativeDialog.NativeDialogRunMethodInfo ResolveFileChooserNativeMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveFileChooserNativeMethod "selectAll" o = Gtk.FileChooser.FileChooserSelectAllMethodInfo ResolveFileChooserNativeMethod "selectFile" o = Gtk.FileChooser.FileChooserSelectFileMethodInfo ResolveFileChooserNativeMethod "selectFilename" o = Gtk.FileChooser.FileChooserSelectFilenameMethodInfo ResolveFileChooserNativeMethod "selectUri" o = Gtk.FileChooser.FileChooserSelectUriMethodInfo ResolveFileChooserNativeMethod "show" o = Gtk.NativeDialog.NativeDialogShowMethodInfo ResolveFileChooserNativeMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveFileChooserNativeMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveFileChooserNativeMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveFileChooserNativeMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo ResolveFileChooserNativeMethod "unselectAll" o = Gtk.FileChooser.FileChooserUnselectAllMethodInfo ResolveFileChooserNativeMethod "unselectFile" o = Gtk.FileChooser.FileChooserUnselectFileMethodInfo ResolveFileChooserNativeMethod "unselectFilename" o = Gtk.FileChooser.FileChooserUnselectFilenameMethodInfo ResolveFileChooserNativeMethod "unselectUri" o = Gtk.FileChooser.FileChooserUnselectUriMethodInfo ResolveFileChooserNativeMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveFileChooserNativeMethod "getAcceptLabel" o = FileChooserNativeGetAcceptLabelMethodInfo ResolveFileChooserNativeMethod "getAction" o = Gtk.FileChooser.FileChooserGetActionMethodInfo ResolveFileChooserNativeMethod "getCancelLabel" o = FileChooserNativeGetCancelLabelMethodInfo ResolveFileChooserNativeMethod "getChoice" o = Gtk.FileChooser.FileChooserGetChoiceMethodInfo ResolveFileChooserNativeMethod "getCreateFolders" o = Gtk.FileChooser.FileChooserGetCreateFoldersMethodInfo ResolveFileChooserNativeMethod "getCurrentFolder" o = Gtk.FileChooser.FileChooserGetCurrentFolderMethodInfo ResolveFileChooserNativeMethod "getCurrentFolderFile" o = Gtk.FileChooser.FileChooserGetCurrentFolderFileMethodInfo ResolveFileChooserNativeMethod "getCurrentFolderUri" o = Gtk.FileChooser.FileChooserGetCurrentFolderUriMethodInfo ResolveFileChooserNativeMethod "getCurrentName" o = Gtk.FileChooser.FileChooserGetCurrentNameMethodInfo ResolveFileChooserNativeMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveFileChooserNativeMethod "getDoOverwriteConfirmation" o = Gtk.FileChooser.FileChooserGetDoOverwriteConfirmationMethodInfo ResolveFileChooserNativeMethod "getExtraWidget" o = Gtk.FileChooser.FileChooserGetExtraWidgetMethodInfo ResolveFileChooserNativeMethod "getFile" o = Gtk.FileChooser.FileChooserGetFileMethodInfo ResolveFileChooserNativeMethod "getFilename" o = Gtk.FileChooser.FileChooserGetFilenameMethodInfo ResolveFileChooserNativeMethod "getFilenames" o = Gtk.FileChooser.FileChooserGetFilenamesMethodInfo ResolveFileChooserNativeMethod "getFiles" o = Gtk.FileChooser.FileChooserGetFilesMethodInfo ResolveFileChooserNativeMethod "getFilter" o = Gtk.FileChooser.FileChooserGetFilterMethodInfo ResolveFileChooserNativeMethod "getLocalOnly" o = Gtk.FileChooser.FileChooserGetLocalOnlyMethodInfo ResolveFileChooserNativeMethod "getModal" o = Gtk.NativeDialog.NativeDialogGetModalMethodInfo ResolveFileChooserNativeMethod "getPreviewFile" o = Gtk.FileChooser.FileChooserGetPreviewFileMethodInfo ResolveFileChooserNativeMethod "getPreviewFilename" o = Gtk.FileChooser.FileChooserGetPreviewFilenameMethodInfo ResolveFileChooserNativeMethod "getPreviewUri" o = Gtk.FileChooser.FileChooserGetPreviewUriMethodInfo ResolveFileChooserNativeMethod "getPreviewWidget" o = Gtk.FileChooser.FileChooserGetPreviewWidgetMethodInfo ResolveFileChooserNativeMethod "getPreviewWidgetActive" o = Gtk.FileChooser.FileChooserGetPreviewWidgetActiveMethodInfo ResolveFileChooserNativeMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveFileChooserNativeMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveFileChooserNativeMethod "getSelectMultiple" o = Gtk.FileChooser.FileChooserGetSelectMultipleMethodInfo ResolveFileChooserNativeMethod "getShowHidden" o = Gtk.FileChooser.FileChooserGetShowHiddenMethodInfo ResolveFileChooserNativeMethod "getTitle" o = Gtk.NativeDialog.NativeDialogGetTitleMethodInfo ResolveFileChooserNativeMethod "getTransientFor" o = Gtk.NativeDialog.NativeDialogGetTransientForMethodInfo ResolveFileChooserNativeMethod "getUri" o = Gtk.FileChooser.FileChooserGetUriMethodInfo ResolveFileChooserNativeMethod "getUris" o = Gtk.FileChooser.FileChooserGetUrisMethodInfo ResolveFileChooserNativeMethod "getUsePreviewLabel" o = Gtk.FileChooser.FileChooserGetUsePreviewLabelMethodInfo ResolveFileChooserNativeMethod "getVisible" o = Gtk.NativeDialog.NativeDialogGetVisibleMethodInfo ResolveFileChooserNativeMethod "setAcceptLabel" o = FileChooserNativeSetAcceptLabelMethodInfo ResolveFileChooserNativeMethod "setAction" o = Gtk.FileChooser.FileChooserSetActionMethodInfo ResolveFileChooserNativeMethod "setCancelLabel" o = FileChooserNativeSetCancelLabelMethodInfo ResolveFileChooserNativeMethod "setChoice" o = Gtk.FileChooser.FileChooserSetChoiceMethodInfo ResolveFileChooserNativeMethod "setCreateFolders" o = Gtk.FileChooser.FileChooserSetCreateFoldersMethodInfo ResolveFileChooserNativeMethod "setCurrentFolder" o = Gtk.FileChooser.FileChooserSetCurrentFolderMethodInfo ResolveFileChooserNativeMethod "setCurrentFolderFile" o = Gtk.FileChooser.FileChooserSetCurrentFolderFileMethodInfo ResolveFileChooserNativeMethod "setCurrentFolderUri" o = Gtk.FileChooser.FileChooserSetCurrentFolderUriMethodInfo ResolveFileChooserNativeMethod "setCurrentName" o = Gtk.FileChooser.FileChooserSetCurrentNameMethodInfo ResolveFileChooserNativeMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveFileChooserNativeMethod "setDoOverwriteConfirmation" o = Gtk.FileChooser.FileChooserSetDoOverwriteConfirmationMethodInfo ResolveFileChooserNativeMethod "setExtraWidget" o = Gtk.FileChooser.FileChooserSetExtraWidgetMethodInfo ResolveFileChooserNativeMethod "setFile" o = Gtk.FileChooser.FileChooserSetFileMethodInfo ResolveFileChooserNativeMethod "setFilename" o = Gtk.FileChooser.FileChooserSetFilenameMethodInfo ResolveFileChooserNativeMethod "setFilter" o = Gtk.FileChooser.FileChooserSetFilterMethodInfo ResolveFileChooserNativeMethod "setLocalOnly" o = Gtk.FileChooser.FileChooserSetLocalOnlyMethodInfo ResolveFileChooserNativeMethod "setModal" o = Gtk.NativeDialog.NativeDialogSetModalMethodInfo ResolveFileChooserNativeMethod "setPreviewWidget" o = Gtk.FileChooser.FileChooserSetPreviewWidgetMethodInfo ResolveFileChooserNativeMethod "setPreviewWidgetActive" o = Gtk.FileChooser.FileChooserSetPreviewWidgetActiveMethodInfo ResolveFileChooserNativeMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveFileChooserNativeMethod "setSelectMultiple" o = Gtk.FileChooser.FileChooserSetSelectMultipleMethodInfo ResolveFileChooserNativeMethod "setShowHidden" o = Gtk.FileChooser.FileChooserSetShowHiddenMethodInfo ResolveFileChooserNativeMethod "setTitle" o = Gtk.NativeDialog.NativeDialogSetTitleMethodInfo ResolveFileChooserNativeMethod "setTransientFor" o = Gtk.NativeDialog.NativeDialogSetTransientForMethodInfo ResolveFileChooserNativeMethod "setUri" o = Gtk.FileChooser.FileChooserSetUriMethodInfo ResolveFileChooserNativeMethod "setUsePreviewLabel" o = Gtk.FileChooser.FileChooserSetUsePreviewLabelMethodInfo ResolveFileChooserNativeMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveFileChooserNativeMethod t FileChooserNative, O.MethodInfo info FileChooserNative p) => OL.IsLabel t (FileChooserNative -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif -- VVV Prop "accept-label" -- Type: TBasicType TUTF8 -- Flags: [PropertyReadable,PropertyWritable] -- Nullable: (Just True,Just True) {- | Get the value of the “@accept-label@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' fileChooserNative #acceptLabel @ -} getFileChooserNativeAcceptLabel :: (MonadIO m, IsFileChooserNative o) => o -> m (Maybe T.Text) getFileChooserNativeAcceptLabel obj = liftIO $ B.Properties.getObjectPropertyString obj "accept-label" {- | Set the value of the “@accept-label@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' fileChooserNative [ #acceptLabel 'Data.GI.Base.Attributes.:=' value ] @ -} setFileChooserNativeAcceptLabel :: (MonadIO m, IsFileChooserNative o) => o -> T.Text -> m () setFileChooserNativeAcceptLabel obj val = liftIO $ B.Properties.setObjectPropertyString obj "accept-label" (Just val) {- | Construct a `GValueConstruct` with valid value for the “@accept-label@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructFileChooserNativeAcceptLabel :: (IsFileChooserNative o) => T.Text -> IO (GValueConstruct o) constructFileChooserNativeAcceptLabel val = B.Properties.constructObjectPropertyString "accept-label" (Just val) {- | Set the value of the “@accept-label@” property to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #acceptLabel @ -} clearFileChooserNativeAcceptLabel :: (MonadIO m, IsFileChooserNative o) => o -> m () clearFileChooserNativeAcceptLabel obj = liftIO $ B.Properties.setObjectPropertyString obj "accept-label" (Nothing :: Maybe T.Text) #if ENABLE_OVERLOADING data FileChooserNativeAcceptLabelPropertyInfo instance AttrInfo FileChooserNativeAcceptLabelPropertyInfo where type AttrAllowedOps FileChooserNativeAcceptLabelPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint FileChooserNativeAcceptLabelPropertyInfo = (~) T.Text type AttrBaseTypeConstraint FileChooserNativeAcceptLabelPropertyInfo = IsFileChooserNative type AttrGetType FileChooserNativeAcceptLabelPropertyInfo = (Maybe T.Text) type AttrLabel FileChooserNativeAcceptLabelPropertyInfo = "accept-label" type AttrOrigin FileChooserNativeAcceptLabelPropertyInfo = FileChooserNative attrGet _ = getFileChooserNativeAcceptLabel attrSet _ = setFileChooserNativeAcceptLabel attrConstruct _ = constructFileChooserNativeAcceptLabel attrClear _ = clearFileChooserNativeAcceptLabel #endif -- VVV Prop "cancel-label" -- Type: TBasicType TUTF8 -- Flags: [PropertyReadable,PropertyWritable] -- Nullable: (Just True,Just True) {- | Get the value of the “@cancel-label@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' fileChooserNative #cancelLabel @ -} getFileChooserNativeCancelLabel :: (MonadIO m, IsFileChooserNative o) => o -> m (Maybe T.Text) getFileChooserNativeCancelLabel obj = liftIO $ B.Properties.getObjectPropertyString obj "cancel-label" {- | Set the value of the “@cancel-label@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' fileChooserNative [ #cancelLabel 'Data.GI.Base.Attributes.:=' value ] @ -} setFileChooserNativeCancelLabel :: (MonadIO m, IsFileChooserNative o) => o -> T.Text -> m () setFileChooserNativeCancelLabel obj val = liftIO $ B.Properties.setObjectPropertyString obj "cancel-label" (Just val) {- | Construct a `GValueConstruct` with valid value for the “@cancel-label@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructFileChooserNativeCancelLabel :: (IsFileChooserNative o) => T.Text -> IO (GValueConstruct o) constructFileChooserNativeCancelLabel val = B.Properties.constructObjectPropertyString "cancel-label" (Just val) {- | Set the value of the “@cancel-label@” property to `Nothing`. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #cancelLabel @ -} clearFileChooserNativeCancelLabel :: (MonadIO m, IsFileChooserNative o) => o -> m () clearFileChooserNativeCancelLabel obj = liftIO $ B.Properties.setObjectPropertyString obj "cancel-label" (Nothing :: Maybe T.Text) #if ENABLE_OVERLOADING data FileChooserNativeCancelLabelPropertyInfo instance AttrInfo FileChooserNativeCancelLabelPropertyInfo where type AttrAllowedOps FileChooserNativeCancelLabelPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint FileChooserNativeCancelLabelPropertyInfo = (~) T.Text type AttrBaseTypeConstraint FileChooserNativeCancelLabelPropertyInfo = IsFileChooserNative type AttrGetType FileChooserNativeCancelLabelPropertyInfo = (Maybe T.Text) type AttrLabel FileChooserNativeCancelLabelPropertyInfo = "cancel-label" type AttrOrigin FileChooserNativeCancelLabelPropertyInfo = FileChooserNative attrGet _ = getFileChooserNativeCancelLabel attrSet _ = setFileChooserNativeCancelLabel attrConstruct _ = constructFileChooserNativeCancelLabel attrClear _ = clearFileChooserNativeCancelLabel #endif #if ENABLE_OVERLOADING instance O.HasAttributeList FileChooserNative type instance O.AttributeList FileChooserNative = FileChooserNativeAttributeList type FileChooserNativeAttributeList = ('[ '("acceptLabel", FileChooserNativeAcceptLabelPropertyInfo), '("action", Gtk.FileChooser.FileChooserActionPropertyInfo), '("cancelLabel", FileChooserNativeCancelLabelPropertyInfo), '("createFolders", Gtk.FileChooser.FileChooserCreateFoldersPropertyInfo), '("doOverwriteConfirmation", Gtk.FileChooser.FileChooserDoOverwriteConfirmationPropertyInfo), '("extraWidget", Gtk.FileChooser.FileChooserExtraWidgetPropertyInfo), '("filter", Gtk.FileChooser.FileChooserFilterPropertyInfo), '("localOnly", Gtk.FileChooser.FileChooserLocalOnlyPropertyInfo), '("modal", Gtk.NativeDialog.NativeDialogModalPropertyInfo), '("previewWidget", Gtk.FileChooser.FileChooserPreviewWidgetPropertyInfo), '("previewWidgetActive", Gtk.FileChooser.FileChooserPreviewWidgetActivePropertyInfo), '("selectMultiple", Gtk.FileChooser.FileChooserSelectMultiplePropertyInfo), '("showHidden", Gtk.FileChooser.FileChooserShowHiddenPropertyInfo), '("title", Gtk.NativeDialog.NativeDialogTitlePropertyInfo), '("transientFor", Gtk.NativeDialog.NativeDialogTransientForPropertyInfo), '("usePreviewLabel", Gtk.FileChooser.FileChooserUsePreviewLabelPropertyInfo), '("visible", Gtk.NativeDialog.NativeDialogVisiblePropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING fileChooserNativeAcceptLabel :: AttrLabelProxy "acceptLabel" fileChooserNativeAcceptLabel = AttrLabelProxy fileChooserNativeCancelLabel :: AttrLabelProxy "cancelLabel" fileChooserNativeCancelLabel = AttrLabelProxy #endif #if ENABLE_OVERLOADING type instance O.SignalList FileChooserNative = FileChooserNativeSignalList type FileChooserNativeSignalList = ('[ '("confirmOverwrite", Gtk.FileChooser.FileChooserConfirmOverwriteSignalInfo), '("currentFolderChanged", Gtk.FileChooser.FileChooserCurrentFolderChangedSignalInfo), '("fileActivated", Gtk.FileChooser.FileChooserFileActivatedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("response", Gtk.NativeDialog.NativeDialogResponseSignalInfo), '("selectionChanged", Gtk.FileChooser.FileChooserSelectionChangedSignalInfo), '("updatePreview", Gtk.FileChooser.FileChooserUpdatePreviewSignalInfo)] :: [(Symbol, *)]) #endif -- method FileChooserNative::new -- method type : Constructor -- Args : [Arg {argCName = "title", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "Title of the native, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "parent", argType = TInterface (Name {namespace = "Gtk", name = "Window"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "Transient parent of the native, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "action", argType = TInterface (Name {namespace = "Gtk", name = "FileChooserAction"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Open or save mode for the dialog", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accept_label", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "text to go in the accept button, or %NULL for the default", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancel_label", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "text to go in the cancel button, or %NULL for the default", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gtk", name = "FileChooserNative"})) -- throws : False -- Skip return : False foreign import ccall "gtk_file_chooser_native_new" gtk_file_chooser_native_new :: CString -> -- title : TBasicType TUTF8 Ptr Gtk.Window.Window -> -- parent : TInterface (Name {namespace = "Gtk", name = "Window"}) CUInt -> -- action : TInterface (Name {namespace = "Gtk", name = "FileChooserAction"}) CString -> -- accept_label : TBasicType TUTF8 CString -> -- cancel_label : TBasicType TUTF8 IO (Ptr FileChooserNative) {- | Creates a new 'GI.Gtk.Objects.FileChooserNative.FileChooserNative'. /Since: 3.20/ -} fileChooserNativeNew :: (B.CallStack.HasCallStack, MonadIO m, Gtk.Window.IsWindow a) => Maybe (T.Text) {- ^ /@title@/: Title of the native, or 'Nothing' -} -> Maybe (a) {- ^ /@parent@/: Transient parent of the native, or 'Nothing' -} -> Gtk.Enums.FileChooserAction {- ^ /@action@/: Open or save mode for the dialog -} -> Maybe (T.Text) {- ^ /@acceptLabel@/: text to go in the accept button, or 'Nothing' for the default -} -> Maybe (T.Text) {- ^ /@cancelLabel@/: text to go in the cancel button, or 'Nothing' for the default -} -> m FileChooserNative {- ^ __Returns:__ a new 'GI.Gtk.Objects.FileChooserNative.FileChooserNative' -} fileChooserNativeNew title parent action acceptLabel cancelLabel = liftIO $ do maybeTitle <- case title of Nothing -> return nullPtr Just jTitle -> do jTitle' <- textToCString jTitle return jTitle' maybeParent <- case parent of Nothing -> return nullPtr Just jParent -> do jParent' <- unsafeManagedPtrCastPtr jParent return jParent' let action' = (fromIntegral . fromEnum) action maybeAcceptLabel <- case acceptLabel of Nothing -> return nullPtr Just jAcceptLabel -> do jAcceptLabel' <- textToCString jAcceptLabel return jAcceptLabel' maybeCancelLabel <- case cancelLabel of Nothing -> return nullPtr Just jCancelLabel -> do jCancelLabel' <- textToCString jCancelLabel return jCancelLabel' result <- gtk_file_chooser_native_new maybeTitle maybeParent action' maybeAcceptLabel maybeCancelLabel checkUnexpectedReturnNULL "fileChooserNativeNew" result result' <- (wrapObject FileChooserNative) result whenJust parent touchManagedPtr freeMem maybeTitle freeMem maybeAcceptLabel freeMem maybeCancelLabel return result' #if ENABLE_OVERLOADING #endif -- method FileChooserNative::get_accept_label -- method type : OrdinaryMethod -- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "Gtk", name = "FileChooserNative"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtFileChooserNative", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "gtk_file_chooser_native_get_accept_label" gtk_file_chooser_native_get_accept_label :: Ptr FileChooserNative -> -- self : TInterface (Name {namespace = "Gtk", name = "FileChooserNative"}) IO CString {- | Retrieves the custom label text for the accept button. /Since: 3.20/ -} fileChooserNativeGetAcceptLabel :: (B.CallStack.HasCallStack, MonadIO m, IsFileChooserNative a) => a {- ^ /@self@/: a @/GtFileChooserNative/@ -} -> m (Maybe T.Text) {- ^ __Returns:__ The custom label, or 'Nothing' for the default. This string is owned by GTK+ and should not be modified or freed -} fileChooserNativeGetAcceptLabel self = liftIO $ do self' <- unsafeManagedPtrCastPtr self result <- gtk_file_chooser_native_get_accept_label self' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- cstringToText result' return result'' touchManagedPtr self return maybeResult #if ENABLE_OVERLOADING data FileChooserNativeGetAcceptLabelMethodInfo instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsFileChooserNative a) => O.MethodInfo FileChooserNativeGetAcceptLabelMethodInfo a signature where overloadedMethod _ = fileChooserNativeGetAcceptLabel #endif -- method FileChooserNative::get_cancel_label -- method type : OrdinaryMethod -- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "Gtk", name = "FileChooserNative"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtFileChooserNative", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "gtk_file_chooser_native_get_cancel_label" gtk_file_chooser_native_get_cancel_label :: Ptr FileChooserNative -> -- self : TInterface (Name {namespace = "Gtk", name = "FileChooserNative"}) IO CString {- | Retrieves the custom label text for the cancel button. /Since: 3.20/ -} fileChooserNativeGetCancelLabel :: (B.CallStack.HasCallStack, MonadIO m, IsFileChooserNative a) => a {- ^ /@self@/: a @/GtFileChooserNative/@ -} -> m (Maybe T.Text) {- ^ __Returns:__ The custom label, or 'Nothing' for the default. This string is owned by GTK+ and should not be modified or freed -} fileChooserNativeGetCancelLabel self = liftIO $ do self' <- unsafeManagedPtrCastPtr self result <- gtk_file_chooser_native_get_cancel_label self' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- cstringToText result' return result'' touchManagedPtr self return maybeResult #if ENABLE_OVERLOADING data FileChooserNativeGetCancelLabelMethodInfo instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsFileChooserNative a) => O.MethodInfo FileChooserNativeGetCancelLabelMethodInfo a signature where overloadedMethod _ = fileChooserNativeGetCancelLabel #endif -- method FileChooserNative::set_accept_label -- method type : OrdinaryMethod -- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "Gtk", name = "FileChooserNative"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtFileChooserNative", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accept_label", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "custom label or %NULL for the default", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gtk_file_chooser_native_set_accept_label" gtk_file_chooser_native_set_accept_label :: Ptr FileChooserNative -> -- self : TInterface (Name {namespace = "Gtk", name = "FileChooserNative"}) CString -> -- accept_label : TBasicType TUTF8 IO () {- | Sets the custom label text for the accept button. 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. /Since: 3.20/ -} fileChooserNativeSetAcceptLabel :: (B.CallStack.HasCallStack, MonadIO m, IsFileChooserNative a) => a {- ^ /@self@/: a @/GtFileChooserNative/@ -} -> Maybe (T.Text) {- ^ /@acceptLabel@/: custom label or 'Nothing' for the default -} -> m () fileChooserNativeSetAcceptLabel self acceptLabel = liftIO $ do self' <- unsafeManagedPtrCastPtr self maybeAcceptLabel <- case acceptLabel of Nothing -> return nullPtr Just jAcceptLabel -> do jAcceptLabel' <- textToCString jAcceptLabel return jAcceptLabel' gtk_file_chooser_native_set_accept_label self' maybeAcceptLabel touchManagedPtr self freeMem maybeAcceptLabel return () #if ENABLE_OVERLOADING data FileChooserNativeSetAcceptLabelMethodInfo instance (signature ~ (Maybe (T.Text) -> m ()), MonadIO m, IsFileChooserNative a) => O.MethodInfo FileChooserNativeSetAcceptLabelMethodInfo a signature where overloadedMethod _ = fileChooserNativeSetAcceptLabel #endif -- method FileChooserNative::set_cancel_label -- method type : OrdinaryMethod -- Args : [Arg {argCName = "self", argType = TInterface (Name {namespace = "Gtk", name = "FileChooserNative"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtFileChooserNative", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cancel_label", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "custom label or %NULL for the default", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gtk_file_chooser_native_set_cancel_label" gtk_file_chooser_native_set_cancel_label :: Ptr FileChooserNative -> -- self : TInterface (Name {namespace = "Gtk", name = "FileChooserNative"}) CString -> -- cancel_label : TBasicType TUTF8 IO () {- | Sets the custom label text for the cancel button. 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. /Since: 3.20/ -} fileChooserNativeSetCancelLabel :: (B.CallStack.HasCallStack, MonadIO m, IsFileChooserNative a) => a {- ^ /@self@/: a @/GtFileChooserNative/@ -} -> Maybe (T.Text) {- ^ /@cancelLabel@/: custom label or 'Nothing' for the default -} -> m () fileChooserNativeSetCancelLabel self cancelLabel = liftIO $ do self' <- unsafeManagedPtrCastPtr self maybeCancelLabel <- case cancelLabel of Nothing -> return nullPtr Just jCancelLabel -> do jCancelLabel' <- textToCString jCancelLabel return jCancelLabel' gtk_file_chooser_native_set_cancel_label self' maybeCancelLabel touchManagedPtr self freeMem maybeCancelLabel return () #if ENABLE_OVERLOADING data FileChooserNativeSetCancelLabelMethodInfo instance (signature ~ (Maybe (T.Text) -> m ()), MonadIO m, IsFileChooserNative a) => O.MethodInfo FileChooserNativeSetCancelLabelMethodInfo a signature where overloadedMethod _ = fileChooserNativeSetCancelLabel #endif