From: Christian A. <ia...@gm...> - 2007-02-04 03:11:42
|
Hi! Can somebody please provide me some pointers on how I can learn to develop applications that use libgaim? HACKING seems to be too old and the doxygen-generated docs are good references but don't provide a good overview on how things work. I just want to know the big picture first before getting burrowed in the source code. :) |
From: Mark D. <ma...@ki...> - 2007-02-04 19:59:40
|
On Sun, 4 Feb 2007 11:11:41 +0800, Christian Alis wrote > Hi! > > Can somebody please provide me some pointers on how I can learn to > develop applications that use libgaim? HACKING seems to be too old > and the doxygen-generated docs are good references but don't provide > a good overview on how things work. I just want to know the big picture > first before getting burrowed in the source code. :) An excellent question! How's this? libgaim is intended to be the core of an IM program. When using libgaim, you'll basically be writing a UI for this core chunk of code. So Gaim is really just a GTK+ frontend to libgaim, Gaim-text is an ncurses frontend, and Adium is a Cocoa frontend. Your program provides the int main() function. Your main function will call gaim_core_init(), which initializes libgaim. Your main function will also register a whole bunch of "callback" functions that are called by libgaim any time there is something to tell the user. For example, when libgaim receives an IM it'll call your function for handling an incoming IM. When one of your buddies signs online libgaim will call your function to update the buddylist. If your user fetches someones info then you'll call a libgaim function that sends the appropriate message across the network. Then libgaim will get a response and call your function for handling buddy info. Is that helpful? Too detailed? Not detailed enough? Your feedback is important, because at some point we'll be putting some of this info online. -Mark |
From: Adil <ad...@ya...> - 2007-02-04 20:11:58
|
--- Christian Alis <ia...@gm...> wrote: > > Can somebody please provide me some pointers on how I can learn to > develop applications that use libgaim? HACKING seems to be too old > and the doxygen-generated docs are good references but don't provide a > good overview on how things work. I just want to know the big picture > first before getting burrowed in the source code. :) > Applications that use libgaim provide the appropriate functions to perform the UI operations invoked by the core (libgaim). This is done by populating the uiops structures (eg. GaimAccountUiOps, GaimBlistUiOps etc.) and making them available to the core (by calling gaim_accounts_set_ui_ops, gaim_blist_set_ui_ops etc.). The functions in the uiops are triggered at specific events, eg. the buddylist-uiops are used to update the buddy list when a new buddy is added, or removed, or the status of a buddy is changed etc. The same happens for conversations, logging etc. While the uiops are sufficient for most of the ui operations, it's likely that you will want to use the gaim-signals as well to fine-tune some stuff. libgaim uses the glib mainloop to do all the things. The application wanting to use libgaim will [likely] have to do the same. The application will first initialize the core (gaim_core_init), add plugin-search paths, load the saved plugins, prefs etc. If you have the source, I suggest you take a look at console/gntgaim.c:init_libgaim to get an idea of what's required to setup libgaim for your application. Sadrul __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com |
From: Christian A. <ia...@gm...> - 2007-02-05 02:55:43
|
Thanks for the replies. I'm actually creating a daemon that uses libgaim. My immediate objective now is to login (connect) an account. Here's what I did based on init_libgaim: add plugins search path set debugging to true (obviously for debugging purposes only) gaim_core_set_ui_ops() (all fields are pointers to an empty function) gaim_eventloop_set_ui_ops() (all fields copied from console's eventloop_ops except for input_add which is an empty function) gaim_core_init() (with parameter "daemon-gaim"; BTW, how do we register a new ui?) pass the first node of gaim_accounts_get_all() to gaim_account_connect() call g_main_loop_run() with g_main_loop_new() as parameter I can also send the entire source code but I assume that that's too much for you guys so I did not include it. When I ran the code, the last debug output is "connecting to account x". My guess is that I should also set up the event loop and add a real input_add field to eventloop_ops. I'm trying that path now but there are some compilation problems. Also, I have other things to do that it might take days before I am completely sure if that is really the problem. I'm replying now since you might think that I'm ignoring you. :) With regards to the future start guide, I suggest that the minimum/essential steps needed to do a task e.g., connecting an account, be documented. Users of libgaim would then just build upon these steps. |
From: Sean E. <sea...@gm...> - 2007-02-06 02:14:03
|
On 2/4/07, Christian Alis <ia...@gm...> wrote: > gaim_eventloop_set_ui_ops() (all fields copied from console's > eventloop_ops except for input_add which is an empty function) input_add is used by the networking code to register a callback whenever data comes in on socket. Without it, a protocol will try to connect, but never hear anything back. Which sounds like what you're describing. It would be great if you continued to document your process as you go along, so that we have some useful developer documentation for people who want to follow in your footsteps. -s. |
From: Christian A. <ia...@gm...> - 2007-02-09 14:02:42
|
Hi! I have successfully compiled my code with a valid input_add. I just copied gnt_gaim_input_add(), gnt_gaim_io_invoke(), and gnt_gaim_io_destroy() like Sadrul did but the same thing happens. The last output is still "connecting to account x". I thought that it might be because of the empty functions in GaimCoreUiOps but I saw OpenWengo's code and it has null fields so I suppose the problem's not there. At this point, I don't know of any promising direction. Can somebody point me the light? :) |
From: Sean E. <sea...@gm...> - 2007-02-09 21:59:51
|
On 2/9/07, Christian Alis <ia...@gm...> wrote: > I have successfully compiled my code with a valid input_add. I just > copied gnt_gaim_input_add(), gnt_gaim_io_invoke(), and > gnt_gaim_io_destroy() like Sadrul did but the same thing happens. The > last output is still "connecting to account x". I thought that it > might be because of the empty functions in GaimCoreUiOps but I saw > OpenWengo's code and it has null fields so I suppose the problem's not > there. At this point, I don't know of any promising direction. Can > somebody point me the light? :) If you're using those functions, you also need to use the Glib main loop (g_main()). If you're using some other main loop (maybe a Win32 event loop or something), those won't work (unless, like, you call g_main_iteration() from your main loop, but that won't work reliably either). You should see http://gaim.svn.sourceforge.net/viewvc/gaim/trunk/libgaim/example/ which sadrul just added. -s |
From: Christian A. <ia...@gm...> - 2007-02-10 14:03:27
|
Thanks to sadrul for the example and to sean for pointing me there. I am now able to connect based on the example. I'm still figuring out, however, why my code did not work. Anyway, thanks again. :) |
From: Rehan S. <reh...@ra...> - 2007-02-19 12:07:03
|
Hi, I am trying to compile the libgaim on the debain server but i am unable to do it. I get following error when i run *"./configure --disable-gtkui" :* ** checking for CHECK_CFLAGS... checking for CHECK_LIBS... checking for doxygen... false configure: WARNING: *** Doxygen not found, docs will not be available configure: creating ./config.status *.infig.status: error: cannot find input file: Makefile* I tried googling a lot.. i found some strings like removing ^M character or using dos2unix tool. I tried it but still i am getting the same error. Please please help me to overcome this problem... i am stuck on this... Thanks in advance, reHan. On 2/10/07, Christian Alis <ia...@gm...> wrote: > > Thanks to sadrul for the example and to sean for pointing me there. I > am now able to connect based on the example. I'm still figuring out, > however, why my code did not work. Anyway, thanks again. :) > |
From: Rehan <reh...@ra...> - 2007-02-19 16:24:12
|
I have solved the problem. I missed one file while dos2unix.... :) Rehan wrote: > > Hi, > > I am trying to compile the libgaim on the debain server but i am unable > to > do it. I get following error when i run *"./configure --disable-gtkui" :* > > ** > checking for CHECK_CFLAGS... > checking for CHECK_LIBS... > checking for doxygen... false > configure: WARNING: *** Doxygen not found, docs will not be available > configure: creating ./config.status > *.infig.status: error: cannot find input file: Makefile* > > > I tried googling a lot.. i found some strings like removing ^M character > or > using dos2unix tool. I tried it but still i am getting the same error. > > Please please help me to overcome this problem... i am stuck on this... > > > Thanks in advance, > reHan. > > > On 2/10/07, Christian Alis <ia...@gm...> wrote: >> >> Thanks to sadrul for the example and to sean for pointing me there. I >> am now able to connect based on the example. I'm still figuring out, >> however, why my code did not work. Anyway, thanks again. :) >> > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share > your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Gaim-devel mailing list > Gai...@li... > https://lists.sourceforge.net/lists/listinfo/gaim-devel > > -- View this message in context: http://www.nabble.com/libgaim-development-start-guide--tf3170674.html#a9044978 Sent from the Gaim - Dev mailing list archive at Nabble.com. |
From: Rehan S. <reh...@gm...> - 2007-02-19 13:01:55
|
I succesfully compiled the libgaim... :) Thanks anyways ;) Rehan. On 2/19/07, Rehan Shaikh <reh...@ra...> wrote: > > Hi, > > I am trying to compile the libgaim on the debain server but i am unable > to do it. I get following error when i run *"./configure --disable-gtkui" > :* > > ** > checking for CHECK_CFLAGS... > checking for CHECK_LIBS... > checking for doxygen... false > configure: WARNING: *** Doxygen not found, docs will not be available > configure: creating ./config.status > *.infig.status: error: cannot find input file: Makefile* > > > I tried googling a lot.. i found some strings like removing ^M character > or using dos2unix tool. I tried it but still i am getting the same error. > > Please please help me to overcome this problem... i am stuck on this... > > > Thanks in advance, > reHan. > > > On 2/10/07, Christian Alis <ia...@gm...> wrote: > > > > Thanks to sadrul for the example and to sean for pointing me there. I > > am now able to connect based on the example. I'm still figuring out, > > however, why my code did not work. Anyway, thanks again. :) > > > > |