[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdeedu/cantor/src
From: Alexander Rieder <alexanderrieder () gmail ! com>
Date: 2010-09-11 12:58:10
Message-ID: 20100911130225.2AAA2AC888 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1174184 by arieder:
- color the prompt depending on the status of the expression
- add possibiliy to insert entries by right clicking between entries
another patch by Alex, thanks.
CCMAIL: ngativ@gmail.com
M +1 -0 cantor.cpp
M +29 -2 commandentry.cpp
M +40 -0 worksheet.cpp
M +1 -0 worksheet.h
--- trunk/KDE/kdeedu/cantor/src/cantor.cpp #1174183:1174184
@@ -82,6 +82,7 @@
m_tabWidget=new KTabWidget(this);
m_tabWidget->setCloseButtonEnabled(true);
m_tabWidget->setMovable( true );
+ m_tabWidget->setDocumentMode(true);
setCentralWidget(m_tabWidget);
connect(m_tabWidget, SIGNAL(currentChanged(int)), this, \
SLOT(activateWorksheet(int)));
--- trunk/KDE/kdeedu/cantor/src/commandentry.cpp #1174183:1174184
@@ -141,6 +141,7 @@
connect(expr, SIGNAL(idChanged()), this, SLOT(updatePrompt()));
connect(expr, SIGNAL(statusChanged(Cantor::Expression::Status)), this, \
SLOT(expressionChangedStatus(Cantor::Expression::Status)));
connect(expr, SIGNAL(needsAdditionalInformation(const QString&)), this, \
SLOT(showAdditionalInformationPrompt(const QString&))); + connect(expr, \
SIGNAL(statusChanged(Cantor::Expression::Status)), this, SLOT(updatePrompt()));
updatePrompt();
@@ -264,9 +265,14 @@
defaultMenu->addAction(KStandardAction::paste(m_worksheet));
defaultMenu->addSeparator();
+ if(!m_worksheet->isRunning())
+ {
defaultMenu->addAction(KIcon("system-run"),i18n("Evaluate \
Worksheet"),m_worksheet,SLOT(evaluate()),0); if (!isEmpty())
defaultMenu->addAction(i18n("Evaluate \
Entry"),m_worksheet,SLOT(evaluateCurrentEntry()),0); + }
+ else
+ defaultMenu->addAction(KIcon("process-stop"),i18n("Interrupt"),m_worksheet,SLOT(interrupt()),0);
defaultMenu->addSeparator();
defaultMenu->addAction(KIcon("edit-delete"),i18n("Remove Entry"), \
m_worksheet, SLOT(removeCurrentEntry())); @@ -808,16 +814,37 @@
void CommandEntry::updatePrompt()
{
+ KColorScheme color = KColorScheme( QPalette::Normal, KColorScheme::View);
QTextTableCell cell=m_table->cellAt(0, 0);
QTextCursor c=cell.firstCursorPosition();
+ QTextCharFormat cformat = c.charFormat();
+
+ cformat.clearForeground();
c.setPosition(cell.lastCursorPosition().position(), QTextCursor::KeepAnchor);
+ c.setCharFormat(cformat);
+ cformat.setFontWeight(QFont::Bold);
+ //insert the session id if available
if(m_expression&&m_worksheet->showExpressionIds())
- c.insertHtml(QString("<b>%1</b>%2").arg(QString::number(m_expression->id()), \
CommandEntry::Prompt)); + \
c.insertText(QString::number(m_expression->id()),cformat); +
+ //detect the correct color for the prompt, depending on the
+ //Expression state
+ if(m_expression)
+ {
+ if(m_expression ->status() == Cantor::Expression::Computing&& \
m_worksheet->isRunning()) + \
cformat.setForeground(color.foreground(KColorScheme::PositiveText)); + else \
if(m_expression ->status() == Cantor::Expression::Error) + \
cformat.setForeground(color.foreground(KColorScheme::NegativeText)); + else \
if(m_expression ->status() == Cantor::Expression::Interrupted) + \
cformat.setForeground(color.foreground(KColorScheme::NeutralText)); else
- c.insertHtml(CommandEntry::Prompt);
+ cformat.setFontWeight(QFont::Normal);
}
+ c.insertText(CommandEntry::Prompt,cformat);
+}
+
void CommandEntry::invalidate()
{
m_table=0;
--- trunk/KDE/kdeedu/cantor/src/worksheet.cpp #1174183:1174184
@@ -209,8 +209,34 @@
if (entry != m_currentEntry)
setCurrentEntry(entry);
}
+ else
+ {
+ KMenu* defaultMenu = new KMenu(this);
+
+ if(!isRunning())
+ defaultMenu->addAction(KIcon("system-run"),i18n("Evaluate \
Worksheet"),this,SLOT(evaluate()),0); + else
+ defaultMenu->addAction(KIcon("process-stop"),i18n("Interrupt"),this,SLOT(interrupt()),0);
+
+ defaultMenu ->addSeparator();
+
+ if(m_entries.last()->lastPosition() < cursor.position())
+ {
+ defaultMenu->addAction(i18n("Append Command \
Entry"),this,SLOT(appendCommandEntry()),0); + \
defaultMenu->addAction(i18n("Append Text Entry"),this,SLOT(appendTextEntry()),0); +
}
+ else
+ {
+ setCurrentEntry(entryNextTo(cursor));
+ defaultMenu->addAction(i18n("Insert Command \
Entry"),this,SLOT(insertCommandEntryBefore()),0); + \
defaultMenu->addAction(i18n("Insert Text \
Entry"),this,SLOT(insertTextEntryBefore()),0); + }
+ defaultMenu->popup(event->globalPos());
+ }
+}
+
void Worksheet::mouseReleaseEvent(QMouseEvent* event)
{
QTextCursor oldCursor=textCursor();
@@ -353,6 +379,19 @@
return entry;
}
+WorksheetEntry* Worksheet::entryNextTo(const QTextCursor& cursor)
+{
+ WorksheetEntry* entry=0;
+ foreach(entry, m_entries)
+ {
+ if (entry->lastPosition() > cursor.position())
+ break;
+ }
+
+ return entry;
+}
+
+
WorksheetEntry* Worksheet::appendEntry(const int type)
{
QTextCursor cursor=document()->rootFrame()->lastCursorPosition();
@@ -468,6 +507,7 @@
void Worksheet::interrupt()
{
m_session->interrupt();
+ emit updatePrompt();
}
void Worksheet::interruptCurrentEntryEvaluation()
--- trunk/KDE/kdeedu/cantor/src/worksheet.h #1174183:1174184
@@ -119,6 +119,7 @@
WorksheetEntry* currentEntry();
WorksheetEntry* entryAt(const QTextCursor& cursor);
WorksheetEntry* entryAt(int row);
+ WorksheetEntry* entryNextTo(const QTextCursor& cursor);
private:
Cantor::Session *m_session;
ResultProxy* m_proxy;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic