知我者谓我心忧,不知我者谓我何求。
顺天命者,悲;逆,亡?
pidgin(gaim)插件开发之初级教程
上一篇 /
下一篇 2007-06-11 01:01:26
/ 个人分类:备忘
查看( 4225 ) /
评论( 3 )
抛砖引玉之用。发现自己工作以后实在没有时间能像在大学里那样专注于技术了。
.Z%F\5n8X6l0
cl#Ro1Bt!y0
pidgin相信是每个使用linux的朋友的必备工具。如果有兴趣的话,可以自己开发些插件。
LUPA开源社区r`4ter2C
目前计划做一个保存最近联系人的功能。不然在几百个好友里找一个刚给我发消息的人真是很麻烦。
`d5m$mD;\'_p5k;ti0
$\D+t d2Jj0
翻译了个开发pidgin插件的入门教程,提供一个骨架(skelecton)源码。
*G+_9H0_f0mcE0
下载pidgin的源码
CODE:
u(y}eoa4h0sudo apt-get source pidgin现有的插件源码在 /pidgin/plugins 目录里,可以参考下,尤其是看看比较简单的 history.c 文件。
;H1Z9X)?
o
B&ru p0
我们先从hello world开始吧。
LUPA开源社区h*HSET/jX}[
LUPA开源社区t%hnUG2I$H3~!T
(
}E;XPR$Y-`0
技术基础:
LUPA开源社区r
I9j4Ci
C语言开发
/A,U'wu_;eI0
automake autoconf 使用
LUPA开源社区.u8FK)_;w#jc
Lq
)
CODE:LUPA开源社区Dw \/dGv
#define PURPLE_PLUGINS //必须定义LUPA开源社区mUn*j9~+P I
LUPA开源社区 WBT{(W jnn7x
#include <glib.h>
yvh${t7]|3o2W0
#include "notify.h"
kne!q2U'a$Kh0
#include "plugin.h"LUPA开源社区f {2j }(U
Y:}}sB0
#include "version.h"LUPA开源社区E#p@Q&p3uu/h5O
kj
s+r D6xXQ0
static gboolean
%z#C7H9|"U$cc0
plugin_load(PurplePlugin *plugin) {
7Suy{2A3lC^(j%L`0
LUPA开源社区$H;|+f2n_8?+NP
purple_notify_message(plugin, PURPLE_NOTIFY_MSG_INFO, "Hello World!",LUPA开源社区Ek)@hd
Z9f
zl.I7f?,{0
"This is the Hello World! plugin ", NULL, NULL, NULL);
y&x.d(IjZD0
6xZu G:}r0
return TRUE;
)W&ELqh_$o3?0
LUPA开源社区 ?"x9P.y?;}/P8A
}
)Xp!fGoT0
LUPA开源社区1V^c7D!Z|(p)a
static PurplePluginInfo info = { //插件相关属性的定义
2F,M'~P^rJ _0
LUPA开源社区q%p;gl Ln
PURPLE_PLUGIN_MAGIC, //必须强制定义,没什么解释的。LUPA开源社区$TM.KM't#yz
LUPA开源社区&YV4u
b-aE1[&rb*](J
PURPLE_MAJOR_VERSION, //帮助libpurple识别插件版本号, (libpurple是IM的图形控件)
+c9w:s3xa0
;G%Yt;^Z!k0
PURPLE_MINOR_VERSION,LUPA开源社区i_1d*Z X6O
?r;K
YA
LUPA开源社区J
h#|t)c{
PURPLE_PLUGIN_STANDARD, //有四个数值,PURPLE_PLUGIN_UNKNOWN 表示不使用
!w
pJ*m#jk#K?
[6w0
LUPA开源社区t)c6_
J)Z$wl
//PURPLE_PLUGIN_STANDARD 标准插件
!smD*P9hQq9U;dN0
LUPA开源社区$PIk
QzX'G
//PURPLE_PLUGIN_LOADER 为PERL 或者TCL 等语言开发的插件作准备LUPA开源社区 r&\8B)iJppv
LUPA开源社区_Y1DR N
//PURPLE_PLUGIN_PROTOCOL 为各种通信协议准备的 比如QQ插件
'SUA^O0es"rLG}5h$d k0
jn5]%U6m-RT0
NULL, //是否涉及对界面的控制LUPA开源社区5G'i`V
Pd6]
?N&wVk#~-C0
0, //是否在插件列表里显示LUPA开源社区A'epIh-DI$R
LUPA开源社区E;b2qEI8c.{9|w
NULL, //是否采用GlistLUPA开源社区Gq%[qkcm:K
R4c1I,M(U%MZ0
PURPLE_PRIORITY_DEFAULT, //优先级LUPA开源社区.Hj;w1~a@;j'co
b8i AF;T/g(n0
"core-hello_world", //插件编号,最后面会用到的。
y gF0Az(c0
H cB'r M0
;N6u)y%]1sZc0
"Hello World!", //插件名称
l)R!RhH;h+i-_}0
m@Z-r!n)vP0
VERSION, //版本
;_k5Am?0
LUPA开源社区2MK*Ck!B#z
a;_kOW h"B0
"Hello World Plugin", //插件简介LUPA开源社区A:{!K/VwD?.z
k#Io4p/bMUi0
"Hello World Plugin", //插件描述LUPA开源社区(k2N|O"V/{$@Yq
9X,d._Mad/I3ea0
NULL, //插件作者和邮箱等内容
]hzq RZ&r/e0
LUPA开源社区#Q tRhg~D
iXR`+Z#sg)t0
"http://helloworld.tld", //插件的联系网站地址LUPA开源社区f+W5s#s @$A'C0^6H
7Y$L,N(u(Iu6F0
plugin_load, //插件的加载函数,
F)Azn+G0
s,st-aI0
NULL, //定义插件加载失败时所调用的函数LUPA开源社区7] }/F"A Mv-J&@
_^:YT} kG)z0
NULL, //当libpurple销毁本插件时调用的函数LUPA开源社区"pu#h"P1W
F@8s"Ye_.m$Y_0
T&xF3h!r!?X+y+u-mnn0
NULL,
#[(s#b
n
JNc!k0
LUPA开源社区a`eE#lq'O
NULL,LUPA开源社区7Agw_b
c["ryCc0
NULL,LUPA开源社区9G?;Faus
LUPA开源社区*al0~*Xa2?-X(s
NULL
z,zN3Ez
o]0
LUPA开源社区.V Ko
[
F5KsV
};LUPA开源社区{-e
c
cz2sh:g
\
LUPA开源社区9DqG"@5T)L7s;z
static voidLUPA开源社区b_M"h:Y*mv+d*et*Ph
0q![c yw&`/RRZ3z:{0
init_plugin(PurplePlugin *plugin)
#R~I9AP/VtE0
LUPA开源社区G4]Gv:j
{LUPA开源社区X0OEc}QQ7M+L
X-w3t!E }0
}LUPA开源社区N
\PU9b{
X
LUPA开源社区|+PLvI J3R9j_
_gv7P
PURPLE_INIT_PLUGIN(hello_world, init_plugin, info); //加载以上是一个最基本的插件骨架,加载后会弹出一个提示消息。
论坛模式
推荐
收藏
分享给好友
管理
TAG:
-
sanool
发布于2007-06-11 01:06:56
-
通过 apt-get 得到的源码是干净的源码 不包括开发用的系列脚本
D&Cr"KaT x|开源社区
0m9jNt^;Zo&rLUPA,开源社区,开源,开源联盟,开源论坛,开源信息,开源项目,Open source,linux,软件下载,产业化社区,项目交易,人才库,创业园区,讨论区,紧急援助如果需要的话 只能到官方通过 svn 获得
J!P*}G#PV"D(QLUPA,开源社区,开源,开源联盟,开源论坛,开源信息,开源项目,Open source,linux,软件下载,产业化社区,项目交易,人才库,创业园区,讨论区,紧急援助V_v5F!m
]'k/T*U
svn co https://pidgin.svn.sourceforge.net/svnroot/pidgin pidgin
-\vI0{fuLLUPA开源社区
c*\ B!g'ML#Lwww.lupaworld.com这样 你修改了makefile.am 之后 再 autogen.sh 一下就好了
-
fluke
发布于2007-06-11 02:21:10
-
留个脚印。这两天有时间checkout下来看看。LUPA开源社区WiP5R7V W
LUPA,开源社区,开源,开源联盟,开源论坛,开源信息,开源项目,Open source,linux,软件下载,产业化社区,项目交易,人才库,创业园区,讨论区,紧急援助RjET8I
sanool的idea不错,这个插件挺实用的。
-
someone
发布于2007-06-11 09:55:32
-
当你发现,自己呼吁大家让银行开放插件时候,LINUX却无人接手
5d,h*Hj'a6sLUPA开源社区当你呼吁大家开发linux密码管理小工具,却无人迎战#C'pp_M2jN
中国最全面的开源推进联盟社区,围绕自由、开源软件与代码为研究主题.开源软件,开源论坛,开源信息,开源社区,开源项目, 开源blog,开源系统,开源新闻系统,信息发布系统,开源,.net 开源系统,Open source;oi6r];m[$~ky B
那么不如作点实际事情:
FJI-[?#cn|开源社区 培养更多的人,让他们掌握工具,
RS.se.Hr,pX)A|开源社区 今天大学毕业的人,至少会打开vc IDE,不用写一句代码,自动编译会有个程序运行
H&P`&Jf7YLUPA开源社区 但是不会有大学生毕业后能编译一个linux下的运行NFS系统。
2h1oL2xbwww.lupaworld.comwww.lupaworld.comzsPB
D_k
if you have sentiment sail to me : someone@lupaworld.com