the curse of loose coupling
Steven T. Hatton
hattons at globalsymmetry.com
Tue Jul 5 02:40:22 UTC 2005
I've returned to the task of trying to figure out how KDevelop is put
together. I believe I understand most of what's going on, in principle. The
specific area I am currently trying to understand is the Class Browser. I
believe that is the same as the ClassViewPart. Looking things over has given
me the understanding that this is implemented as a plugin.
Taking things from the top, I started reading the function main() in
src/main.cpp. That led me to PluginController::loadInitialPlugins() which
took me to
kdevelop/src/plugincontroler.h and thence to
kdevelop/src/plugincontroler.cpp and back to
void PluginController::loadInitialPlugins()
{
loadCorePlugins();
loadGlobalPlugins();
}
PluginController::~PluginController()
{
unloadPlugins();
}
void PluginController::loadCorePlugins()
{
KTrader::OfferList coreOffers = m_engine.offers(m_profile,
ProfileEngine::Core);
loadPlugins( coreOffers );
}
void PluginController::loadGlobalPlugins( const QStringList & ignorePlugins )
{
KTrader::OfferList globalOffers = m_engine.offers(m_profile,
ProfileEngine::Global);
loadPlugins( globalOffers, ignorePlugins );
}
Then back to find ProfileEngine m_engine; in
kdevelop/src/plugincontroler.h
Well, that sends me to:
kdevelop/src/profileengine/lib/profileengine.h
Which has some stuff using KTrader, which I recognize from months back as some
kind of service advertisement mechanism. But now I need to figure out what
is being provided by KTrader, and how that is determined.
I was hoping to have more of this figured out before I sent this message, but
I have to restart my mail client, and if I put it in drafts, I might forget
to send it.
--
Regards,
Steven
More information about the KDevelop-devel
mailing list