summaryrefslogtreecommitdiff
path: root/extra/kdeedu-cantor/sage58.patch
blob: d17b55a99df09a6e1c6835e4e004cb1b48382718 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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)