# HG changeset patch # User Jacob Dawid # Date 1327324527 -3600 # Node ID 36110925f67b75e4359ce58e4ae1e232a39b745f # Parent a026315511a2bf4857b6e9db9a73a705703f0025 Simplified code. diff -r a026315511a2 -r 36110925f67b libqterminal/ColorTables.h --- a/libqterminal/ColorTables.h Mon Jan 23 12:53:14 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -#ifndef _COLOR_TABLE_H -#define _COLOR_TABLE_H - -#include "CharacterColor.h" - -using namespace Konsole; - -static const ColorEntry whiteonblack_color_table[TABLE_COLORS] = -{ - // normal - ColorEntry(QColor(0xFF,0xFF,0xFF), 0, 0 ), ColorEntry( QColor(0x00,0x00,0x00), 1, 0 ), // Dfore, Dback - ColorEntry(QColor(0x00,0x00,0x00), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0x18), 0, 0 ), // Black, Red - ColorEntry(QColor(0x18,0xB2,0x18), 0, 0 ), ColorEntry( QColor(0xB2,0x68,0x18), 0, 0 ), // Green, Yellow - ColorEntry(QColor(0x18,0x18,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0x18,0xB2), 0, 0 ), // Blue, Magenta - ColorEntry(QColor(0x18,0xB2,0xB2), 0, 0 ), ColorEntry( QColor(0xB2,0xB2,0xB2), 0, 0 ), // Cyan, White - // intensiv - ColorEntry(QColor(0x00,0x00,0x00), 0, 1 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 1, 0 ), - ColorEntry(QColor(0x68,0x68,0x68), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0x54), 0, 0 ), - ColorEntry(QColor(0x54,0xFF,0x54), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0x54), 0, 0 ), - ColorEntry(QColor(0x54,0x54,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0x54,0xFF), 0, 0 ), - ColorEntry(QColor(0x54,0xFF,0xFF), 0, 0 ), ColorEntry( QColor(0xFF,0xFF,0xFF), 0, 0 ) -}; - -static const ColorEntry greenonblack_color_table[TABLE_COLORS] = -{ - ColorEntry(QColor( 24, 240, 24), 0, 0), ColorEntry(QColor( 0, 0, 0), 1, 0), - ColorEntry(QColor( 0, 0, 0), 0, 0), ColorEntry(QColor( 178, 24, 24), 0, 0), - ColorEntry(QColor( 24, 178, 24), 0, 0), ColorEntry(QColor( 178, 104, 24), 0, 0), - ColorEntry(QColor( 24, 24, 178), 0, 0), ColorEntry(QColor( 178, 24, 178), 0, 0), - ColorEntry(QColor( 24, 178, 178), 0, 0), ColorEntry(QColor( 178, 178, 178), 0, 0), - // intensive colors - ColorEntry(QColor( 24, 240, 24), 0, 1 ), ColorEntry(QColor( 0, 0, 0), 1, 0 ), - ColorEntry(QColor( 104, 104, 104), 0, 0 ), ColorEntry(QColor( 255, 84, 84), 0, 0 ), - ColorEntry(QColor( 84, 255, 84), 0, 0 ), ColorEntry(QColor( 255, 255, 84), 0, 0 ), - ColorEntry(QColor( 84, 84, 255), 0, 0 ), ColorEntry(QColor( 255, 84, 255), 0, 0 ), - ColorEntry(QColor( 84, 255, 255), 0, 0 ), ColorEntry(QColor( 255, 255, 255), 0, 0 ) -}; - -static const ColorEntry blackonlightyellow_color_table[TABLE_COLORS] = -{ - ColorEntry(QColor( 0, 0, 0), 0, 0), ColorEntry(QColor( 255, 255, 221), 1, 0), - ColorEntry(QColor( 0, 0, 0), 0, 0), ColorEntry(QColor( 178, 24, 24), 0, 0), - ColorEntry(QColor( 24, 178, 24), 0, 0), ColorEntry(QColor( 178, 104, 24), 0, 0), - ColorEntry(QColor( 24, 24, 178), 0, 0), ColorEntry(QColor( 178, 24, 178), 0, 0), - ColorEntry(QColor( 24, 178, 178), 0, 0), ColorEntry(QColor( 178, 178, 178), 0, 0), - ColorEntry(QColor( 0, 0, 0), 0, 1), ColorEntry(QColor( 255, 255, 221), 1, 0), - ColorEntry(QColor(104, 104, 104), 0, 0), ColorEntry(QColor( 255, 84, 84), 0, 0), - ColorEntry(QColor( 84, 255, 84), 0, 0), ColorEntry(QColor( 255, 255, 84), 0, 0), - ColorEntry(QColor( 84, 84, 255), 0, 0), ColorEntry(QColor( 255, 84, 255), 0, 0), - ColorEntry(QColor( 84, 255, 255), 0, 0), ColorEntry(QColor( 255, 255, 255), 0, 0) -}; - - - - - -#endif - diff -r a026315511a2 -r 36110925f67b libqterminal/QTerminal.cpp --- a/libqterminal/QTerminal.cpp Mon Jan 23 12:53:14 2012 +0100 +++ b/libqterminal/QTerminal.cpp Mon Jan 23 14:15:27 2012 +0100 @@ -19,113 +19,54 @@ #include "QTerminal.h" -#include "Session.h" -#include "TerminalDisplay.h" - using namespace Konsole; -void *createTermWidget(int startnow, void *parent) -{ - return (void*) new QTerminal(startnow, (QWidget*)parent); -} - -struct TermWidgetImpl -{ - TermWidgetImpl(QWidget* parent = 0); - - TerminalDisplay *m_terminalDisplay; - Session *m_session; - - Session* createSession(); - TerminalDisplay* createTerminalDisplay(Session *session, QWidget* parent); -}; - -TermWidgetImpl::TermWidgetImpl(QWidget* parent) -{ - this->m_session = createSession(); - this->m_terminalDisplay = createTerminalDisplay(this->m_session, parent); -} - - -Session *TermWidgetImpl::createSession() -{ - Session *session = new Session(); - - session->setTitle(Session::NameRole, "QTermWidget"); - session->setProgram("/bin/bash"); - QStringList args(""); - session->setArguments(args); - session->setAutoClose(true); - - session->setCodec(QTextCodec::codecForName("UTF-8")); - - session->setFlowControlEnabled(true); - session->setHistoryType(HistoryTypeBuffer(1000)); +QTerminal::QTerminal(QWidget *parent) + : QWidget(parent) { + init(); - session->setDarkBackground(true); - - session->setKeyBindings(""); - return session; -} - -TerminalDisplay *TermWidgetImpl::createTerminalDisplay(Session *session, QWidget* parent) -{ -// TerminalDisplay* display = new TerminalDisplay(this); - TerminalDisplay* display = new TerminalDisplay(parent); - - display->setBellMode(TerminalDisplay::NotifyBell); - display->setTerminalSizeHint(true); - display->setTripleClickMode(TerminalDisplay::SelectWholeLine); - display->setTerminalSizeStartup(true); - - display->setRandomSeed(session->sessionId() * 31); + setFocus(Qt::OtherFocusReason); + m_terminalDisplay->resize(this->size()); - return display; -} - - -QTerminal::QTerminal(int startnow, QWidget *parent) -:QWidget(parent) -{ - m_impl = new TermWidgetImpl(this); - - init(); - - if (startnow && m_impl->m_session) { - m_impl->m_session->run(); - } - - this->setFocus( Qt::OtherFocusReason ); - m_impl->m_terminalDisplay->resize(this->size()); - - this->setFocusProxy(m_impl->m_terminalDisplay); -} - -void QTerminal::startShellProgram() -{ - if ( m_impl->m_session->isRunning() ) - return; - - m_impl->m_session->run(); + this->setFocusProxy(m_terminalDisplay); } void QTerminal::init() -{ - m_impl->m_terminalDisplay->setSize(80, 40); +{ + m_session = new Session(); + + m_session->setTitle(Session::NameRole, "QTermWidget"); + m_session->setProgram("/bin/bash"); + QStringList args(""); + m_session->setArguments(args); + m_session->setAutoClose(true); + m_session->setCodec(QTextCodec::codecForName("UTF-8")); + m_session->setFlowControlEnabled(true); + m_session->setHistoryType(HistoryTypeBuffer(1000)); + m_session->setDarkBackground(true); + m_session->setKeyBindings(""); + + m_terminalDisplay = new TerminalDisplay(this); + m_terminalDisplay->setBellMode(TerminalDisplay::NotifyBell); + m_terminalDisplay->setTerminalSizeHint(true); + m_terminalDisplay->setTripleClickMode(TerminalDisplay::SelectWholeLine); + m_terminalDisplay->setTerminalSizeStartup(true); + m_terminalDisplay->setRandomSeed(m_session->sessionId() * 31); + m_terminalDisplay->setSize(80, 40); QFont font = QApplication::font(); font.setFamily("Monospace"); font.setPointSize(10); font.setStyleHint(QFont::TypeWriter); - setTerminalFont(font); - setScrollBarPosition(NoScrollBar); - - m_impl->m_session->addView(m_impl->m_terminalDisplay); - - connect(m_impl->m_session, SIGNAL(finished()), this, SLOT(sessionFinished())); + setTerminalFont(font); + + m_session->run(); + m_session->addView(m_terminalDisplay); + m_terminalDisplay->setScrollBarPosition(TerminalDisplay::ScrollBarRight); + + connect(m_session, SIGNAL(finished()), this, SLOT(sessionFinished())); } - QTerminal::~QTerminal() { emit destroyed(); @@ -134,136 +75,103 @@ void QTerminal::setTerminalFont(QFont &font) { - if (!m_impl->m_terminalDisplay) + if(!m_terminalDisplay) return; - m_impl->m_terminalDisplay->setVTFont(font); + m_terminalDisplay->setVTFont(font); } void QTerminal::setShellProgram(const QString &progname) { - if (!m_impl->m_session) + if(!m_session) return; - m_impl->m_session->setProgram(progname); + m_session->setProgram(progname); } void QTerminal::setWorkingDirectory(const QString& dir) { - if (!m_impl->m_session) + if(!m_session) return; - m_impl->m_session->setInitialWorkingDirectory(dir); + m_session->setInitialWorkingDirectory(dir); } void QTerminal::setArgs(QStringList &args) { - if (!m_impl->m_session) + if (!m_session) return; - m_impl->m_session->setArguments(args); + m_session->setArguments(args); } void QTerminal::setTextCodec(QTextCodec *codec) { - if (!m_impl->m_session) + if(!m_session) return; - m_impl->m_session->setCodec(codec); -} - -void QTerminal::setColorScheme(int scheme) -{ - switch(scheme) { - case COLOR_SCHEME_WHITE_ON_BLACK: - m_impl->m_terminalDisplay->setColorTable(whiteonblack_color_table); - break; - case COLOR_SCHEME_GREEN_ON_BLACK: - m_impl->m_terminalDisplay->setColorTable(greenonblack_color_table); - break; - case COLOR_SCHEME_BLACK_ON_LIGHT_YELLOW: - m_impl->m_terminalDisplay->setColorTable(blackonlightyellow_color_table); - break; - default: //do nothing - break; - }; + m_session->setCodec(codec); } void QTerminal::setSize(int h, int v) { - if (!m_impl->m_terminalDisplay) + if(!m_terminalDisplay) return; - m_impl->m_terminalDisplay->setSize(h, v); + m_terminalDisplay->setSize(h, v); } void QTerminal::setHistorySize(int lines) { - if (lines < 0) - m_impl->m_session->setHistoryType(HistoryTypeFile()); + if(lines < 0) + m_session->setHistoryType(HistoryTypeFile()); else - m_impl->m_session->setHistoryType(HistoryTypeBuffer(lines)); -} - -void QTerminal::setScrollBarPosition(ScrollBarPosition pos) -{ - if (!m_impl->m_terminalDisplay) - return; - m_impl->m_terminalDisplay->setScrollBarPosition((TerminalDisplay::ScrollBarPosition)pos); -} - -void QTerminal::sendText(QString &text) -{ - m_impl->m_session->sendText(text); + m_session->setHistoryType(HistoryTypeBuffer(lines)); } void QTerminal::setReadOnly(bool readonly) { - m_impl->m_terminalDisplay->setReadOnly(readonly); + m_terminalDisplay->setReadOnly(readonly); } void QTerminal::resizeEvent(QResizeEvent*) { -//qDebug("global window resizing...with %d %d", this->size().width(), this->size().height()); - m_impl->m_terminalDisplay->resize(this->size()); + m_terminalDisplay->resize(this->size()); } - void QTerminal::sessionFinished() { emit finished(); } - void QTerminal::copyClipboard() { - m_impl->m_terminalDisplay->copyClipboard(); + m_terminalDisplay->copyClipboard(); } void QTerminal::pasteClipboard() { - m_impl->m_terminalDisplay->pasteClipboard(); + m_terminalDisplay->pasteClipboard(); } void QTerminal::setFlowControlEnabled(bool enabled) { - m_impl->m_session->setFlowControlEnabled(enabled); + m_session->setFlowControlEnabled(enabled); } bool QTerminal::flowControlEnabled(void) { - return m_impl->m_session->flowControlEnabled(); + return m_session->flowControlEnabled(); } void QTerminal::setFlowControlWarningEnabled(bool enabled) { if(flowControlEnabled()) { - // Do not show warning label if flow control is disabled - m_impl->m_terminalDisplay->setFlowControlWarningEnabled(enabled); + m_terminalDisplay->setFlowControlWarningEnabled(enabled); } } void QTerminal::setEnvironment(const QStringList& environment) { - m_impl->m_session->setEnvironment(environment); + m_session->setEnvironment(environment); } void* QTerminal::getTerminalDisplay() { - return static_cast(m_impl->m_terminalDisplay); + return static_cast(m_terminalDisplay); } diff -r a026315511a2 -r 36110925f67b libqterminal/QTerminal.h --- a/libqterminal/QTerminal.h Mon Jan 23 12:53:14 2012 +0100 +++ b/libqterminal/QTerminal.h Mon Jan 23 14:15:27 2012 +0100 @@ -17,83 +17,42 @@ */ -#ifndef _Q_TERM_WIDGET -#define _Q_TERM_WIDGET +#ifndef Q_TERMINAL +#define Q_TERMINAL #include - -struct TermWidgetImpl; +#include "Session.h" +#include "TerminalDisplay.h" -enum COLOR_SCHEME { COLOR_SCHEME_WHITE_ON_BLACK = 1, - COLOR_SCHEME_GREEN_ON_BLACK, - COLOR_SCHEME_BLACK_ON_LIGHT_YELLOW }; +using namespace Konsole; class QTerminal : public QWidget { Q_OBJECT public: - - enum ScrollBarPosition - { - /** Do not show the scroll bar. */ - NoScrollBar=0, - /** Show the scroll bar on the left side of the display. */ - ScrollBarLeft=1, - /** Show the scroll bar on the right side of the display. */ - ScrollBarRight=2 - }; - - - //Creation of widget - QTerminal(int startnow = 1, //start shell programm immediatelly - QWidget *parent = 0); + QTerminal(QWidget *parent = 0); ~QTerminal(); - //start shell program if it was not started in constructor void startShellProgram(); - //look-n-feel, if you don`t like defaults + void setTerminalFont(QFont &font); - // Terminal font - // Default is application font with family Monospace, size 10 - // USE ONLY FIXED-PITCH FONT! - // otherwise symbols' position could be incorrect - void setTerminalFont(QFont &font); - - //environment void setEnvironment(const QStringList& environment); - // Shell program, default is /bin/bash void setShellProgram(const QString &progname); - - //working directory + void setWorkingDirectory(const QString& dir); - // Shell program args, default is none void setArgs(QStringList &args); - - //Text codec, default is UTF-8 + void setTextCodec(QTextCodec *codec); - //Color scheme, default is white on black - void setColorScheme(int scheme); - - //set size void setSize(int h, int v); - - // History size for scrolling - void setHistorySize(int lines); //infinite if lines < 0 - // Presence of scrollbar - void setScrollBarPosition(ScrollBarPosition); - - // Send some text to terminal - void sendText(QString &text); + void setHistorySize(int lines); - // Sets whether flow control is enabled void setFlowControlEnabled(bool enabled); - // Returns whether flow control is enabled bool flowControlEnabled(void); /** @@ -102,17 +61,14 @@ */ void setFlowControlWarningEnabled(bool enabled); - // Sets read-only mode to terminal + void setReadOnly(bool); signals: void finished(); public slots: - // Paste clipboard content to terminal void copyClipboard(); - - // Copies selection to clipboard void pasteClipboard(); protected: @@ -123,17 +79,9 @@ void sessionFinished(); private: - void init(); - TermWidgetImpl *m_impl; + void init(); + TerminalDisplay *m_terminalDisplay; + Session *m_session; }; - -//Maybe useful, maybe not - -#ifdef __cplusplus -extern "C" -#endif -void *createTermWidget(int startnow, void *parent); - -#endif - +#endif // Q_TERMINAL diff -r a026315511a2 -r 36110925f67b libqterminal/TerminalDisplay.cpp --- a/libqterminal/TerminalDisplay.cpp Mon Jan 23 12:53:14 2012 +0100 +++ b/libqterminal/TerminalDisplay.cpp Mon Jan 23 14:15:27 2012 +0100 @@ -47,7 +47,6 @@ #include "konsole_wcwidth.h" #include "ScreenWindow.h" #include "TerminalCharacterDecoder.h" -#include "ColorTables.h" using namespace Konsole; @@ -300,7 +299,7 @@ // QCursor::setAutoHideCursor( this, true ); setUsesMouse(true); - setColorTable(whiteonblack_color_table); + setColorTable(base_color_table); // setColorTable(blackonlightyellow_color_table); setMouseTracking(true); diff -r a026315511a2 -r 36110925f67b libqterminal/TerminalDisplay.h --- a/libqterminal/TerminalDisplay.h Mon Jan 23 12:53:14 2012 +0100 +++ b/libqterminal/TerminalDisplay.h Mon Jan 23 14:15:27 2012 +0100 @@ -31,7 +31,6 @@ // Konsole #include "Filter.h" #include "Character.h" -#include "ColorTables.h" class QDrag; class QDragEnterEvent; diff -r a026315511a2 -r 36110925f67b qterminal/main.cpp --- a/qterminal/main.cpp Mon Jan 23 12:53:14 2012 +0100 +++ b/qterminal/main.cpp Mon Jan 23 14:15:27 2012 +0100 @@ -29,20 +29,9 @@ QMainWindow *mainWindow = new QMainWindow(); QTerminal *terminal = new QTerminal(); - - QFont font = QApplication::font(); - font.setFamily("Monospace"); - font.setPointSize(12); - - terminal->setTerminalFont(font); - - //console->setColorScheme(COLOR_SCHEME_BLACK_ON_LIGHT_YELLOW); - terminal->setScrollBarPosition(QTerminal::ScrollBarRight); - //console->setReadOnly(true); - + mainWindow->setCentralWidget(terminal); - mainWindow->resize(902, 810); - + mainWindow->resize(600, 400); QObject::connect(terminal, SIGNAL(finished()), mainWindow, SLOT(close())); mainWindow->show();