Interfacing Raku to Gnome GTK+

Class hierargy

Below there is a table of the object hierarchy taken from the developers page and is used here to show what is implemented and what is deprecated in Gio. Module path names are removed from the Raku modules when in Gnome::Gio. E.g. Application is implemented as Gnome::Gio::Application. ├─✗ in front of a Gio module means that it is deprecated or will not be implemented for other reasons. Many of these will not be implemented ⛔ because Raku has a lot of I/O routines that it is not needed.

Tree of Gtk C structures                  Raku module
----------------------------------------  ------------------------------------
TopLevelClassSupport                      Gnome::N::TopLevelClassSupport
│
GObject                                   Gnome::GObject::Object
├── GAppInfoMonitor                       AppInfoMonitor
├── GAppLaunchContext                     AppLaunchContext
├── GApplicationCommandLine               ApplicationCommandLine
├── GApplication                          Application
├── GInputStream                          ⛔
│   ├── GFilterInputStream                ⛔
│   │   ├── GBufferedInputStream          ⛔
│   │   │   ╰── GDataInputStream          ⛔
│   │   ╰── GConverterInputStream         ⛔
│   ├── GFileInputStream                  ⛔
│   ├── GMemoryInputStream                ⛔
│   ╰── GUnixInputStream                  ⛔
├── GOutputStream                         ⛔
│   ├── GFilterOutputStream               ⛔
│   │   ├── GBufferedOutputStream         ⛔
│   │   ├── GConverterOutputStream        ⛔
│   │   ╰── GDataOutputStream             ⛔
│   ├── GFileOutputStream                 ⛔
│   ├── GMemoryOutputStream               ⛔
│   ╰── GUnixOutputStream                 ⛔
├── GBytesIcon
├── GCancellable
├── GCharsetConverter
├── GCredentials
├── GDBusActionGroup
├── GDBusAuthObserver
├── GDBusConnection
├── GDBusInterfaceSkeleton
├── GMenuModel                            MenuModel
│   ├── GDBusMenuModel
│   ╰── GMenu                             Menu
├── GDBusMessage
├── GDBusMethodInvocation
├── GDBusObjectManagerClient
├── GDBusObjectManagerServer
├── GDBusObjectProxy
├── GDBusObjectSkeleton
├── GDBusProxy
├── GDBusServer
├── GDesktopAppInfo
├── GEmblem                               Emblem
├── GEmblemedIcon                         EmblemedIcon
├── GFileEnumerator
├── GFileIcon                             FileIcon
├── GFileInfo                             ⛔FileInfo, Raku does it properly
├── GIOStream                             ⛔
│   ├── GFileIOStream                     ⛔
│   ├── GSimpleIOStream                   ⛔
│   ├── GSocketConnection                 ⛔
│   │   ├── GTcpConnection                ⛔
│   │   │   ╰── GTcpWrapperConnection     ⛔
│   │   ╰── GUnixConnection               ⛔
│   ╰── GTlsConnection                    ⛔
├── GFileMonitor
├── GFilenameCompleter
├── GInetAddress
├── GInetAddressMask
├── GSocketAddress                        ⛔
│   ├── GInetSocketAddress                ⛔
│   │   ╰── GProxyAddress                 ⛔
│   ├── GNativeSocketAddress              ⛔
│   ╰── GUnixSocketAddress                ⛔
├── GTypeModule
│   ╰── GIOModule
├── GListStore
├── GMenuAttributeIter                    MenuAttributeIter
├── GMenuItem                             MenuItem
├── GMenuLinkIter                         MenuLinkIter
├── GMountOperation
├── GNetworkAddress
├── GNetworkService
├── GNotification                         Notification
├── GPermission
│   ╰── GSimplePermission
├── GPropertyAction
├── GSocketAddressEnumerator
│   ╰── GProxyAddressEnumerator
├── GResolver
├── GSettingsBackend
├── GSettings
├── GSimpleAction                         SimpleAction
├── GSimpleActionGroup                    SimpleActionGroup
├── GSimpleAsyncResult
├── GSimpleProxyResolver
├── GSocketClient
├── GSocketControlMessage
│   ├── GUnixCredentialsMessage
│   ╰── GUnixFDMessage
├── GSocket                               ⛔
├── GSocketListener                       ⛔
│   ╰── GSocketService                    ⛔
│       ╰── GThreadedSocketService        ⛔
├── GSubprocess
├── GSubprocessLauncher
├── GTask
├── GTestDBus
├── GThemedIcon
├── GTlsCertificate
├── GTlsDatabase
├── GTlsInteraction
├── GTlsPassword
├── GUnixFDList
├── GUnixMountMonitor
├── GVfs
├── GVolumeMonitor
├── GZlibCompressor
╰── GZlibDecompressor

GInterface
├── GAction                               Action
├── GActionGroup                          ActionGroup
├── GActionMap                            ActionMap
├── GAppInfo                              AppInfo implemented as a class
├── GAsyncInitable
├── GAsyncResult
├── GSeekable
├── GIcon                                 Icon
├── GLoadableIcon                         ⛔LoadableIcon
├── GConverter
├── GInitable
├── GPollableInputStream
├── GPollableOutputStream
├── GDatagramBased
├── GRemoteActionGroup
├── GDBusInterface
├── GDBusObject
├── GDBusObjectManager
├── GDesktopAppInfoLookup
├── GDrive
├── GDtlsClientConnection
├── GDtlsConnection
├── GDtlsServerConnection
├── GFileDescriptorBased
├── GFile                                 File implemented as a class
├── GSocketConnectable
├── GListModel
├── GMount
├── GNetworkMonitor
├── GProxy
├── GProxyResolver
├── GTlsBackend
├── GTlsClientConnection
├── GTlsFileDatabase
├── GTlsServerConnection
╰── GVolume

GFlags                                    Enums. GFlags and Enums are defined
GEnum                                            in one file

GBoxed
├── GDBusAnnotationInfo
├── GDBusArgInfo
├── GDBusInterfaceInfo
├── GDBusMethodInfo
├── GDBusNodeInfo
├── GDBusPropertyInfo
├── GDBusSignalInfo
├── GFileAttributeInfoList
├── GFileAttributeMatcher
├── GResource                             Resource
├── GSettingsSchema
├── GSettingsSchemaKey
├── GSettingsSchemaSource
├── GSrvTarget
├── GUnixMountEntry
╰── GUnixMountPoint