[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