// -*- c++ -*- // Generated by gtkmmproc -- DO NOT MODIFY! #ifndef _GIOMM_VOLUME_H #define _GIOMM_VOLUME_H #include // -*- Mode: C++; indent-tabs-mode: nil; c-basic-offset: 2 -*- /* Copyright (C) 2007 The gtkmm Development Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include //#include //#include #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef struct _GVolumeIface GGVolumeIface; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef struct _GVolume GVolume; typedef struct _GVolumeClass GVolumeClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Gio { class Volume_Class; } // namespace Gio namespace Gio { // Making a forward declaration here to avoid circular dependency. // file.hg already includes volume.h. class File; class Drive; /** The Volume interface represents user-visible objects that can be mounted. * * Mounting a Volume instance is an asynchronous operation. For more information about asynchronous operations, see AsyncReady and SimpleAsyncReady. To * mount a GVolume, first call mount(), optionally providing a MountOperation object and a SlotAsyncReady callback. * * Typically, you will not want to provide a MountOperation if automounting all volumes when a desktop session starts since it's not desirable to * put up a lot of dialogs asking for credentials. * * The callback will be fired when the operation has resolved (either with success or failure), and a AsyncReady structure will be passed to the callback. * That callback should then call g_volume_mount_finish() with the GVolume instance and the GAsyncReady data to see if the operation was completed * successfully. If an error is present when finish() is called, then it will be filled with any error information. * * @newin2p16 */ class Volume : public Glib::Interface { #ifndef DOXYGEN_SHOULD_SKIP_THIS public: typedef Volume CppObjectType; typedef Volume_Class CppClassType; typedef GVolume BaseObjectType; typedef GVolumeIface BaseClassType; private: friend class Volume_Class; static CppClassType volume_class_; // noncopyable Volume(const Volume&); Volume& operator=(const Volume&); protected: Volume(); // you must derive from this class /** Called by constructors of derived classes. Provide the result of * the Class init() function to ensure that it is properly * initialized. * * @param interface_class The Class object for the derived type. */ explicit Volume(const Glib::Interface_Class& interface_class); public: // This is public so that C++ wrapper instances can be // created for C instances of unwrapped types. // For instance, if an unexpected C type implements the C interface. explicit Volume(GVolume* castitem); protected: #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: virtual ~Volume(); static void add_interface(GType gtype_implementer); #ifndef DOXYGEN_SHOULD_SKIP_THIS static GType get_type() G_GNUC_CONST; static GType get_base_type() G_GNUC_CONST; #endif ///Provides access to the underlying C GObject. GVolume* gobj() { return reinterpret_cast(gobject_); } ///Provides access to the underlying C GObject. const GVolume* gobj() const { return reinterpret_cast(gobject_); } private: public: /** Gets the name of @a volume. * @return The name for the given @a volume. The returned string should * be freed when no longer needed. */ std::string get_name() const; /** Gets the UUID for the @a volume. The reference is typically based on * the file system UUID for the volume in question and should be * considered an opaque string. Returns 0 if there is no UUID * available. * @return The UUID for @a volume or 0 if no UUID can be computed. */ std::string get_uuid() const; /** Gets the icon for @a volume. * @return A Icon. */ Glib::RefPtr get_icon(); /** Gets the icon for @a volume. * @return A Icon. */ Glib::RefPtr get_icon() const; /** Gets the drive for the @a volume. * @return A Drive or 0 if @a volume is not associated with a drive. */ Glib::RefPtr get_drive(); /** Gets the drive for the @a volume. * @return A Drive or 0 if @a volume is not associated with a drive. */ Glib::RefPtr get_drive() const; /** Gets the mount for the @a volume. * @return A Mount or 0 if @a volume isn't mounted. */ Glib::RefPtr get_mount(); /** Gets the mount for the @a volume. * @return A Mount or 0 if @a volume isn't mounted. */ Glib::RefPtr get_mount() const; /** Checks if a volume can be mounted. * @return true if the @a volume can be mounted. false otherwise. */ bool can_mount() const; /** Checks if a volume can be ejected. * @return true if the @a volume can be ejected. false otherwise. */ bool can_eject() const; /** Returns: true if the volume should be automatically mounted. * @return true if the volume should be automatically mounted. */ bool should_automount() const; /** Mounts a volume. * This is an asynchronous operation, and is finished by calling mount_finish() with the AsyncResult data returned in the callback slot. * * @param slot A callback which will be called when the operation is completed or canceled. * @param cancellable A cancellable object which can be used to cancel the operation. * @param mount_operation A mount operation. */ void mount(const Glib::RefPtr& mount_operation, const SlotAsyncReady& slot, const Glib::RefPtr& cancellable, MountMountFlags flags = MOUNT_MOUNT_NONE); /** Mounts a volume. * This is an asynchronous operation, and is finished by calling mount_finish() with the AsyncResult data returned in the callback slot. * * @param slot A callback which will be called when the operation is completed or canceled. * @param mount_operation A mount operation. */ void mount(const Glib::RefPtr& mount_operation, const SlotAsyncReady& slot, MountMountFlags flags = MOUNT_MOUNT_NONE); /** Mounts a volume. * * @param mount_operation A mount operation. */ void mount(const Glib::RefPtr& mount_operation, MountMountFlags flags = MOUNT_MOUNT_NONE); /** Mounts a volume. */ void mount(MountMountFlags flags = MOUNT_MOUNT_NONE); /** Finishes mounting a volume. * @param result A AsyncResult. * @return true, false if operation failed. */ #ifdef GLIBMM_EXCEPTIONS_ENABLED bool mount_finish(const Glib::RefPtr& result); #else bool mount_finish(const Glib::RefPtr& result, std::auto_ptr& error); #endif //GLIBMM_EXCEPTIONS_ENABLED /** Ejects a volume. * This is an asynchronous operation, and is finished by calling eject_finish() with the AsyncResult data returned in the callback slot. * * @param slot A callback which will be called when the operation is completed or canceled. * @param cancellable A cancellable object which can be used to cancel the operation. * @param flags Flags affecting the unmount if required for eject. */ void eject(const SlotAsyncReady& slot, const Glib::RefPtr& cancellable, MountUnmountFlags flags = MOUNT_UNMOUNT_NONE); /** Ejects a volume. * This is an asynchronous operation, and is finished by calling eject_finish() with the AsyncResult data returned in the callback slot. * * @param slot A callback which will be called when the operation is completed or canceled. * @param flags Flags affecting the unmount if required for eject. */ void eject(const SlotAsyncReady& slot, MountUnmountFlags flags = MOUNT_UNMOUNT_NONE); /** Ejects a volume. * This is an asynchronous operation, and is finished by calling eject_finish() with the AsyncResult data returned in the callback slot. * * @param flags Flags affecting the unmount if required for eject. */ void eject(MountUnmountFlags flags = MOUNT_UNMOUNT_NONE); /** Finishes ejecting a volume. * @param result A AsyncResult. * @return true, false if operation failed. */ #ifdef GLIBMM_EXCEPTIONS_ENABLED bool eject_finish(const Glib::RefPtr& result); #else bool eject_finish(const Glib::RefPtr& result, std::auto_ptr& error); #endif //GLIBMM_EXCEPTIONS_ENABLED /** Gets the identifier of the given kind for @a volume. * See the introduction * for more information about volume identifiers. * @param kind The kind of identifier to return. * @return A newly allocated string containing the * requested identfier, or 0 if the Volume * doesn't have this kind of identifier. */ std::string get_identifier(const std::string& kind) const; /** Gets the kinds of identifiers * that @a volume has. Use Glib::volume_get_identifer() to obtain * the identifiers themselves. * @return A 0-terminated array of strings containing * kinds of identifiers. Use Glib::strfreev() to free. */ Glib::StringArrayHandle enumerate_identifiers() const; Glib::RefPtr get_activation_root(); Glib::RefPtr get_activation_root() const; /** * @par Prototype: * void on_my_%changed() */ Glib::SignalProxy0< void > signal_changed(); /** * @par Prototype: * void on_my_%removed() */ Glib::SignalProxy0< void > signal_removed(); //_WRAP_VFUNC(std::string get_name(), get_name) //_WRAP_VFUNC(Glib::RefPtr get_icon(), get_icon) //_WRAP_VFUNC(std::string get_uuid(), get_uuid) //_WRAP_VFUNC(Glib::RefPtr get_drive(), get_drive) //_WRAP_VFUNC(Glib::RefPtr get_mount(), get_mount) //_WRAP_VFUNC(bool can_mount(), can_mount) //_WRAP_VFUNC(bool can_eject(), can_eject) //_WRAP_VFUNC(void mount_fn(GMountMountFlags flags, GMountOperation* mount_operation, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer user_data), mount_fn) //TODO: Rename to mount()? //_WRAP_VFUNC(bool mount_finish(GAsyncResult* result, GError** error), mount_finish) //_WRAP_VFUNC(void eject(GMountUnmountFlags flags, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer user_data), eject) //_WRAP_VFUNC(bool eject_finish(GAsyncResult* result, GError** error), eject_finish) //_WRAP_VFUNC(std::string get_identifier(const std::string& kind), get_identifier) //TODO: Use an ArrayHandle. //_WRAP_VFUNC(char** enumerate_identifiers(), enumerate_identifiers) //_WRAP_VFUNC(bool should_automount(), should_automount) public: public: //C++ methods used to invoke GTK+ virtual functions: #ifdef GLIBMM_VFUNCS_ENABLED #endif //GLIBMM_VFUNCS_ENABLED protected: //GTK+ Virtual Functions (override these to change behaviour): #ifdef GLIBMM_VFUNCS_ENABLED #endif //GLIBMM_VFUNCS_ENABLED //Default Signal Handlers:: #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED virtual void on_changed(); virtual void on_removed(); #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED }; } // namespace Gio namespace Glib { //Pre-declare this so we can use it in TypeTrait: Glib::RefPtr wrap(GVolume* object, bool take_copy); namespace Container_Helpers { /** This specialization of TypeTraits exists * because the default use of Glib::wrap(GObject*), * instead of a specific Glib::wrap(GSomeInterface*), * would not return a wrapper for an interface. */ template <> struct TypeTraits< Glib::RefPtr > { typedef Glib::RefPtr CppType; typedef GVolume* CType; typedef GVolume* CTypeNonConst; static CType to_c_type (const CppType& item) { return Glib::unwrap (item); } static CppType to_cpp_type (const CType& item) { //Use a specific Glib::wrap() function, //because CType has the specific type (not just GObject): return Glib::wrap(item, true /* take_copy */); } static void release_c_type (CType item) { GLIBMM_DEBUG_UNREFERENCE(0, item); g_object_unref(item); } }; } // Container_Helpers } // Glib namespace Glib { /** A Glib::wrap() method for this object. * * @param object The C instance. * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref. * @result A C++ instance that wraps this C instance. * * @relates Gio::Volume */ Glib::RefPtr wrap(GVolume* object, bool take_copy = false); } // namespace Glib #endif /* _GIOMM_VOLUME_H */