Code::Blocks Forums

Developer forums (C::B DEVELOPMENT STRICTLY!) => Plugins development => Topic started by: LonelySTar on December 01, 2005, 05:40:57 pm

Title: How to learn about plugin programming
Post by: LonelySTar on December 01, 2005, 05:40:57 pm
Is there any handbook/reference on how to write a plugin?
If I need a specific function, how can I find out how to do it?
Thanks!
Title: Re: How to learn about plugin programming
Post by: mandrav on December 01, 2005, 05:43:06 pm
http://wiki.codeblocks.org/index.php?title=Creating_a_simple_%22Hello_World%22_plugin
Title: Re: How to learn about plugin programming
Post by: LonelySTar on December 01, 2005, 05:46:28 pm
Well, that gives an outline for how to write a plugin. Usefull but not enought.
At present, I want to know How a plugin can find out the filenames and directories of all files in the project. How is that done and how did you find out?
Thanks!
Nathan
Title: Re: How to learn about plugin programming
Post by: mandrav on December 01, 2005, 06:09:45 pm
How is that done and how did you find out?

:D I guess, I have my ways ;)
Title: Re: How to learn about plugin programming
Post by: rickg22 on December 01, 2005, 06:12:50 pm
LonelySTar: Download the codeblocks sourcecode and study the SDK, specially the headers - of these, pay attention to the ones that end with "manager".
Title: Re: How to learn about plugin programming
Post by: Urxae on December 01, 2005, 06:26:18 pm
(I started this post before the last two were posted. I'll post it as it's somewhat more detailed ;))
Well, that gives an outline for how to write a plugin. Usefull but not enought.
At present, I want to know How a plugin can find out the filenames and directories of all files in the project. How is that done and how did you find out?
Thanks!
Nathan

Manager::Get()->GetProjectManager() returns a ProjectManager*.
ProjectManager::GetProjects() returns a ProjectsArray* (IIRC basically the wx-version of std::vector<cbProject*>, but without iterators)
cbProject::GetFilesCount() returns the number of files in a project.
cbProject::GetFile(int index) returns a ProjectFile*.
From there ProjectFile::file or ProjectFile::relativeFilename should be able to help you.

Now where did I find all this?
Well, I started looking in sdk/projectmanager.h, and went from there. Like Rick said: look at the managers ;). The only time I actually had to perform a search for the next file was when I got to ProjectFile, which is conveniently located in sdk/projectbuildtarget.h :roll:.
The SDK headers are quite helpful, but you can always get doxygen and process sdk.doxy for a HTML version with hyperlinks :).
Title: Re: How to learn about plugin programming
Post by: LonelySTar on December 01, 2005, 10:05:01 pm
Thanks for all your help!
Title: Re: How to learn about plugin programming
Post by: takeshi miya on December 02, 2005, 12:17:06 am
You might want to try THIS (http://forums.codeblocks.org/index.php?topic=1358.0).
Title: Re: How to learn about plugin programming
Post by: Urxae on December 02, 2005, 12:40:10 am
You might want to try THIS (http://forums.codeblocks.org/index.php?topic=1358.0).

Beware though: that's for RC2, there have been a lot of changes since then in SVN. So if you're using the SVN version of C::B I would recommend generating the documentation yourself, though you can probably use the last link in the post Takeshi mentioned to do so.
Title: Re: How to learn about plugin programming
Post by: takeshi miya on December 02, 2005, 01:18:09 am
Exactly.

Though it would be good if we can have online docs autogenerated from SVN.
Title: Re: How to learn about plugin programming
Post by: Urxae on December 02, 2005, 01:26:44 am
Though it would be good if we can have online docs autogenerated from SVN.

Now there's a good use for cron if I ever saw one 8).