00001
00002
00003 #ifndef _LIBGNOMEMM_MODULEINFO_H
00004 #define _LIBGNOMEMM_MODULEINFO_H
00005
00006 #include <glibmm.h>
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include <glibmm/containers.h>
00030 #include <libgnome/gnome-program.h>
00031
00032
00033 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00034 extern "C" { typedef struct _GnomeModuleInfo GnomeModuleInfo; }
00035 #endif
00036
00037 namespace Gnome
00038 {
00039
00040 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00041
00042 GnomeModuleInfo* gnomemm_module_info_copy(const GnomeModuleInfo* src);
00043 void gnomemm_module_info_free(GnomeModuleInfo* src);
00044 #endif //DOXYGEN_SHOULD_SKIP_THIS
00045
00046 class ModuleInfo
00047 {
00048 public:
00049 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00050 typedef ModuleInfo CppObjectType;
00051 typedef GnomeModuleInfo BaseObjectType;
00052
00053 static GType get_type() G_GNUC_CONST;
00054 #endif
00055
00056
00057 explicit ModuleInfo(GnomeModuleInfo* gobject, bool make_a_copy = true);
00058
00059 ModuleInfo(const ModuleInfo& other);
00060 ModuleInfo& operator=(const ModuleInfo& other);
00061
00062 ~ModuleInfo();
00063
00064 void swap(ModuleInfo& other);
00065
00066 GnomeModuleInfo* gobj() { return gobject_; }
00067 const GnomeModuleInfo* gobj() const { return gobject_; }
00068
00069
00070 GnomeModuleInfo* gobj_copy() const;
00071
00072 protected:
00073 GnomeModuleInfo* gobject_;
00074
00075 private:
00076
00077 public:
00078
00079
00080 ModuleInfo();
00081
00083 ModuleInfo(const gchar* name, const gchar* version, const gchar* description);
00084
00085
00086 Glib::ustring get_name() const;
00087 Glib::ustring get_version() const;
00088 Glib::ustring get_description() const;
00089
00090
00091
00092 void set_requirements(GnomeModuleRequirement* requirements);
00093
00094 void set_post_args_parse(GnomeModuleHook function);
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107 };
00108
00109 }
00110
00111
00112 namespace Gnome
00113 {
00114
00116 inline void swap(ModuleInfo& lhs, ModuleInfo& rhs)
00117 { lhs.swap(rhs); }
00118
00119 }
00120
00121 namespace Glib
00122 {
00123
00125 Gnome::ModuleInfo wrap(GnomeModuleInfo* object, bool take_copy = false);
00126
00127 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00128 template <>
00129 class Value<Gnome::ModuleInfo> : public Glib::Value_Boxed<Gnome::ModuleInfo>
00130 {};
00131 #endif
00132
00133 }
00134
00135 #endif
00136