引用源:
http://maemo.org/api_refs/5.0/5.0-final/libhildondesktop/libhildondesktop-Plugin-Definition-Macros.html
Plugin宏定义Plugin 宏定义 —支持在对桌面添加插件应用程序 |
概要:
#include <libhildondesktop/libhildondesktop.h>
#define HD_DEFINE_PLUGIN_MODULE (TN, t_n, T_P)
#define HD_DEFINE_PLUGIN_MODULE_EXTENDED (TN, t_n, T_P, CODE, CODE_LOAD, CODE_UNLOAD)
#define HD_PLUGIN_MODULE_SYMBOLS (t_n)
#define HD_PLUGIN_MODULE_SYMBOLS_CODE (t_n, CODE_LOAD, CODE_UNLOAD)
说明:
当定义桌面插件函数时,应该使用HD_DEFINE_PLUGIN()
或者 HD_DEFINE_PLUGIN_MODULE_EXTENDED()
宏定义。
他们和宏G_DEFINE_DYNAMIC_TYPE()函数相似,但是 它能在加载模块时将代码动态的注册到class中,以执行。
Example 1. 用 HD_DEFINE_PLUGIN_MODULE()
来定义一个Home widget( Home widget 即为放在桌面上的应用程序 )
#ifndef __EXAMPLE_HOME_APPLET_H__
#define __EXAMPLE_HOME_APPLET_H__
#include <libhildondesktop/libhildondesktop.h>
G_BEGIN_DECLS
typedef struct _ExampleHomeApplet ExampleHomeApplet;
typedef struct _ExampleHomeAppletClass ExampleHomeAppletClass;
struct _ExampleHomeApplet
{ HDHomePluginItem parent; };
struct _ExampleHomeAppletClass
{
HDHomePluginItemClass parent;
};
GType example_home_applet_get_type (void);
G_END_DECLS
#endif
#include "example-home-applet.h"
HD_DEFINE_PLUGIN_MODULE (ExampleHomeApplet, example_home_applet, HD_TYPE_HOME_PLUGIN_ITEM);
static void
example_home_applet_class_finalize (ExampleHomeAppletClass *klass)
{
}
static void
example_home_applet_class_init (ExampleHomeAppletClass *klass)
{
}
static void
example_home_applet_init (ExampleHomeApplet *applet)
{
}
Details
#define HD_DEFINE_PLUGIN_MODULE(TN, t_n, T_P)
Register an object supplied by a plugin in Hildon Desktop.
功能:向Hildon Desktop中注册一个object
同时参考:G_DEFINE_DYNAMIC_TYPE()
.
TN : | [一般是object的结构体名称]这个object 类型名称, in Camel case.所有的名称单词的首字母要大写 (例如: ObjectType) |
t_n : | [一般是plugin入口函数名称]这个object 类型名称, 所有单词小写,并且每个单词间用 '_'分隔开. (例如: object_type) |
T_P : | 父类的 GType 类型 (例如: STATUSBAR_TYPE_ITEM ) |
HD_DEFINE_PLUGIN_MODULE_EXTENDED()
#define HD_DEFINE_PLUGIN_MODULE_EXTENDED(TN, t_n, T_P, CODE, CODE_LOAD, CODE_UNLOAD)
Register an object supplied by a plugin in Hildon Desktop.
See also G_DEFINE_DYNAMIC_TYPE()
.
TN : | 一般是object的结构体名称]这个object 类型名称, in Camel case.所有的名称单词的首字母要大写 (例如: ObjectType) |
t_n : | [一般是plugin入口函数名称]这个object 类型名称, 所有单词小写,并且每个单词间用 '_'分隔开. (例如: object_type) |
T_P : | 父类的 GType 类型 (例如: STATUSBAR_TYPE_ITEM ) |
CODE : | 定制代码,加入 *_register_type() 名称类型的函数 |
CODE_LOAD : | 当加载插件时需要执行的函数 |
CODE_UNLOAD : |
卸载插件时需要执行的函数 |
HD_PLUGIN_MODULE_SYMBOLS()
#define HD_PLUGIN_MODULE_SYMBOLS(t_n)
定义一个外部函数来加载或卸载模块,它别宏 HD_DEFINE_PLUGIN_MODULE()
所调用,并且一般不应该去直接调用这个宏
t_n : | [一般是plugin入口函数名称]这个object 类型名称, 所有单词小写,并且每个单词间用 '_'分隔开. (例如: object_type) |
HD_PLUGIN_MODULE_SYMBOLS_CODE()
#define HD_PLUGIN_MODULE_SYMBOLS_CODE(t_n, CODE_LOAD, CODE_UNLOAD)
Defines exported functions to load and unload the modules. It is used by _EXTENDED() and should usually not used directly.
t_n : | The name of the object type, in lowercase, with words separated by '_'. (ex: object_type) |
CODE_LOAD : | code executed when the plugin is loaded. |
CODE_UNLOAD : | code executed when the plugin is unloaded. |