/*************************************************************************** plugin_kateinsertcommand.h - description ------------------- begin : THU Apr 19 2001 copyright : (C) 2001 by Anders Lund email : anders@alweb.dk ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #ifndef _PLUGIN_KATE_INSERT_COMMAND_H_ #define _PLUGIN_KATE_INSERT_COMMAND_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include class InsertCommandConfigPage; namespace Kate { class PluginConfigPage; class PluginView; } class TDEConfig; class TDEProcess; class KShellProcess; class TQButtonGroup; class TQCheckBox; class TQSpinBox; class TQStringList; class WaitDlg; class PluginKateInsertCommand : public Kate::Plugin, Kate::PluginViewInterface, Kate::PluginConfigInterfaceExtension { Q_OBJECT public: PluginKateInsertCommand( TQObject* parent = 0, const char* name = 0, const TQStringList& = TQStringList() ); virtual ~PluginKateInsertCommand(); void addView (Kate::MainWindow *win); void removeView (Kate::MainWindow *win); Kate::View *kv; WaitDlg *wdlg; TQPtrList m_views; uint configPages () const { return 1; } Kate::PluginConfigPage *configPage (uint , TQWidget *w, const char *name=0); TQString configPageName(uint) const { return i18n("Insert Command"); } TQString configPageFullName(uint) const { return i18n("Configure Insert Command Plugin"); } TQPixmap configPagePixmap (uint /*number = 0*/, int /*size = TDEIcon::SizeSmall*/) const { return 0L; } private: void initConfigPage( InsertCommandConfigPage* ); KShellProcess *sh; TQString workingdir; TQString cmd; TQStringList cmdhist; bool bInsStdErr; int dialogSettings; TDEConfig *config; public slots: void slotInsertCommand(); void slotAbort(); void applyConfig( InsertCommandConfigPage* ); private slots: void slotReceivedStdout(TDEProcess*, char*, int); void slotReceivedStderr(TDEProcess*, char*, int); void slotProcessExited(TDEProcess*); void slotShowWaitDlg(); }; class CmdPrompt : public KDialogBase { Q_OBJECT public: CmdPrompt(TQWidget* parent=0, const char* name=0, const TQStringList& cmdhist=TQStringList(), const TQString& dir=TQString(), const TQString& docdir=TQString(), int settings=0); ~CmdPrompt(); TQString command()const { return cmb_cmd->currentText(); } bool insertStdErr()const { return cb_insStdErr->isChecked(); } bool printCmd()const { return cb_printCmd->isChecked(); } TQString wd()const { return wdreq->url(); } private slots: void slotTextChanged(const TQString &text); private: KHistoryCombo *cmb_cmd; KURLRequester *wdreq; TQCheckBox *cb_insStdErr; TQCheckBox *cb_printCmd; }; class WaitDlg : public KDialogBase { public: WaitDlg(TQWidget* parent, const TQString& text=TQString(), const TQString& title=i18n("Please Wait")); ~WaitDlg(); }; /** Config page for the plugin. */ class InsertCommandConfigPage : public Kate::PluginConfigPage { Q_OBJECT friend class PluginKateInsertCommand; public: InsertCommandConfigPage(TQObject* parent = 0L, TQWidget *parentWidget = 0L); ~InsertCommandConfigPage() {} /** Reimplemented from Kate::PluginConfigPage * just emits configPageApplyRequest( this ). */ void apply(); void reset () { ; } void defaults () { ; } signals: /** Ask the plugin to set initial values */ void configPageApplyRequest( InsertCommandConfigPage* ); /** Ask the plugin to apply changes */ void configPageInitRequest( InsertCommandConfigPage* ); protected: TQSpinBox *sb_cmdhistlen; //TQCheckBox *cb_startindocdir; TQButtonGroup *rg_startin; }; #endif // _PLUGIN_KATE_INSERT_COMMAND_H_