Moving the implementation to core plugin.
const char * const C_EDITORMANAGER = "Core.EditorManager";
const char * const C_NAVIGATION_PANE = "Core.NavigationPane";
const char * const C_PROBLEM_PANE = "Core.ProblemPane";
+const char * const C_GENERAL_OUTPUT_PANE = "Core.GeneralOutputPane";
//default editor kind
const char * const K_DEFAULT_TEXT_EDITOR_DISPLAY_NAME = QT_TRANSLATE_NOOP("OpenWith::Editors", "Plain Text Editor");
messagemanager.cpp \
messageoutputwindow.cpp \
outputpane.cpp \
+ outputwindow.cpp \
vcsmanager.cpp \
statusbarmanager.cpp \
versiondialog.cpp \
messagemanager.h \
messageoutputwindow.h \
outputpane.h \
+ outputwindow.h \
vcsmanager.h \
statusbarmanager.h \
editormanager/editormanager.h \
**************************************************************************/
#include "messageoutputwindow.h"
+#include "icontext.h"
+#include "coreconstants.h"
#include <QtGui/QScrollBar>
MessageOutputWindow::MessageOutputWindow()
{
- m_widget = new TextView;
+ m_widget = new Core::OutputWindow(Core::Context(Core::Constants::C_GENERAL_OUTPUT_PANE));
m_widget->setReadOnly(true);
- m_widget->setFrameStyle(QFrame::NoFrame);
}
MessageOutputWindow::~MessageOutputWindow()
void MessageOutputWindow::append(const QString &text)
{
- bool scroll = m_widget->isScrollbarAtBottom() || !m_widget->isVisible();
- m_widget->append(text);
- if (scroll)
- m_widget->scrollToBottom();
+ m_widget->appendText(text);
}
int MessageOutputWindow::priorityInStatusBar() const
{
return false;
}
-
-// -------- Copied from OutputWindow which should be shared instead
-
-bool TextView::isScrollbarAtBottom() const
-{
- return verticalScrollBar()->value() == verticalScrollBar()->maximum();
-}
-
-void TextView::scrollToBottom()
-{
- verticalScrollBar()->setValue(verticalScrollBar()->maximum());
-}
-
-void TextView::showEvent(QShowEvent *e)
-{
- bool atBottom = isScrollbarAtBottom();
- QTextEdit::showEvent(e);
- if (atBottom)
- scrollToBottom();
-}
-
-void TextView::resizeEvent(QResizeEvent *e)
-{
- //Keep scrollbar at bottom of window while resizing, to ensure we keep scrolling
- //This can happen if window is resized while building, or if the horizontal scrollbar appears
- bool atBottom = isScrollbarAtBottom();
- QTextEdit::resizeEvent(e);
- if (atBottom)
- scrollToBottom();
-}
-
#ifndef MESSAGEOUTPUTWINDOW_H
#define MESSAGEOUTPUTWINDOW_H
-#include <coreplugin/ioutputpane.h>
+#include "ioutputpane.h"
+#include "outputwindow.h"
#include <QtGui/QShowEvent>
#include <QtGui/QResizeEvent>
namespace Core {
namespace Internal {
-class TextView : public QTextEdit
-{
- Q_OBJECT
-
-public:
- TextView(QWidget *parent = 0) : QTextEdit(parent) {}
-
- void showEvent(QShowEvent *);
- void scrollToBottom();
- bool isScrollbarAtBottom() const;
-
-protected:
- void resizeEvent(QResizeEvent *e);
-};
-
class MessageOutputWindow : public Core::IOutputPane
{
Q_OBJECT
bool canNavigate();
private:
- TextView *m_widget;
+ OutputWindow *m_widget;
};
} // namespace Internal
#include "outputwindow.h"
-#include <coreplugin/actionmanager/actionmanager.h>
-#include <coreplugin/actionmanager/command.h>
-#include <coreplugin/coreconstants.h>
-#include <coreplugin/icore.h>
+#include "actionmanager/actionmanager.h"
+#include "actionmanager/command.h"
+#include "coreconstants.h"
+#include "icore.h"
#include <utils/qtcassert.h>
#include <utils/outputformatter.h>
using namespace Utils;
-namespace ProjectExplorer {
-namespace Internal {
+namespace Core {
/*******************/
{
QString text = textIn;
text.remove(QLatin1Char('\r'));
- if (document()->blockCount() > maxLineCount)
+ if (maxLineCount > 0 && document()->blockCount() > maxLineCount)
return;
const bool atBottom = isScrollbarAtBottom();
QTextCursor cursor = QTextCursor(document());
cursor.beginEditBlock();
cursor.insertText(doNewlineEnfocement(text), format);
- if (document()->blockCount() > maxLineCount) {
+ if (maxLineCount > 0 && document()->blockCount() > maxLineCount) {
QTextCharFormat tmp;
tmp.setFontWeight(QFont::Bold);
cursor.insertText(tr("Additional output omitted\n"), tmp);
void OutputWindow::scrollToBottom()
{
verticalScrollBar()->setValue(verticalScrollBar()->maximum());
+ // QPlainTextEdit destroys the first calls value in case of multiline
+ // text, so make sure that the scroll bar actually gets the value set.
+ // Is a noop if the first call succeeded.
+ verticalScrollBar()->setValue(verticalScrollBar()->maximum());
}
void OutputWindow::grayOutOldContent()
setWordWrapMode(QTextOption::NoWrap);
}
-} // namespace Internal
-} // namespace ProjectExplorer
+} // namespace Core
#ifndef OUTPUTWINDOW_H
#define OUTPUTWINDOW_H
+#include "core_global.h"
+#include "icontext.h"
+
#include <utils/outputformatter.h>
-#include <coreplugin/icontext.h>
#include <QtGui/QPlainTextEdit>
namespace Core {
- class IContext;
-}
-
-namespace ProjectExplorer {
-namespace Internal {
+class IContext;
-class OutputWindow : public QPlainTextEdit
+class CORE_EXPORT OutputWindow : public QPlainTextEdit
{
Q_OBJECT
void appendMessage(const QString &out, Utils::OutputFormat format);
/// appends a \p text using \p format without using formater
- void appendText(const QString &text, const QTextCharFormat &format, int maxLineCount);
+ void appendText(const QString &text, const QTextCharFormat &format = QTextCharFormat(), int maxLineCount = -1);
void grayOutOldContent();
void clear();
bool m_mousePressed;
};
-} // namespace Internal
-} // namespace ProjectExplorer
+} // namespace Core
#endif // OUTPUTWINDOW_H
**************************************************************************/
#include "appoutputpane.h"
-#include "outputwindow.h"
#include "projectexplorerconstants.h"
#include "projectexplorer.h"
#include "projectexplorersettings.h"
using namespace ProjectExplorer;
using namespace ProjectExplorer::Internal;
-AppOutputPane::RunControlTab::RunControlTab(RunControl *rc, OutputWindow *w) :
+AppOutputPane::RunControlTab::RunControlTab(RunControl *rc, Core::OutputWindow *w) :
runControl(rc), window(w), asyncClosing(false)
{
}
void AppOutputPane::clearContents()
{
- OutputWindow *currentWindow = qobject_cast<OutputWindow *>(m_tabWidget->currentWidget());
+ Core::OutputWindow *currentWindow = qobject_cast<Core::OutputWindow *>(m_tabWidget->currentWidget());
if (currentWindow)
currentWindow->clear();
}
// Create new
static uint counter = 0;
Core::Context context(Constants::C_APP_OUTPUT, counter++);
- OutputWindow *ow = new OutputWindow(context, m_tabWidget);
+ Core::OutputWindow *ow = new Core::OutputWindow(context, m_tabWidget);
ow->setWindowTitle(tr("Application Output Window"));
// TODO the following is a hidden impossible dependency of projectexplorer on qt4projectmanager
ow->setWindowIcon(QIcon(QLatin1String(Qt4ProjectManager::Constants::ICON_WINDOW)));
qDebug() << "OutputPane::createNewOutputWindow: Adding tab for " << rc;
}
-void AppOutputPane::handleOldOutput(OutputWindow *window) const
+void AppOutputPane::handleOldOutput(Core::OutputWindow *window) const
{
if (ProjectExplorerPlugin::instance()->projectExplorerSettings().cleanOldAppOutput)
window->clear();
#ifndef APPOUTPUTPANE_H
#define APPOUTPUTPANE_H
-#include "outputwindow.h"
-
+#include <coreplugin/outputwindow.h>
#include <coreplugin/ioutputpane.h>
QT_BEGIN_NAMESPACE
private:
struct RunControlTab {
explicit RunControlTab(RunControl *runControl = 0,
- OutputWindow *window = 0);
+ Core::OutputWindow *window = 0);
RunControl* runControl;
- OutputWindow *window;
+ Core::OutputWindow *window;
// Is the run control stopping asynchronously, close the tab once it finishes
bool asyncClosing;
};
int currentIndex() const;
RunControl *currentRunControl() const;
int tabWidgetIndexOf(int runControlIndex) const;
- void handleOldOutput(OutputWindow *window) const;
+ void handleOldOutput(Core::OutputWindow *window) const;
QWidget *m_mainWidget;
QTabWidget *m_tabWidget;
CompileOutputWindow::CompileOutputWindow(BuildManager * /*bm*/)
{
Core::Context context(Constants::C_COMPILE_OUTPUT);
- m_outputWindow = new OutputWindow(context);
+ m_outputWindow = new Core::OutputWindow(context);
m_outputWindow->setWindowTitle(tr("Compile Output"));
m_outputWindow->setWindowIcon(QIcon(QLatin1String(Qt4ProjectManager::Constants::ICON_WINDOW)));
m_outputWindow->setReadOnly(true);
#ifndef COMPILEOUTPUTWINDOW_H
#define COMPILEOUTPUTWINDOW_H
-#include "outputwindow.h"
#include "buildstep.h"
+#include <coreplugin/outputwindow.h>
#include <coreplugin/ioutputpane.h>
#include <QtCore/QHash>
void updateWordWrapMode();
private:
- OutputWindow *m_outputWindow;
+ Core::OutputWindow *m_outputWindow;
QHash<unsigned int, int> m_taskPositions;
ShowOutputTaskHandler * m_handler;
};
#include "iprojectmanager.h"
#include "metatypedeclarations.h"
#include "nodesvisitor.h"
-#include "outputwindow.h"
#include "appoutputpane.h"
#include "persistentsettings.h"
#include "pluginfilefactory.h"
showoutputtaskhandler.h \
vcsannotatetaskhandler.h \
taskwindow.h \
- outputwindow.h \
persistentsettings.h \
projectfilewizardextension.h \
session.h \
showoutputtaskhandler.cpp \
vcsannotatetaskhandler.cpp \
taskwindow.cpp \
- outputwindow.cpp \
persistentsettings.cpp \
projectfilewizardextension.cpp \
session.cpp \