diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 84da08d7b7fcda12c85caeb5a10b4903770a6f69 (patch) | |
tree | 2a6aea76f2dfffb4cc04bb907c4725af94f70e72 /kate/snippets/plugin_katesnippets.cpp | |
download | tdeaddons-84da08d7b7fcda12c85caeb5a10b4903770a6f69.tar.gz tdeaddons-84da08d7b7fcda12c85caeb5a10b4903770a6f69.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeaddons@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kate/snippets/plugin_katesnippets.cpp')
-rw-r--r-- | kate/snippets/plugin_katesnippets.cpp | 321 |
1 files changed, 321 insertions, 0 deletions
diff --git a/kate/snippets/plugin_katesnippets.cpp b/kate/snippets/plugin_katesnippets.cpp new file mode 100644 index 0000000..07cba2b --- /dev/null +++ b/kate/snippets/plugin_katesnippets.cpp @@ -0,0 +1,321 @@ +/* + * Copyright (C) 2004 Stephan Möres <Erdling@gmx.net> + */ + +#include "plugin_katesnippets.h" + +#include <kaction.h> +#include <klocale.h> +#include <kstandarddirs.h> +#include <kgenericfactory.h> + + +// let the world know ... +K_EXPORT_COMPONENT_FACTORY(katesnippetsplugin, KGenericFactory<KatePluginSnippets>( "katesnippets" ) ) + + +// < IMPLEMENTAIONS for KatePluginSnippetsView > +// +// + +/** + * ctor KatePluginSnippetsView + * @param w + * @return + */ +KatePluginSnippetsView::KatePluginSnippetsView(Kate::MainWindow *w, QWidget *dock) : CWidgetSnippets(dock,"snippetswidget") + , dock (dock) +{ + setInstance (new KInstance("kate")); + setXMLFile("plugins/katesnippets/plugin_katesnippets.rc"); + + w->guiFactory()->addClient (this); + win = w; + + + //<make connections> + connect ( + lvSnippets, SIGNAL( selectionChanged(QListViewItem *) ), + this, SLOT( slot_lvSnippetsSelectionChanged(QListViewItem *) ) + ); + connect ( + lvSnippets, SIGNAL( doubleClicked (QListViewItem *) ), + this, SLOT( slot_lvSnippetsClicked(QListViewItem *) ) + ); + connect ( + lvSnippets, SIGNAL( itemRenamed(QListViewItem *, int, const QString &) ), + this, SLOT( slot_lvSnippetsItemRenamed(QListViewItem *, int, const QString &) ) + ); + + connect ( + btnNew, SIGNAL( clicked () ), + this, SLOT( slot_btnNewClicked() ) + ); + connect ( + btnSave, SIGNAL( clicked () ), + this, SLOT( slot_btnSaveClicked() ) + ); + connect ( + btnDelete, SIGNAL( clicked () ), + this, SLOT( slot_btnDeleteClicked() ) + ); + //</make connections> + + lSnippets.setAutoDelete( TRUE ); // the list owns the objects + + config = new KConfig("katesnippetspluginrc"); + readConfig(); + + // set text of selected item at startup + slot_lvSnippetsSelectionChanged(lvSnippets->selectedItem() ); +} + + +/** + * dtor KatePluginSnippetsView + * @return + */ +KatePluginSnippetsView::~ KatePluginSnippetsView() { + writeConfig(); + + win->guiFactory()->removeClient(this); +} + + +// +// +// < IMPLEMENTAIONS for KatePluginSnippetsView > + + + + +// < IMPLEMENTAIONS for KatePluginSnippets > +// +// + +/** + * ctor KatePluginSnippets + * @param parent + * @param name + * @return + */ +KatePluginSnippets::KatePluginSnippets( QObject* parent, const char* name, const QStringList& ) + : Kate::Plugin ( (Kate::Application*)parent, name ) {} + +/** + * dtor KatePluginSnippets + * @return + */ +KatePluginSnippets::~KatePluginSnippets() {} + +/** + * + * @param win + */ +void KatePluginSnippets::addView(Kate::MainWindow *win) +{ + QWidget *dock = win->toolViewManager()->createToolView( + "kate_plugin_snippets", + Kate::ToolViewManager::Left, + SmallIcon("contents"), + i18n("Snippets")); + + KatePluginSnippetsView *view = new KatePluginSnippetsView (win,dock); + m_views.append(view); +} + + +/** + * + * @param win + */ +void KatePluginSnippets::removeView(Kate::MainWindow *win) { + for (uint z=0; z < m_views.count(); z++) + if (m_views.at(z)->win == win) { + KatePluginSnippetsView *view = m_views.at(z); + m_views.remove (view); + delete view->dock; + } +} + +/** + * + * @param item + */ +void KatePluginSnippetsView::slot_lvSnippetsSelectionChanged(QListViewItem * item) { + CSnippet *snippet; + if ( (snippet = findSnippetByListViewItem(item))!= NULL ) { + teSnippetText->setText(snippet->getValue()); + } + +} + + +/** + * Special meaning of <mark/> and <cursor/> ... + * @param item + */ +void KatePluginSnippetsView::slot_lvSnippetsClicked (QListViewItem * item) { + Kate::View *kv = win->viewManager()->activeView(); + CSnippet *snippet; + + if (kv) { + if ( (snippet = findSnippetByListViewItem(item))!= NULL ) { + QString sText = snippet->getValue(); + QString sSelection = ""; + + if ( kv->getDoc()->hasSelection() ) { + sSelection = kv->getDoc()->selection(); + // clear selection + kv->keyDelete(); + } + + sText.replace( QRegExp("<mark/>"), sSelection ); + sText.replace( QRegExp("<date/>"), QDate::currentDate().toString(Qt::LocalDate) ); + sText.replace( QRegExp("<time/>"), QTime::currentTime().toString(Qt::LocalDate) ); + kv->insertText ( sText ); + } + kv->setFocus(); + } +} + + +/** + * + * @param lvi + * @param + * @param text + */ +void KatePluginSnippetsView::slot_lvSnippetsItemRenamed(QListViewItem *lvi,int /*col*/, const QString& text) { + CSnippet *snippet; + if ( (snippet = findSnippetByListViewItem(lvi)) != NULL ) { + snippet->setKey( text ); + writeConfig(); + } +} + + +/** + * + */ +void KatePluginSnippetsView::slot_btnNewClicked() { + QString sKey = "New Snippet"; + QString sValue = ""; + + QListViewItem *lvi = insertItem(sKey, true); + lSnippets.append( new CSnippet(sKey, sValue, lvi) ); +} + + +/** + * + */ +void KatePluginSnippetsView::slot_btnSaveClicked() { + CSnippet *snippet; + QListViewItem *lvi = lvSnippets->selectedItem(); + if ( (snippet = findSnippetByListViewItem(lvi)) != NULL ) { + snippet->setValue(teSnippetText->text() ); + writeConfig(); + } +} + + +/** + * + */ +void KatePluginSnippetsView::slot_btnDeleteClicked() { + CSnippet *snippet; + QListViewItem *lvi = lvSnippets->selectedItem(); + + + if ( (snippet = findSnippetByListViewItem(lvi)) != NULL ) { + lvSnippets->takeItem(lvi); + lSnippets.remove(snippet); + } +} + + +/** + * + */ +void KatePluginSnippetsView::readConfig() { + QString sKey, sValue; + QListViewItem *lvi; + + config->setGroup("Snippets"); + + int iNrOfSnippets = config->readEntry("NumberOfSnippets", "0").toInt() ; + for (int i=0; i < iNrOfSnippets; i++) { + QStringList slFields; + slFields = config->readListEntry ( QString::number(i) ); + + sKey = slFields[0]; + sValue = slFields[1]; + + lvi = insertItem(sKey, false); + + lSnippets.append( new CSnippet(sKey, sValue, lvi, this) ); + } + + // <defaults> + if ( iNrOfSnippets == 0 ) { + sKey = "DEBUG variable"; + sValue = "## < DEBUG >\nout \"<pre>\\$<mark/> : \\\"$<mark/>\\\"\\n</pre>\"\n## </DEBUG >\n"; + lvi = insertItem(sKey, false); + lSnippets.append( new CSnippet(sKey, sValue, lvi, this) ); + + sKey = "proc-header"; + sValue = "## [created : <date/>, <time/>]\n## Description:\n## ============\n## The function \"<mark/>\" ...\n##\n##\n##\n##\n## Input:\n## ======\n##\n##\n##\nproc <mark/> {args} {\n\n ## add your code here\n\n return \"\"\n}\n"; + lvi = insertItem(sKey, false); + lSnippets.append( new CSnippet(sKey, sValue, lvi, this) ); + } + // </defaults> + +} + + +/** + * + */ +void KatePluginSnippetsView::writeConfig() { + config->setGroup("Snippets"); + + int iNrOfSnippets = lSnippets.count(); + + config->writeEntry("NumberOfSnippets", iNrOfSnippets ); + + int i=0; + + CSnippet *snippet; + for ( snippet = lSnippets.first(); snippet; snippet = lSnippets.next() ) { + QStringList slFields; + slFields.append( snippet->getKey() ); + slFields.append( snippet->getValue() ); + + config->writeEntry ( QString::number(i), slFields, ',' ); + i++; + } + // sync to disc ... + config->sync(); +} + + +/** + * + * @param item + * @return + */ +CSnippet* KatePluginSnippetsView::findSnippetByListViewItem(QListViewItem *item) { + CSnippet *snippet = NULL; + for ( snippet = lSnippets.first(); snippet; snippet = lSnippets.next() ) { + if ( snippet->getListViewItem() == item) + break; + } + return snippet; +} + +// +// +// < IMPLEMENTAIONS for KatePluginSnippets > + +#include "plugin_katesnippets.moc" |