在Maemo上开发Hildon插件

引用源:

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


HD_DEFINE_PLUGIN_MODULE()
#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 HD_DEFINE_PLUGIN_MODULE _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.
  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值