[Gtkradiant] synapse has landed

Timothee Besset gtkradiant@zerowing.idsoftware.com
Mon, 04 Mar 2002 16:50:23 +0100


Ok, synapse has been merged in to the trunk. In short it's a general and 
easier way to do plugins/modules. A sort of COM light, client server 
oriented. The modules have been converted to use synapse, as well as 
textool. The other plugins will be converted too.

The old plugin/module code is still in for some parts, but mostly disabled 
and will be cleaned up when we get everything straightened up.

Here's how to proceed when converting a plugin or a module to synapse:

- have a look at 
http://zerowing.idsoftware.com/viewcvs/viewcvs.cgi/GtkRadiant/libs/synapse/doc/design.txt?rev=HEAD&content-type=text/vnd.viewcvs-markup
this is synapse's design document. It will tell you a few things on how it 
works, and how it was designed. The basics for usage are that it's a static 
lib that provides client or server functionality, depending what you want 
to do.

- look more closely at the implementation, through doxygen:
http://zerowing.idsoftware.com/doxygen/GtkRadiant/html/synapse_8h.html
is a good start point

- now to the actual convert. if it's a plugin, you should cut and paste 
stuff from textool, if it's a module, from vfspk3
	- edit the main header to #include "synapse.h", and declare your custom 
synapse client (see textool's CSynapseClientTexTool 
http://zerowing.idsoftware.com/doxygen/GtkRadiant/html/classCSynapseClientTexTool.html 
)
	- in the main implementation, copy and adapt the client implementation 
from TexTool to your own thing. Mostly, you need to customize the about 
message, and to list properly the SYN_REQUIRE / SYN_PROVIDE stuff
	- you can now comment out the old exported functions (QERPlug_Init, 
QERPlug_Dispatch etc.)
	- on Linux, update the Conscript to link against synapse, to include 
STLPort etc.
	- on win32, update the .dsp to depend on synapse, add the include paths to 
STLPort, and edit the .def (the only exported function being 
Synapse_Enumerate now)
	- try to load it up, log the console to a file and examine it for 
debugging .. post on the list if you have trouble ..

TTimo