You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdevelop/parts/snippet/snippet_part.cpp

156 lines
4.8 KiB

/*
* File : snippet_part.cpp
*
* Author: Robert Gruber <rgruber@users.sourceforge.net>
*
* Copyright: See COPYING file that comes with this distribution
*/
#include "snippet_part.h"
#include <qwhatsthis.h>
#include <kaction.h>
#include <kiconloader.h>
#include <klocale.h>
#include <kaboutdata.h>
#include <qvbox.h>
#include <kdialogbase.h>
#include <klineedit.h>
#include <qcheckbox.h>
#include <qbuttongroup.h>
#include <ktrader.h>
#include "kdevcore.h"
#include <kdevproject.h>
#include "kdevmainwindow.h"
#include <kdevgenericfactory.h>
#include <kdevplugininfo.h>
#include <kdebug.h>
#include "snippet_widget.h"
#include "snippetitem.h"
#include "snippetsettings.h"
#include "snippetconfig.h"
static const KDevPluginInfo data("kdevsnippet");
typedef KDevGenericFactory<SnippetPart> snippetFactory;
K_EXPORT_COMPONENT_FACTORY( libkdevsnippet, snippetFactory( data ) )
SnippetPart::SnippetPart(QObject *parent, const char *name, const QStringList& )
: KDevPlugin(&data, parent, name ? name : "SnippetPart" )
{
setInstance(snippetFactory::instance());
setXMLFile("kdevpart_snippet.rc");
m_widget = new SnippetWidget(this);
m_widget->setCaption(i18n("Code Snippets"));
m_widget->setIcon(SmallIcon( info()->icon() ));
QWhatsThis::add(m_widget, i18n("<b>Code Snippet</b><p>This is a list of available snippets."));
mainWindow()->embedSelectViewRight( m_widget, i18n("Code Snippets"), i18n("Insert a code snippet") );
connect( core(), SIGNAL( configWidget( KDialogBase * ) ), this, SLOT( slotConfigWidget( KDialogBase * ) ) );
/*The next two connects are used to check if certain SnippetGroups need to be opened
according to the languages supported by this project*/
connect( core(), SIGNAL( projectOpened() ), m_widget, SLOT( languageChanged() ) );
connect( core(), SIGNAL( languageChanged() ), m_widget, SLOT( languageChanged() ) );
setupActions();
}
SnippetPart::~SnippetPart()
{
if ( m_widget )
{
mainWindow()->removeView( m_widget );
}
delete m_widget;
}
void SnippetPart::setupActions()
{
new KAction( i18n("Show Snippet Tree"), CTRL+ALT+SHIFT+Key_S, this, SLOT(slotShowView()), actionCollection(), "snippet_showview");
}
/*!
\fn SnippetPart::aboutData()
*/
KAboutData* SnippetPart::aboutData()
{
KAboutData *data = new KAboutData ("snippetpart", I18N_NOOP("SnippetPart"), "1.1",
I18N_NOOP( "SnippetPart for KDevelop" ),
KAboutData::License_LGPL_V2,
I18N_NOOP( "(c) 2003" ), 0, "http://www.kdevelop.org");
data->addAuthor ("Robert Gruber", I18N_NOOP("Author"), "rgruber@users.sourceforge.net", "http://kmp3indexer.sf.net");
return data;
}
/*!
\fn SnippetPart::slotConfigWidget( KDialogBase *dlg )
*/
void SnippetPart::slotConfigWidget( KDialogBase *dlg )
{
QVBox *vbox = dlg->addVBoxPage( i18n("Code Snippets"), i18n("Code Snippets"), BarIcon( info()->icon(), KIcon::SizeMedium ) );
SnippetSettings * w = new SnippetSettings( m_widget, vbox );
w->btnGroup->setButton(m_widget->getSnippetConfig()->getInputMethod());
w->leDelimiter->setText(m_widget->getSnippetConfig()->getDelimiter());
w->cbToolTip->setChecked(m_widget->getSnippetConfig()->useToolTips());
w->btnGroupAutoOpen->setButton(m_widget->getSnippetConfig()->getAutoOpenGroups());
connect( dlg, SIGNAL(okClicked()), w, SLOT(slotOKClicked()) );
}
QStringList SnippetPart::getAllLanguages()
{
KTrader::OfferList languageSupportOffers =
KTrader::self()->query(QString::fromLatin1("KDevelop/LanguageSupport"),
QString::fromLatin1("[X-KDevelop-Version] == %1"
).arg( KDEVELOP_PLUGIN_VERSION ));
QStringList languages;
for (KTrader::OfferList::ConstIterator it = languageSupportOffers.begin(); it != languageSupportOffers.end(); ++it)
{
QString language = (*it)->property("X-KDevelop-Language").toString();
languages.append(language);
kdDebug(9035) << "Found language: " << (*it)->property("X-KDevelop-Language").toString() << endl <<
"genericName(): " <<(*it)->genericName() << endl <<
"comment(): " <<(*it)->comment() << endl << endl;
}
return languages;
}
QStringList SnippetPart::getProjectLanguages()
{
QStringList languages;
if (!projectDom())
return languages;
QDomDocument m_projectDom = *projectDom();
if (m_widget->getSnippetConfig()->getAutoOpenGroups() == 1)
languages = DomUtil::readListEntry(m_projectDom, "/general/secondaryLanguages", "language");
languages.prepend( DomUtil::readEntry(m_projectDom, "/general/primarylanguage") );
return languages;
}
void SnippetPart::slotShowView()
{
mainWindow()->raiseView( m_widget );
}
#include "snippet_part.moc"