00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef KONSOLE_PART_H
00022 #define KONSOLE_PART_H
00023
00024 #include <kparts/browserextension.h>
00025 #include <kparts/factory.h>
00026
00027
00028 #include <kdialogbase.h>
00029
00030 #include <kde_terminal_interface.h>
00031
00032 #include "schema.h"
00033 #include "session.h"
00034
00035 class KInstance;
00036 class konsoleBrowserExtension;
00037 class TQPushButton;
00038 class TQSpinBox;
00039 class KPopupMenu;
00040 class KActionMenu;
00041 class TQCheckBox;
00042 class KRootPixmap;
00043 class KToggleAction;
00044 class KSelectAction;
00045
00046 namespace KParts { class GUIActivateEvent; }
00047
00048 class konsoleFactory : public KParts::Factory
00049 {
00050 Q_OBJECT
00051 public:
00052 konsoleFactory();
00053 virtual ~konsoleFactory();
00054
00055 virtual KParts::Part* createPartObject(TQWidget *parentWidget = 0, const char *widgetName = 0,
00056 TQObject* parent = 0, const char* name = 0,
00057 const char* classname = "KParts::Part",
00058 const TQStringList &args = TQStringList());
00059
00060 static KInstance *instance();
00061
00062 private:
00063 static KInstance *s_instance;
00064 static KAboutData *s_aboutData;
00065 };
00066
00068
00069 class konsolePart: public KParts::ReadOnlyPart, public TerminalInterface, public ExtTerminalInterface
00070 {
00071 Q_OBJECT
00072 public:
00073 konsolePart(TQWidget *parentWidget, const char *widgetName, TQObject * parent, const char *name, const char *classname = 0);
00074 virtual ~konsolePart();
00075
00076 signals:
00077 void processExited( KProcess * );
00078 void receivedData( const TQString& s );
00079 void forkedChild();
00080 protected:
00081 virtual bool openURL( const KURL & url );
00082 virtual bool openFile() {return false;}
00083 virtual bool closeURL() {return true;}
00084 virtual void guiActivateEvent( KParts::GUIActivateEvent * event );
00085
00086 protected slots:
00087 void showShell();
00088
00089 void doneSession(TESession*);
00090 void sessionDestroyed();
00091 void configureRequest(TEWidget*,int,int x,int y);
00092 void updateTitle(TESession*);
00093 void enableMasterModeConnections();
00094
00095 private slots:
00096 void emitOpenURLRequest(const TQString &url);
00097
00098 void readProperties();
00099 void saveProperties();
00100 void applyProperties();
00101 void setSettingsMenuEnabled( bool );
00102
00103 void sendSignal(int n);
00104 void closeCurrentSession();
00105
00106 void notifySize(int , int );
00107
00108 void slotToggleFrame();
00109 void slotSelectScrollbar();
00110 void slotSelectFont();
00111 void schema_menu_check();
00112 void keytab_menu_activated(int item);
00113 void updateSchemaMenu();
00114 void setSchema(int n);
00115 void pixmap_menu_activated(int item);
00116 void schema_menu_activated(int item);
00117 void slotHistoryType();
00118 void slotSelectBell();
00119 void slotSelectLineSpacing();
00120 void slotBlinkingCursor();
00121 void slotUseKonsoleSettings();
00122 void slotWordSeps();
00123 void slotSetEncoding();
00124 void biggerFont();
00125 void smallerFont();
00126
00127 void autoShowShell();
00128
00129 private:
00130 konsoleBrowserExtension *m_extension;
00131 KURL currentURL;
00132
00133 void makeGUI();
00134 void applySettingsToGUI();
00135
00136 void setSchema(ColorSchema* s);
00137 void updateKeytabMenu();
00138
00139 bool doOpenStream( const TQString& );
00140 bool doWriteStream( const TQByteArray& );
00141 bool doCloseStream();
00142
00143 TQWidget* parentWidget;
00144 TEWidget* te;
00145 TESession* se;
00146 ColorSchemaList* colors;
00147 KRootPixmap* rootxpm;
00148
00149 KActionCollection* actions;
00150 KActionCollection* settingsActions;
00151
00152 KToggleAction* blinkingCursor;
00153 KToggleAction* showFrame;
00154 KToggleAction* m_useKonsoleSettings;
00155
00156 KSelectAction* selectBell;
00157 KSelectAction* selectLineSpacing;
00158 KSelectAction* selectScrollbar;
00159 KSelectAction* selectSetEncoding;
00160
00161 KActionMenu* m_fontsizes;
00162
00163 KPopupMenu* m_keytab;
00164 KPopupMenu* m_schema;
00165 KPopupMenu* m_signals;
00166 KPopupMenu* m_options;
00167 KPopupMenu* m_popupMenu;
00168
00169 TQFont defaultFont;
00170
00171 TQString pmPath;
00172 TQString s_schema;
00173 TQString s_kconfigSchema;
00174 TQString s_word_seps;
00175
00176 bool b_framevis:1;
00177 bool b_histEnabled:1;
00178 bool b_useKonsoleSettings:1;
00179 bool b_autoDestroy:1;
00180 bool b_autoStartShell:1;
00181
00182 int curr_schema;
00183 int n_bell;
00184 int n_keytab;
00185 int n_render;
00186 int n_scroll;
00187 unsigned m_histSize;
00188 bool m_runningShell;
00189 bool m_streamEnabled;
00190 int n_encoding;
00191
00192 public:
00193 virtual bool setPtyFd(int);
00194
00195
00196
00197 void startProgram( const TQString& program,
00198 const TQStrList& args );
00199 void newSession();
00200 void showShellInDir( const TQString& dir );
00201 void sendInput( const TQString& text );
00202 void setAutoDestroy( bool );
00203 void setAutoStartShell( bool );
00204 };
00205
00207
00208 class HistoryTypeDialog : public KDialogBase
00209 {
00210 Q_OBJECT
00211 public:
00212 HistoryTypeDialog(const HistoryType& histType,
00213 unsigned int histSize,
00214 TQWidget *parent);
00215
00216 public slots:
00217 void slotDefault();
00218 void slotSetUnlimited();
00219 void slotHistEnable(bool);
00220
00221 unsigned int nbLines() const;
00222 bool isOn() const;
00223
00224 protected:
00225 TQCheckBox* m_btnEnable;
00226 TQSpinBox* m_size;
00227 TQPushButton* m_setUnlimited;
00228 };
00229
00231
00232 class konsoleBrowserExtension : public KParts::BrowserExtension
00233 {
00234 Q_OBJECT
00235 friend class konsolePart;
00236 public:
00237 konsoleBrowserExtension(konsolePart *parent);
00238 virtual ~konsoleBrowserExtension();
00239
00240 void emitOpenURLRequest(const KURL &url);
00241 };
00242
00243 #endif