summaryrefslogtreecommitdiff
path: root/extra/kdeedu-cantor/sage58.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extra/kdeedu-cantor/sage58.patch')
-rw-r--r--extra/kdeedu-cantor/sage58.patch123
1 files changed, 123 insertions, 0 deletions
diff --git a/extra/kdeedu-cantor/sage58.patch b/extra/kdeedu-cantor/sage58.patch
new file mode 100644
index 000000000..d17b55a99
--- /dev/null
+++ b/extra/kdeedu-cantor/sage58.patch
@@ -0,0 +1,123 @@
+diff --git a/src/backends/sage/sagecompletionobject.cpp b/src/backends/sage/sagecompletionobject.cpp
+index dec0c8f..a132295 100644
+--- a/src/backends/sage/sagecompletionobject.cpp
++++ b/src/backends/sage/sagecompletionobject.cpp
+@@ -52,7 +52,7 @@ void SageCompletionObject::fetchCompletions()
+
+ //cache the value of the "_" variable into __hist_tmp__, so we can restore the previous result
+ //after complete() was evaluated
+- m_expression=session()->evaluateExpression("__hist_tmp__=_; __IPYTHON__.complete(\""+command()+"\");_=__hist_tmp__");
++ m_expression=session()->evaluateExpression("__hist_tmp__=_; __CANTOR_IPYTHON_SHELL__.complete(\""+command()+"\");_=__hist_tmp__");
+ connect(m_expression, SIGNAL(gotResult()), this,
+ SLOT(extractCompletions()));
+
+@@ -71,11 +71,19 @@ void SageCompletionObject::extractCompletions()
+ kDebug()<<"something went wrong fetching tab completion";
+ return;
+ }
+-
++
+ //the result looks like "['comp1', 'comp2']" parse it
++
++ //for sage version 5.7 this looks like
++ //('s1', ['comp1','comp2']) where s1 is the string we called complete with
++
+ QString txt=res->toHtml().trimmed();
++ txt.remove("<br/>");
++ txt=txt.mid(txt.indexOf(command())+command().length()+2).trimmed();
+ txt=txt.mid(1); //remove [
+- txt.chop(1); //remove ]
++ txt.chop(2); //remove ]
++
++ kDebug()<<"completion string: "<<txt;
+
+ QStringList tmp=txt.split(',');
+ QStringList completions;
+diff --git a/src/backends/sage/sageexpression.cpp b/src/backends/sage/sageexpression.cpp
+index eabdda2..fbde7c1 100644
+--- a/src/backends/sage/sageexpression.cpp
++++ b/src/backends/sage/sageexpression.cpp
+@@ -122,7 +122,7 @@ void SageExpression::parseOutput(const QString& text)
+ //reset the indices
+ index=index2=-1;
+ }
+-
++
+ m_outputCache+=output;
+
+ if(m_promptCount<=0)
+@@ -160,11 +160,9 @@ void SageExpression::addFileResult( const QString& path )
+ {
+ KUrl url( path );
+ KMimeType::Ptr type=KMimeType::findByUrl(url);
+- kDebug()<<"MimeType: "<<type->name();
+- if(type->name().contains("image"))
++ if(m_imagePath.isEmpty()||type->name().contains("image")||path.endsWith(".png")||path.endsWith(".gif"))
+ {
+- kDebug()<<"adding file "<<path<<" "<<url;
+- m_imagePath=path;
++ m_imagePath=path;
+ }
+ }
+
+@@ -172,8 +170,11 @@ void SageExpression::evalFinished()
+ {
+ kDebug()<<"evaluation finished";
+ kDebug()<<m_outputCache;
++
++ //check if our image path contains a valid image that we can try to show
++ bool hasImage=!m_imagePath.isNull();
+
+- if ( m_imagePath.isNull() ) //If this result contains a file, drop the text information
++ if ( !hasImage ) //If this result contains a file, drop the text information
+ {
+ Cantor::TextResult* result=0;
+
+@@ -219,7 +220,7 @@ void SageExpression::evalFinished()
+ }
+ else
+ {
+- KMimeType::Ptr type=KMimeType::findByUrl(m_imagePath);
++ KMimeType::Ptr type=KMimeType::findByUrl(m_imagePath);
+ if(type->is("image/gif"))
+ setResult( new Cantor::AnimationResult( KUrl(m_imagePath ),i18n("Result of %1" , command() ) ) );
+ else
+diff --git a/src/backends/sage/sagesession.cpp b/src/backends/sage/sagesession.cpp
+index a535277..d8ac325 100644
+--- a/src/backends/sage/sagesession.cpp
++++ b/src/backends/sage/sagesession.cpp
+@@ -38,10 +38,13 @@ const QByteArray SageSession::SageAlternativePrompt="....: "; //Text, sage outpu
+ static QByteArray initCmd="os.environ['PAGER'] = 'cat' \n "\
+ "sage.misc.pager.EMBEDDED_MODE = True \n "\
+ "sage.misc.viewer.BROWSER='' \n "\
++ "sage.misc.viewer.viewer.png_viewer('') \n" \
+ "sage.plot.plot3d.base.SHOW_DEFAULTS['viewer'] = 'tachyon' \n"\
+ "sage.misc.latex.EMBEDDED_MODE = True \n "\
+ "os.environ['PAGER'] = 'cat' \n "\
+- " __IPYTHON__.shell.autoindent=False \n "\
++ "%colors nocolor \n "\
++ "__CANTOR_IPYTHON_SHELL__=get_ipython() \n "\
++ "__CANTOR_IPYTHON_SHELL__.autoindent=False \n "\
+ "print '____TMP_DIR____', sage.misc.misc.SAGE_TMP\n"\
+ "print '____END_OF_INIT____' \n ";
+
+@@ -277,6 +280,7 @@ void SageSession::waitForNextPrompt()
+
+ void SageSession::fileCreated( const QString& path )
+ {
++ kDebug()<<"got a file "<<path;
+ SageExpression* expr=m_expressionQueue.first();
+ if ( expr )
+ expr->addFileResult( path );
+@@ -290,9 +294,9 @@ void SageSession::setTypesettingEnabled(bool enable)
+ //the _ and __IP.outputcache() are needed to keep the
+ // _ operator working
+ if (enable)
+- evaluateExpression("sage.misc.latex.pretty_print_default(true);_;__IP.outputcache()", Cantor::Expression::DeleteOnFinish);
++ evaluateExpression("sage.misc.latex.pretty_print_default(true)", Cantor::Expression::DeleteOnFinish);
+ else
+- evaluateExpression("sage.misc.latex.pretty_print_default(false);_;__IP.outputcache()", Cantor::Expression::DeleteOnFinish);
++ evaluateExpression("sage.misc.latex.pretty_print_default(false)", Cantor::Expression::DeleteOnFinish);
+ }
+
+ Cantor::CompletionObject* SageSession::completionFor(const QString& command, int index)