diff -r b0dd75e285d2 -r 0954f5dd2cd0 ginebra/emulator/chromeconsole.cpp --- a/ginebra/emulator/chromeconsole.cpp Fri May 14 15:40:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,144 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -#include "chromeconsole.h" -#include "../chromeview.h" -#include "../chromewidget.h" -#include "qwebpage.h" -#include "qwebframe.h" -#include "ui_console.h" - -ChromeConsole::ChromeConsole(ChromeView *chromeView) - : QDialog(), - m_chromeView(chromeView), - m_historyIndex(0) -{ - m_ui = new Ui_ConsoleDialog; - m_ui->setupUi(this); - - QList sizes; - sizes.append(300); - sizes.append(30); - m_ui->splitter->setSizes(sizes); - - // Read the saved state from disk. - try { - QFile file("console.dat"); - if(file.open(QIODevice::ReadOnly)) { - QDataStream in(&file); - QString str; - in >> str; - m_ui->outputEdit->setPlainText(str); - in >> str; - m_ui->inputEdit->setPlainText(str); - int i; - in >> i; - QTextCursor cursor = m_ui->inputEdit->textCursor(); - cursor.setPosition(i); - m_ui->inputEdit->setTextCursor(cursor); - in >> m_expressionHistory; - file.close(); - } - } - catch(...) { - } - m_ui->outputEdit->moveCursor(QTextCursor::End); - m_ui->outputEdit->ensureCursorVisible(); -} - -QVariant ChromeConsole::evaluateExpression(const QString &expression) { - m_expressionHistory.push_front(expression); - m_historyIndex = 0; - - QVariant result = m_chromeView->getChromeWidget()->chromePage()->mainFrame()->evaluateJavaScript(expression); - qDebug() << result; - return result; -} - -void ChromeConsole::evaluate() { // slot - QString expression = m_ui->inputEdit->toPlainText(); - m_ui->outputEdit->appendPlainText(">> " + expression); - QVariant result = evaluateExpression(expression); - - // Figure out the best way to print the result, must be a better way to do this... - if(result == QVariant()) { - m_ui->outputEdit->appendPlainText("undefined"); - } - else if(result.toString() != "") { - m_ui->outputEdit->appendPlainText(result.toString()); - } - else if(result.type() == QVariant::List) { - m_ui->outputEdit->appendPlainText(result.toStringList().join(",")); - } - else { - // Probably a complex object, this won't be a real javascript value but it - // will be informative to the developer. - //m_ui->outputEdit->appendPlainText(result.typeName()); - QString resultString; - QDebug debug(&resultString); - debug << result; - m_ui->outputEdit->appendPlainText(resultString); - } - - m_ui->outputEdit->ensureCursorVisible(); - - // Force outputEdit to repaint, otherwise get garbled text (at least on Windows). - // Note: m_ui->outputEdit->update() doesn't work... - m_ui->outputEdit->hide(); - m_ui->outputEdit->show(); -} - -void ChromeConsole::keyPressEvent(QKeyEvent *event) { - switch(event->key()) { - case Qt::Key_Enter: - case Qt::Key_Return: - if(event->modifiers() | Qt::ControlModifier) - evaluate(); - break; - case Qt::Key_Up: - if(event->modifiers() | Qt::ControlModifier) { - if(m_historyIndex < m_expressionHistory.count() - 1) - m_ui->inputEdit->setPlainText(m_expressionHistory[++m_historyIndex]); - } - break; - case Qt::Key_Down: - if(event->modifiers() | Qt::ControlModifier) { - if(m_historyIndex > 0) - m_ui->inputEdit->setPlainText(m_expressionHistory[--m_historyIndex]); - } - break; - } -} - -void ChromeConsole::accept() { // slot - try { - // Save the state to disk. - QFile file("console.dat"); - if(file.open(QIODevice::WriteOnly)) { - QDataStream out(&file); - out << m_ui->outputEdit->toPlainText(); - out << m_ui->inputEdit->toPlainText(); - out << m_ui->inputEdit->textCursor().position(); - out << m_expressionHistory; - file.close(); - } - } - catch(...) { - } - QDialog::accept(); -}