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