You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
529 lines
15 KiB
C++
529 lines
15 KiB
C++
/*
|
|
This file is part of Konsole, an X terminal.
|
|
Copyright (C) 1996 by Matthias Ettrich <ettrich@kde.org>
|
|
Copyright (C) 1997,1998 by Lars Doelle <lars.doelle@on-line.de>
|
|
|
|
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.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
02110-1301 USA.
|
|
*/
|
|
/* The material contained in here more or less directly orginates from */
|
|
/* kvt, which is copyright (c) 1996 by Matthias Ettrich <ettrich@kde.org> */
|
|
/* */
|
|
|
|
#ifndef KONSOLE_H
|
|
#define KONSOLE_H
|
|
|
|
|
|
#include <tdemainwindow.h>
|
|
#include <kdialogbase.h>
|
|
#include <ksimpleconfig.h>
|
|
#include <keditcl.h>
|
|
|
|
#include <twinmodule.h>
|
|
|
|
#include <tqstrlist.h>
|
|
#include <tqintdict.h>
|
|
#include <tqptrdict.h>
|
|
#include <tqsignalmapper.h>
|
|
|
|
#include "TEPty.h"
|
|
#include "TEWidget.h"
|
|
#include "TEmuVt102.h"
|
|
#include "session.h"
|
|
#include "schema.h"
|
|
#include "konsolebookmarkmenu.h"
|
|
#include "konsolebookmarkhandler.h"
|
|
|
|
#include "konsoleiface.h"
|
|
|
|
#define KONSOLE_VERSION "1.6.6"
|
|
|
|
class KRootPixmap;
|
|
class TQLabel;
|
|
class TQCheckBox;
|
|
class KonsoleFind;
|
|
class TDEPopupMenu;
|
|
class TDEAction;
|
|
class TDEToggleAction;
|
|
class TDESelectAction;
|
|
class TDERadioAction;
|
|
class KTabWidget;
|
|
class TQToolButton;
|
|
class KURIFilterData;
|
|
|
|
// Defined in main.C
|
|
const char *konsole_shell(TQStrList &args);
|
|
|
|
class Konsole : public TDEMainWindow, virtual public KonsoleIface
|
|
{
|
|
Q_OBJECT
|
|
|
|
friend class KonsoleSessionManaged;
|
|
public:
|
|
|
|
Konsole(const char * name, int histon, bool menubaron, bool tabbaron,
|
|
bool frameon, bool scrollbaron,
|
|
TQCString type = 0, bool b_inRestore = false, const int wanted_tabbar = 0,
|
|
const TQString &workdir=TQString::null);
|
|
|
|
~Konsole();
|
|
void setColLin(int columns, int lines);
|
|
void setAutoClose(bool on);
|
|
void initFullScreen();
|
|
void initSessionFont(int fontNo);
|
|
void initSessionFont(TQFont f);
|
|
void initSessionKeyTab(const TQString &keyTab);
|
|
void initMonitorActivity(bool on);
|
|
void initMonitorSilence(bool on);
|
|
void initMasterMode(bool on);
|
|
void initTabColor(TQColor color);
|
|
void initHistory(int lines, bool enable);
|
|
void newSession(const TQString &program, const TQStrList &args, const TQString &term, const TQString &icon, const TQString &title, const TQString &cwd);
|
|
void setSchema(const TQString & path);
|
|
void setEncoding(int);
|
|
void setSessionTitle(TQString&, TESession* = 0);
|
|
void setSessionEncoding(const TQString&, TESession* = 0);
|
|
|
|
void enableFullScripting(bool b);
|
|
void enableFixedSize(bool b);
|
|
|
|
void setDefaultSession(const TQString &filename);
|
|
void showTipOnStart();
|
|
|
|
// Additional functions for DCOP
|
|
int sessionCount() { return sessions.count(); }
|
|
|
|
TQString currentSession();
|
|
TQString newSession(const TQString &type);
|
|
TQString sessionId(const int position);
|
|
|
|
void activateSession(const TQString& sessionId);
|
|
void feedAllSessions(const TQString &text);
|
|
void sendAllSessions(const TQString &text);
|
|
|
|
KURL baseURL() const;
|
|
|
|
virtual bool processDynamic(const TQCString &fun, const TQByteArray &data, TQCString& replyType, TQByteArray &replyData);
|
|
virtual QCStringList functionsDynamic();
|
|
|
|
void callReadPropertiesInternal(TDEConfig *config, int number) { readPropertiesInternal(config,number); }
|
|
|
|
enum TabPosition { TabNone, TabTop, TabBottom };
|
|
enum TabViewModes { ShowIconAndText = 0, ShowTextOnly = 1, ShowIconOnly = 2 };
|
|
|
|
public slots:
|
|
void activateSession(int position);
|
|
void activateSession(TQWidget*);
|
|
void slotUpdateSessionConfig(TESession *session);
|
|
void slotResizeSession(TESession*, TQSize);
|
|
void slotSetSessionEncoding(TESession *session, const TQString &encoding);
|
|
void slotGetSessionSchema(TESession *session, TQString &schema);
|
|
void slotSetSessionSchema(TESession *session, const TQString &schema);
|
|
|
|
void makeGUI();
|
|
TQString newSession();
|
|
|
|
protected:
|
|
|
|
bool queryClose();
|
|
void saveProperties(TDEConfig* config);
|
|
void readProperties(TDEConfig* config);
|
|
|
|
private slots:
|
|
void configureRequest(TEWidget*,int,int,int);
|
|
void activateSession();
|
|
void activateSession(TESession*);
|
|
void closeCurrentSession();
|
|
void confirmCloseCurrentSession(TESession* _se=0);
|
|
void doneSession(TESession*);
|
|
void slotCouldNotClose();
|
|
void toggleFullScreen();
|
|
bool fullScreen();
|
|
void setFullScreen(bool on);
|
|
void schema_menu_activated(int item);
|
|
void pixmap_menu_activated(int item, TEWidget* tewidget=0);
|
|
void keytab_menu_activated(int item);
|
|
void schema_menu_check();
|
|
void attachSession(TESession*);
|
|
void slotDetachSession();
|
|
void bookmarks_menu_check();
|
|
void newSession(int kind);
|
|
void newSessionTabbar(int kind);
|
|
void updateSchemaMenu();
|
|
void updateKeytabMenu();
|
|
void updateRMBMenu();
|
|
|
|
void changeTabTextColor(TESession*, int);
|
|
void changeColumns(int);
|
|
void changeColLin(int columns, int lines);
|
|
void notifySessionState(TESession* session,int state);
|
|
void notifySize(int columns, int lines);
|
|
void updateTitle(TESession* _se=0);
|
|
void prevSession();
|
|
void nextSession();
|
|
void activateMenu();
|
|
void slotMovedTab(int,int);
|
|
void moveSessionLeft();
|
|
void moveSessionRight();
|
|
void allowPrevNext();
|
|
void setSchema(int n, TEWidget* tewidget=0); // no slot necessary?
|
|
void sendSignal(int n);
|
|
void slotClearTerminal();
|
|
void slotResetClearTerminal();
|
|
void slotSelectTabbar();
|
|
void slotToggleMenubar();
|
|
void slotRenameSession();
|
|
void slotRenameSession(TESession* ses, const TQString &name);
|
|
void slotToggleMonitor();
|
|
void slotToggleMasterMode();
|
|
void slotClearAllSessionHistories();
|
|
void slotHistoryType();
|
|
void slotClearHistory();
|
|
void slotFindHistory();
|
|
void slotSaveHistory();
|
|
void slotSelectBell();
|
|
void slotSelectSize();
|
|
void slotSelectFont();
|
|
void slotInstallBitmapFonts();
|
|
void slotSelectScrollbar();
|
|
void loadScreenSessions();
|
|
void updateFullScreen(bool on);
|
|
|
|
void slotOpenSelection();
|
|
void slotOpenURI(int n);
|
|
|
|
void slotSaveSettings();
|
|
void slotSaveSessionsProfile();
|
|
void slotConfigureNotifications();
|
|
void slotConfigureKeys();
|
|
void slotConfigure();
|
|
void reparseConfiguration();
|
|
|
|
void disableMasterModeConnections();
|
|
void enableMasterModeConnections();
|
|
void enterURL( const TQString&, const TQString& );
|
|
void newSession( const TQString&, const TQString& );
|
|
|
|
void slotFind();
|
|
void slotFindDone();
|
|
void slotFindNext();
|
|
void slotFindPrevious();
|
|
|
|
void showTip();
|
|
|
|
void slotSetSelectionEnd() { te->setSelectionEnd(); }
|
|
void slotCopyClipboard() { te->copyClipboard(); }
|
|
void slotPasteClipboard() { te->pasteClipboard(); }
|
|
void slotPasteSelection() { te->pasteSelection(); }
|
|
|
|
void listSessions();
|
|
void switchToSession();
|
|
|
|
void biggerFont();
|
|
void smallerFont();
|
|
|
|
void slotZModemDetected(TESession *session);
|
|
void slotZModemUpload();
|
|
|
|
void slotPrint();
|
|
|
|
void toggleBidi();
|
|
|
|
void slotTabContextMenu(TQWidget*, const TQPoint &);
|
|
void slotTabDetachSession();
|
|
void slotTabRenameSession();
|
|
void slotTabSelectColor();
|
|
void slotTabCloseSession();
|
|
void slotTabToggleMonitor();
|
|
void slotTabToggleMasterMode();
|
|
void slotTabbarContextMenu(const TQPoint &);
|
|
void slotTabSetViewOptions(int);
|
|
void slotTabbarToggleDynamicHide();
|
|
void slotToggleAutoResizeTabs();
|
|
void slotFontChanged();
|
|
|
|
void slotSetEncoding();
|
|
private:
|
|
KSimpleConfig *defaultSession();
|
|
TQString newSession(KSimpleConfig *co, TQString pgm = TQString::null, const TQStrList &args = TQStrList(),
|
|
const TQString &_term = TQString::null, const TQString &_icon = TQString::null,
|
|
const TQString &_title = TQString::null, const TQString &_cwd = TQString::null);
|
|
void readProperties(TDEConfig *config, const TQString &schema, bool globalConfigOnly);
|
|
void applySettingsToGUI();
|
|
void makeTabWidget();
|
|
void makeBasicGUI();
|
|
void runSession(TESession* s);
|
|
void addSession(TESession* s);
|
|
void detachSession(TESession* _se=0);
|
|
void setColorPixmaps();
|
|
void renameSession(TESession* ses);
|
|
|
|
void setSchema(ColorSchema* s, TEWidget* tewidget=0);
|
|
void setMasterMode(bool _state, TESession* _se=0);
|
|
|
|
void buildSessionMenus();
|
|
void addSessionCommand(const TQString & path);
|
|
void loadSessionCommands();
|
|
void createSessionMenus();
|
|
void addScreenSession(const TQString & path, const TQString & socket);
|
|
void resetScreenSessions();
|
|
void checkBitmapFonts();
|
|
|
|
void initTEWidget(TEWidget* new_te, TEWidget* default_te);
|
|
|
|
void createSessionTab(TEWidget *widget, const TQIconSet& iconSet,
|
|
const TQString &text, int index = -1);
|
|
TQIconSet iconSetForSession(TESession *session) const;
|
|
|
|
bool eventFilter( TQObject *o, TQEvent *e );
|
|
|
|
void setMenuAcceleratos();
|
|
|
|
TQPtrList<TEWidget> activeTEs();
|
|
|
|
TQPtrDict<TESession> action2session;
|
|
TQPtrDict<TDERadioAction> session2action;
|
|
TQPtrList<TESession> sessions;
|
|
|
|
TQIntDict<KSimpleConfig> no2command; //QT4 - convert to QList
|
|
|
|
KSimpleConfig* m_defaultSession;
|
|
TQString m_defaultSessionFilename;
|
|
|
|
KTabWidget* tabwidget;
|
|
TEWidget* te; // the visible TEWidget, either sole one or one of many
|
|
TESession* se;
|
|
TESession* se_previous;
|
|
TESession* m_initialSession;
|
|
ColorSchemaList* colors;
|
|
TQString s_encodingName;
|
|
|
|
TQPtrDict<KRootPixmap> rootxpms;
|
|
KWinModule* kWinModule;
|
|
|
|
KMenuBar* menubar;
|
|
KStatusBar* statusbar;
|
|
|
|
// Text strings for main menu entries
|
|
TQString m_session_string;
|
|
TQString m_edit_string;
|
|
TQString m_view_string;
|
|
TQString m_bookmarks_string;
|
|
TQString m_options_string;
|
|
TQString m_help_string;
|
|
|
|
// Main menu entry ids
|
|
int m_session_id;
|
|
int m_edit_id;
|
|
int m_view_id;
|
|
int m_bookmarks_id;
|
|
int m_options_id;
|
|
int m_help_id;
|
|
|
|
TDEPopupMenu* m_session;
|
|
TDEPopupMenu* m_edit;
|
|
TDEPopupMenu* m_view;
|
|
TDEPopupMenu* m_bookmarks;
|
|
TDEPopupMenu* m_bookmarksSession;
|
|
TDEPopupMenu* m_options;
|
|
TDEPopupMenu* m_schema;
|
|
TDEPopupMenu* m_keytab;
|
|
TDEPopupMenu* m_tabbarSessionsCommands;
|
|
TDEPopupMenu* m_signals;
|
|
TDEPopupMenu* m_help;
|
|
TDEPopupMenu* m_rightButton;
|
|
TDEPopupMenu* m_sessionList;
|
|
TDEPopupMenu* m_tabPopupMenu;
|
|
TDEPopupMenu* m_tabPopupTabsMenu;
|
|
TDEPopupMenu* m_tabbarPopupMenu;
|
|
TDEPopupMenu* m_openSelection;
|
|
|
|
TDEAction *m_zmodemUpload;
|
|
TDEToggleAction *monitorActivity, *m_tabMonitorActivity;
|
|
TDEToggleAction *monitorSilence, *m_tabMonitorSilence;
|
|
TDEToggleAction *masterMode, *m_tabMasterMode;
|
|
TDEToggleAction *showMenubar;
|
|
TDEToggleAction *m_fullscreen;
|
|
|
|
TDESelectAction *selectSize;
|
|
TDESelectAction *selectFont;
|
|
TDESelectAction *selectScrollbar;
|
|
TDESelectAction *selectTabbar;
|
|
TDESelectAction *selectBell;
|
|
TDESelectAction *selectSetEncoding;
|
|
|
|
TDEAction *m_clearHistory;
|
|
TDEAction *m_findHistory;
|
|
TDEAction *m_findNext;
|
|
TDEAction *m_findPrevious;
|
|
TDEAction *m_saveHistory;
|
|
TDEAction *m_detachSession;
|
|
TDEAction *m_moveSessionLeft;
|
|
TDEAction *m_moveSessionRight;
|
|
|
|
TDEAction *m_copyClipboard;
|
|
TDEAction *m_pasteClipboard;
|
|
TDEAction *m_pasteSelection;
|
|
TDEAction *m_clearTerminal;
|
|
TDEAction *m_resetClearTerminal;
|
|
TDEAction *m_clearAllSessionHistories;
|
|
TDEAction *m_renameSession;
|
|
TDEAction *m_saveProfile;
|
|
TDEAction *m_closeSession;
|
|
TDEAction *m_print;
|
|
TDEAction *m_quit;
|
|
|
|
TDEActionCollection *m_shortcuts;
|
|
|
|
KonsoleBookmarkHandler *bookmarkHandler;
|
|
KonsoleBookmarkHandler *bookmarkHandlerSession;
|
|
|
|
KonsoleFind* m_finddialog;
|
|
bool m_find_first;
|
|
bool m_find_found;
|
|
TQString m_find_pattern;
|
|
TQString selectedURL;
|
|
|
|
int cmd_serial;
|
|
int cmd_first_screen;
|
|
int n_keytab;
|
|
int n_defaultKeytab;
|
|
int n_scroll;
|
|
int n_tabbar;
|
|
int n_bell;
|
|
int n_render;
|
|
int curr_schema; // current schema no
|
|
int wallpaperSource;
|
|
int sessionIdCounter;
|
|
int monitorSilenceSeconds;
|
|
|
|
TQString s_schema;
|
|
TQString s_tdeconfigSchema;
|
|
TQString s_word_seps; // characters that are considered part of a word
|
|
TQString pmPath; // pixmap path
|
|
TQString dropText;
|
|
TQFont defaultFont;
|
|
TQSize defaultSize;
|
|
|
|
TQRect _saveGeometry;
|
|
|
|
TQTimer m_closeTimeout;
|
|
|
|
TabViewModes m_tabViewMode;
|
|
bool b_dynamicTabHide;
|
|
bool b_autoResizeTabs;
|
|
bool b_installBitmapFonts;
|
|
|
|
bool b_framevis:1;
|
|
bool b_metaAsAlt:1;
|
|
bool b_fullscreen:1;
|
|
bool m_menuCreated:1;
|
|
bool b_warnQuit:1;
|
|
bool isRestored:1;
|
|
bool b_allowResize:1; // Whether application may resize
|
|
bool b_fixedSize:1; // Whether user may resize
|
|
bool b_addToUtmp:1;
|
|
bool b_xonXoff:1;
|
|
bool b_bidiEnabled:1;
|
|
|
|
bool b_histEnabled:1;
|
|
bool b_fullScripting:1;
|
|
bool b_showstartuptip:1;
|
|
bool b_sessionShortcutsEnabled:1;
|
|
bool b_sessionShortcutsMapped:1;
|
|
bool b_matchTabWinTitle:1;
|
|
bool b_mouseWheelScroll:1;
|
|
bool b_menuAccelerators:1;
|
|
|
|
unsigned int m_histSize;
|
|
int m_separator_id;
|
|
|
|
TESession* m_contextMenuSession;
|
|
|
|
TQToolButton* m_newSessionButton;
|
|
TQToolButton* m_removeSessionButton;
|
|
TQPoint m_newSessionButtonMousePressPos;
|
|
|
|
TQSignalMapper* sessionNumberMapper;
|
|
TQStringList sl_sessionShortCuts;
|
|
TQString s_workDir;
|
|
|
|
TQColor m_tabColor;
|
|
KURIFilterData* m_filterData;
|
|
};
|
|
|
|
class TQSpinBox;
|
|
|
|
class HistoryTypeDialog : public KDialogBase
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
HistoryTypeDialog(const HistoryType& histType,
|
|
unsigned int histSize,
|
|
TQWidget *parent);
|
|
|
|
public slots:
|
|
|
|
void slotHistEnable(bool);
|
|
void slotDefault();
|
|
void slotSetUnlimited();
|
|
|
|
unsigned int nbLines() const;
|
|
bool isOn() const;
|
|
|
|
protected:
|
|
TQLabel* m_label;
|
|
TQSpinBox* m_size;
|
|
TQCheckBox* m_btnEnable;
|
|
TQPushButton* m_setUnlimited;
|
|
};
|
|
|
|
class SizeDialog : public KDialogBase
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
SizeDialog(unsigned int const columns,
|
|
unsigned int const lines,
|
|
TQWidget *parent);
|
|
|
|
public slots:
|
|
void slotDefault();
|
|
|
|
unsigned int columns() const;
|
|
unsigned int lines() const;
|
|
|
|
protected:
|
|
TQSpinBox* m_columns;
|
|
TQSpinBox* m_lines;
|
|
};
|
|
|
|
class KonsoleFind : public KEdFind
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
KonsoleFind( TQWidget *parent = 0, const char *name=0, bool modal=true );
|
|
bool reg_exp() const;
|
|
|
|
private slots:
|
|
void slotEditRegExp();
|
|
|
|
private:
|
|
TQCheckBox* m_asRegExp;
|
|
TQDialog* m_editorDialog;
|
|
TQPushButton* m_editRegExp;
|
|
};
|
|
|
|
#endif
|