AMIGIFT Documentation

Browsing /Development





This section is somehow focused to developers who wish to know more about AMIGIFT internals. However, note this is an end-user documentation and therefore we'll not give a in deep documentation on development, just the very basics on how you can get started...

Starting with the GUI part, what GiFTMui basically needs to work with new plugins is just a MUI's Public Custom Class (.mcc) located inside the AMIGIFT:PlugIns directory, this class could be a subclass of whatever you want, but obviously the quicker way would be creating it as a subclass of MUIC_Group, it should return a valid MUI Object which will be placed as a children of a PageGroup on the preferences window.

The class will allow end-users to configure your plugin (similar to what happens with MUI's MCPs, which are used to configure Public MCCs, in this aspect you could see GiFTMui as a MCC and your PlugIn.mcc as a MCP ;), your plugin.mcc should additionally handle the reading and writing of the corresponding giftd-style's config file (those found into/as AMIGIFT:daemon/<plugin>/<plugin>.conf), as them are available for the rest of plugins as well.

There is provided a Demo.mcc and Demo.PlugIn (with full source code, of course) which demostrates how this works, The Demo.PlugIn source is just a quickstart on how to write PlugIns, but for better info and examples the OpenFT sources are the best choice.

NOTE that how GiFTMui will handle your plugin is based on the plugin's filename as found into the AMIGIFT:PlugIns/ folder, and the *.mcc and image (logo) based on that name, e.g. it founds into AMIGIFT:PlugIns a file named BacaBurra.PlugIn then it extracts the name and stores it as "BacaBurra" (case sensitive!, at least for MUI..), then it tryes to load the mcc using:

MUI_NewObjectA("AMIGIFT:PlugIns/BacaBurra.mcc", NULL);

(additional tags support may come later if needed, just request it if you need them..)

And then the logos loaded as well as:

AMIGIFT:Images/networks/normal/BacaBurra.iff
AMIGIFT:Images/networks/small/BacaBurra.iff

(being fixed width/height a requirement, 32x32 and 16x16 respectively)

Note that giFTMui will still work with your plugin if neither the MCC nor the logos are found!, what we understand as your plugin needs no configuration, being the logo replaced with a build-in image (with a "?" sign) if yours aren't found.

If you create a MCC, you'll need to implement the following MUI Methods on your class dispatcher:

#define MUIM_GIFTMUI_MCCLOADCONFIG 0x800FF00A
#define MUIM_GIFTMUI_MCCSAVECONFIG 0x800FF00B

Such methods will be invoked by GiFTMui when a user uses "Save To Disk ALL" or "Load From Disk ALL" menu options. be aware you must return the same method-id if your function succeed, and something else otherwise.

As you could see, how GiFTMui handles plugins is quite easyly, as seen for MCCs, regarding how to create network plugins, we encourage you to take a look at the sources for other plugins, specially OpenFT, as previously stated, you'll learn a lot more than what we can explain right now here... Since this is a end-user documentation (quite long already, indeed) we'll not enter in more details on development, but you are of course invited to join our mailing-lists where you are free to ask for anything you wish to know, or contact the author(s) directly if you prefer this way.




Maintenance
go to index
Acknowledges




 $Id: index.php,v 2.0 2009/08/06 22:47:32 diegocr Exp $