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