--Boundary-00=_kFo2+/5O1kjf2mv Content-Type: Text/Plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-Description: clearsigned data Content-Disposition: inline =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 This is a first shot at making KWrite read from stdin. With this patch and the "-stdin" flag, you can pipe things into KWrite. There are a few outstanding issues: *) It doesn't do highlighting. I don't know this code much at all, but I c= an=20 figure it out if there's interest in getting this in. *) It places the cursor at the end. *) It only works if you're using the Kate part as your editor. I got lost = in=20 the number of interfaces provided for this, but I didn't see an appropriate= =20 interface with a "setText()" method. The biggest part of this patch is a s/katePart/m_katePart/ since I needed t= o=20 add a method called katePart() and since the m_ is used on other member=20 variables this seemed like the way to go. Anyway -- let me know if others would find this useful and I'll clean it up= =20 and commit. Cheers, =2D -Scott =2D --=20 =46or a successful technology, reality must take precedence over public=20 relations, for nature cannot be fooled.=20 =2D --Richard Feynman =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE+2oFkQu0ByfY5QTkRAn6+AJ94TxFqrkX7kTmmaQAPKrA/wMeWdwCgiVYB 6kQYrTcdKJ8qNsLZAxQBgbg=3D =3Dgxex =2D----END PGP SIGNATURE----- --Boundary-00=_kFo2+/5O1kjf2mv Content-Type: text/x-diff; charset="us-ascii"; name="kwrite-stdin.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="kwrite-stdin.patch" Index: kwritemain.cpp =================================================================== RCS file: /home/kde/kdebase/kate/app/kwritemain.cpp,v retrieving revision 1.65 diff -u -3 -p -r1.65 kwritemain.cpp --- kwritemain.cpp 1 Jun 2003 16:30:04 -0000 1.65 +++ kwritemain.cpp 1 Jun 2003 17:48:19 -0000 @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -69,7 +70,7 @@ QPtrList KWrite::docList; KWrite::KWrite (KTextEditor::Document *doc) - : kateView(0), + : m_kateView(0), m_recentFiles(0), m_paShowPath(0), // m_paShowToolBar(0), @@ -81,7 +82,7 @@ KWrite::KWrite (KTextEditor::Document *d resize(640,400); if (!doc) { - doc=KTextEditor::EditorChooser::createDocument(this,"KTextEditor::Document"); + doc=KTextEditor::EditorChooser::createDocument(this,"KTextEditor::Document"); // doc = KTextEditor::createDocument ("katepart", this, "KTextEditor::Document");//libqeditorpart"); //katepart"); docList.append(doc); } @@ -93,9 +94,9 @@ KWrite::KWrite (KTextEditor::Document *d setXMLFile( "kwriteui.rc" ); createShellGUI( true ); - guiFactory()->addClient( kateView ); + guiFactory()->addClient( m_kateView ); KParts::GUIActivateEvent ev( true ); - QApplication::sendEvent( kateView, &ev ); + QApplication::sendEvent( m_kateView, &ev ); // Read basic main-view settings, and set to autosave setAutoSaveSettings( "General Options" ); @@ -104,7 +105,7 @@ KWrite::KWrite (KTextEditor::Document *d KWrite::~KWrite() { - if (kateView->document()->views().count() == 1) docList.remove(kateView->document()); + if (m_kateView->document()->views().count() == 1) docList.remove(m_kateView->document()); } @@ -124,14 +125,14 @@ void KWrite::init() void KWrite::loadURL(const KURL &url) { m_recentFiles->addURL( url ); - kateView->document()->openURL(url); + m_kateView->document()->openURL(url); } bool KWrite::queryClose() { - return kateView->document()->views().count() != 1 - || kateView->document()->queryClose(); + return m_kateView->document()->views().count() != 1 + || m_kateView->document()->queryClose(); } @@ -153,14 +154,14 @@ void KWrite::setupEditWidget(KTextEditor exit(1); } - kateView = doc->createView (this, 0L); + m_kateView = doc->createView (this, 0L); - connect(kateView,SIGNAL(newStatus()),this,SLOT(newCaption())); - connect(kateView,SIGNAL(viewStatusMsg(const QString &)),this,SLOT(newStatus(const QString &))); - connect(kateView->document(),SIGNAL(fileNameChanged()),this,SLOT(newCaption())); - connect(kateView,SIGNAL(dropEventPass(QDropEvent *)),this,SLOT(slotDropEvent(QDropEvent *))); + connect(m_kateView,SIGNAL(newStatus()),this,SLOT(newCaption())); + connect(m_kateView,SIGNAL(viewStatusMsg(const QString &)),this,SLOT(newStatus(const QString &))); + connect(m_kateView->document(),SIGNAL(fileNameChanged()),this,SLOT(newCaption())); + connect(m_kateView,SIGNAL(dropEventPass(QDropEvent *)),this,SLOT(slotDropEvent(QDropEvent *))); - setCentralWidget(kateView); + setCentralWidget(m_kateView); KStdAction::close( this, SLOT(slotFlush()), actionCollection(), "file_close" )->setWhatsThis(i18n("Use this to close the current document")); } @@ -173,7 +174,7 @@ void KWrite::changeEditor() void KWrite::slotFlush () { - kateView->document()->closeURL(); + m_kateView->document()->closeURL(); } void KWrite::setupActions() @@ -228,21 +229,21 @@ void KWrite::setupStatusBar() void KWrite::slotNew() { - if (kateView->document()->isModified() || !kateView->document()->url().isEmpty()) + if (m_kateView->document()->isModified() || !m_kateView->document()->url().isEmpty()) { KWrite*t = new KWrite(); t->readConfig(); t->init(); } else - kateView->document()->openURL(""); + m_kateView->document()->openURL(""); } void KWrite::slotOpen() { - if (KTextEditor::encodingInterface(kateView->document())) + if (KTextEditor::encodingInterface(m_kateView->document())) { - Kate::FileDialog *dialog = new Kate::FileDialog (QString::null,KTextEditor::encodingInterface(kateView->document())->encoding(), this, i18n ("Open File")); + Kate::FileDialog *dialog = new Kate::FileDialog (QString::null,KTextEditor::encodingInterface(m_kateView->document())->encoding(), this, i18n ("Open File")); Kate::FileDialogData data = dialog->exec (); delete dialog; @@ -272,24 +273,24 @@ void KWrite::slotOpen( const KURL& url ) return; } - if (kateView->document()->isModified() || !kateView->document()->url().isEmpty()) + if (m_kateView->document()->isModified() || !m_kateView->document()->url().isEmpty()) { KWrite *t = new KWrite(); - if (KTextEditor::encodingInterface(kateView->document())) KTextEditor::encodingInterface(kateView->document())->setEncoding(encoding); + if (KTextEditor::encodingInterface(m_kateView->document())) KTextEditor::encodingInterface(m_kateView->document())->setEncoding(encoding); t->readConfig(); t->init(); t->loadURL(url); } else { - if (KTextEditor::encodingInterface(kateView->document())) KTextEditor::encodingInterface(kateView->document())->setEncoding(encoding); + if (KTextEditor::encodingInterface(m_kateView->document())) KTextEditor::encodingInterface(m_kateView->document())->setEncoding(encoding); loadURL(url); } } void KWrite::newView() { - KWrite *t = new KWrite(kateView->document()); + KWrite *t = new KWrite(m_kateView->document()); t->readConfig(); t->init(); } @@ -314,8 +315,8 @@ void KWrite::editKeys() { KKeyDialog dlg; dlg.insert(actionCollection()); - if( kateView ) - dlg.insert(kateView->actionCollection()); + if( m_kateView ) + dlg.insert(m_kateView->actionCollection()); dlg.configure(); } @@ -326,25 +327,25 @@ void KWrite::editToolbars() if (dlg->exec()) { KParts::GUIActivateEvent ev1( false ); - QApplication::sendEvent( kateView, &ev1 ); - guiFactory()->removeClient( kateView ); + QApplication::sendEvent( m_kateView, &ev1 ); + guiFactory()->removeClient( m_kateView ); createShellGUI( false ); createShellGUI( true ); - guiFactory()->addClient( kateView ); + guiFactory()->addClient( m_kateView ); KParts::GUIActivateEvent ev2( true ); - QApplication::sendEvent( kateView, &ev2 ); + QApplication::sendEvent( m_kateView, &ev2 ); } delete dlg; } void KWrite::printNow() { - KTextEditor::printInterface(kateView->document())->print (); + KTextEditor::printInterface(m_kateView->document())->print (); } void KWrite::printDlg() { - KTextEditor::printInterface(kateView->document())->printDialog (); + KTextEditor::printInterface(m_kateView->document())->printDialog (); } void KWrite::newStatus(const QString &msg) @@ -356,25 +357,25 @@ void KWrite::newStatus(const QString &ms void KWrite::newCaption() { - if (kateView->document()->url().isEmpty()) { - setCaption(i18n("Untitled"),kateView->document()->isModified()); + if (m_kateView->document()->url().isEmpty()) { + setCaption(i18n("Untitled"),m_kateView->document()->isModified()); } else { //set caption if ( m_paShowPath->isChecked() ) { //File name shouldn't be too long - Maciek - if (kateView->document()->url().filename().length() > 200) - setCaption(kateView->document()->url().prettyURL().left(197) + "...",kateView->document()->isModified()); + if (m_kateView->document()->url().filename().length() > 200) + setCaption(m_kateView->document()->url().prettyURL().left(197) + "...",m_kateView->document()->isModified()); else - setCaption(kateView->document()->url().prettyURL(),kateView->document()->isModified()); + setCaption(m_kateView->document()->url().prettyURL(),m_kateView->document()->isModified()); } else { //File name shouldn't be too long - Maciek - if (kateView->document()->url().filename().length() > 200) - setCaption("..." + kateView->document()->url().fileName().right(197),kateView->document()->isModified()); + if (m_kateView->document()->url().filename().length() > 200) + setCaption("..." + m_kateView->document()->url().fileName().right(197),m_kateView->document()->isModified()); else - setCaption(kateView->document()->url().fileName(),kateView->document()->isModified()); + setCaption(m_kateView->document()->url().fileName(),m_kateView->document()->isModified()); } @@ -412,7 +413,7 @@ void KWrite::slotEnableActions( bool ena for (; it != end; ++it ) (*it)->setEnabled( enable ); - actions = kateView->actionCollection()->actions(); + actions = m_kateView->actionCollection()->actions(); it = actions.begin(); end = actions.end(); for (; it != end; ++it ) @@ -446,7 +447,7 @@ void KWrite::readConfig() { config->setGroup("General Options"); readConfig(config); - KTextEditor::ConfigInterface *cfgIf=KTextEditor::configInterface(kateView->document()); + KTextEditor::ConfigInterface *cfgIf=KTextEditor::configInterface(m_kateView->document()); if (cfgIf) cfgIf->readConfig(); } @@ -460,15 +461,15 @@ void KWrite::writeConfig() config->setGroup("General Options"); writeConfig(config); - if (kateView && KTextEditor::configInterface(kateView->document())) - KTextEditor::configInterface(kateView->document())->writeConfig(); + if (m_kateView && KTextEditor::configInterface(m_kateView->document())) + KTextEditor::configInterface(m_kateView->document())->writeConfig(); } // session management void KWrite::restore(KConfig *config, int n) { - if ((kateView->document()->views().count() == 1) && !kateView->document()->url().isEmpty()) { //in this case first view - loadURL(kateView->document()->url()); + if ((m_kateView->document()->views().count() == 1) && !m_kateView->document()->url().isEmpty()) { //in this case first view + loadURL(m_kateView->document()->url()); } readPropertiesInternal(config, n); init(); @@ -478,17 +479,17 @@ void KWrite::readProperties(KConfig *con { readConfig(config); - if (KTextEditor::sessionConfigInterface(kateView)) - KTextEditor::sessionConfigInterface(kateView)->readSessionConfig(config); + if (KTextEditor::sessionConfigInterface(m_kateView)) + KTextEditor::sessionConfigInterface(m_kateView)->readSessionConfig(config); } void KWrite::saveProperties(KConfig *config) { writeConfig(config); - config->writeEntry("DocumentNumber",docList.find(kateView->document()) + 1); + config->writeEntry("DocumentNumber",docList.find(m_kateView->document()) + 1); - if (KTextEditor::sessionConfigInterface(kateView)) - KTextEditor::sessionConfigInterface(kateView)->writeSessionConfig(config); + if (KTextEditor::sessionConfigInterface(m_kateView)) + KTextEditor::sessionConfigInterface(m_kateView)->writeSessionConfig(config); } void KWrite::saveGlobalProperties(KConfig *config) //save documents @@ -546,6 +547,7 @@ void KWrite::restore() static KCmdLineOptions options[] = { + { "stdin", I18N_NOOP("Read the contents of stdin."), 0}, { "+[URL]", I18N_NOOP("Document to open."), 0 }, KCmdLineLastOption }; @@ -612,11 +614,26 @@ int main(int argc, char **argv) KWrite::restore(); } else { KWrite *t; - if ( args->count() == 0 ) { t = new KWrite; t->readConfig(); + + if( args->isSet( "stdin" ) ) { + QTextIStream input(stdin); + QString line; + QString text; + do { + line = input.readLine(); + text.append( line + "\n" ); + } while( !line.isNull() ); + + Kate::Document *doc = static_cast(t->kateView()->document()->qt_cast( "Kate::Document" )); + if( doc ) { + doc->setText( text ); + } + } + t->init(); } else Index: kwritemain.h =================================================================== RCS file: /home/kde/kdebase/kate/app/kwritemain.h,v retrieving revision 1.17 diff -u -3 -p -r1.17 kwritemain.h --- kwritemain.h 1 Jun 2003 16:30:04 -0000 1.17 +++ kwritemain.h 1 Jun 2003 17:48:19 -0000 @@ -41,6 +41,8 @@ class KWrite : public KParts::MainWindow void init(); //initialize caption, status and show void loadURL(const KURL &url); + + KTextEditor::View *kateView() const { return m_kateView; } private: virtual bool queryClose(); @@ -53,8 +55,7 @@ class KWrite : public KParts::MainWindow virtual void dragEnterEvent( QDragEnterEvent * ); virtual void dropEvent( QDropEvent * ); - KTextEditor::View *kateView; - + KTextEditor::View * m_kateView; KRecentFilesAction * m_recentFiles; KToggleAction * m_paShowPath; // KToggleAction * m_paShowToolBar; --Boundary-00=_kFo2+/5O1kjf2mv--