summaryrefslogtreecommitdiffstats
path: root/kate/helloworld/plugin_katehelloworld.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kate/helloworld/plugin_katehelloworld.cpp')
-rw-r--r--kate/helloworld/plugin_katehelloworld.cpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/kate/helloworld/plugin_katehelloworld.cpp b/kate/helloworld/plugin_katehelloworld.cpp
new file mode 100644
index 0000000..7499c08
--- /dev/null
+++ b/kate/helloworld/plugin_katehelloworld.cpp
@@ -0,0 +1,66 @@
+
+#include "plugin_katehelloworld.h"
+#include "plugin_katehelloworld.moc"
+
+#include <kaction.h>
+#include <klocale.h>
+#include <kgenericfactory.h>
+
+K_EXPORT_COMPONENT_FACTORY( katehelloworldplugin, KGenericFactory<KatePluginHelloWorld>( "katehelloworld" ) )
+
+class PluginView : public KXMLGUIClient
+{
+ friend class KatePluginHelloWorld;
+
+ public:
+ Kate::MainWindow *win;
+};
+
+KatePluginHelloWorld::KatePluginHelloWorld( QObject* parent, const char* name, const QStringList& )
+ : Kate::Plugin ( (Kate::Application*)parent, name )
+{
+}
+
+KatePluginHelloWorld::~KatePluginHelloWorld()
+{
+}
+
+void KatePluginHelloWorld::addView(Kate::MainWindow *win)
+{
+ // TODO: doesn't this have to be deleted?
+ PluginView *view = new PluginView ();
+
+ (void) new KAction ( i18n("Insert Hello World"), 0, this,
+ SLOT( slotInsertHello() ), view->actionCollection(),
+ "edit_insert_helloworld" );
+
+ view->setInstance (new KInstance("kate"));
+ view->setXMLFile("plugins/katehelloworld/ui.rc");
+ win->guiFactory()->addClient (view);
+ view->win = win;
+
+ m_views.append (view);
+}
+
+void KatePluginHelloWorld::removeView(Kate::MainWindow *win)
+{
+ for (uint z=0; z < m_views.count(); z++)
+ if (m_views.at(z)->win == win)
+ {
+ PluginView *view = m_views.at(z);
+ m_views.remove (view);
+ win->guiFactory()->removeClient (view);
+ delete view;
+ }
+}
+
+void KatePluginHelloWorld::slotInsertHello()
+{
+ if (!application()->activeMainWindow())
+ return;
+
+ Kate::View *kv = application()->activeMainWindow()->viewManager()->activeView();
+
+ if (kv)
+ kv->insertText ("Hello World");
+}