/*************************************************************************** * Copyright (C) 2002 by Bernd Gehrmann * * bernd@kdevelop.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "filterpart.h" #include #include #include #include #include #include #include #include "kdevcore.h" #include "kdevpartcontroller.h" #include "kdevplugininfo.h" #include "shellfilterdlg.h" #include "shellinsertdlg.h" #include "kdevfilterIface.h" static const KDevPluginInfo data("kdevfilter"); K_EXPORT_COMPONENT_FACTORY( libkdevfilter, FilterFactory( data ) ) FilterPart::FilterPart(TQObject *parent, const char *name, const TQStringList &) : KDevPlugin(&data, parent, name ? name : "FilterPart") { setInstance(FilterFactory::instance()); setXMLFile("kdevfilter.rc"); TDEAction *action; action = new TDEAction( i18n("Execute Command..."), 0, this, TQT_SLOT(slotShellInsert()), actionCollection(), "tools_insertshell" ); action->setToolTip(i18n("Execute shell command")); action->setWhatsThis(i18n("Execute shell command

Executes a shell command and outputs its result into the current document.")); action = new TDEAction( i18n("Filter Selection Through Command..."), 0, this, TQT_SLOT(slotShellFilter()), actionCollection(), "tools_filtershell" ); action->setToolTip(i18n("Filter selection through a shell command")); action->setWhatsThis(i18n("Filter selection through shell command

Filters selection through a shell command and outputs its result into the current document.")); m_insertDialog = 0; m_filterDialog = 0; new KDevFilterIface( this ); // (void) dcopClient(); } FilterPart::~FilterPart() { delete m_insertDialog; delete m_filterDialog; } void FilterPart::slotShellInsert() { /// @todo Disable menu item if no active part KParts::ReadWritePart *part = dynamic_cast(partController()->activePart()); TQWidget *view = partController()->activeWidget(); if (!part || !view) { kdDebug(9029) << "no rw part" << endl; return; } KTextEditor::EditInterface *editiface = dynamic_cast(part); if (!editiface) { kdDebug(9029) << "no edit" << endl; return; } KTextEditor::ViewCursorInterface *cursoriface = dynamic_cast(view); if (!cursoriface) { kdDebug(9029) << "no viewcursor" << endl; return; } if (!m_insertDialog) { m_insertDialog = new ShellInsertDialog(); m_insertDialog->setCaption(i18n("Execute Command")); } if (m_insertDialog->exec()) { uint line, col; cursoriface->cursorPositionReal(&line, &col); editiface->insertText(line, col, m_insertDialog->text()); } } void FilterPart::slotShellFilter() { /// @todo Disable menu item if no active part KParts::ReadWritePart *part = dynamic_cast(partController()->activePart()); TQWidget *view = partController()->activeWidget(); if (!part || !view) { kdDebug(9029) << "no rw part" << endl; return; } KTextEditor::EditInterface *editiface = dynamic_cast(part); if (!editiface) { kdDebug(9029) << "no edit" << endl; return; } KTextEditor::ViewCursorInterface *cursoriface = dynamic_cast(view); if (!cursoriface) { kdDebug(9029) << "no viewcursor" << endl; return; } KTextEditor::SelectionInterface *selectioniface = dynamic_cast(part); if (!selectioniface) { kdDebug(9029) << "no selection" << endl; return; } if (!m_filterDialog) { m_filterDialog = new ShellFilterDialog(); m_filterDialog->setCaption(i18n("Filter Selection Through Command")); } kdDebug(9029) << "Old text: " << selectioniface->selection()<< endl; m_filterDialog->setText(selectioniface->selection()); if (m_filterDialog->exec()) { uint line, col; // OUCH: KTextEditor doesn't allow to find out // where the selection is selectioniface->removeSelectedText(); cursoriface->cursorPositionReal(&line, &col); kdDebug(9029) << "New text: " << m_filterDialog->text() << endl; editiface->insertText(line, col, m_filterDialog->text()); } } #include "filterpart.moc"