[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kalgebra/analitzaplot] /: Adapt to changes in analitzaplot
From:       Aleix Pol <aleixpol () kde ! org>
Date:       2012-09-23 22:44:15
Message-ID: 20120923224415.A9368A6094 () git ! kde ! org
[Download RAW message or body]

Git commit ce2497884451724626e95d2bbe05bd8dea63eab4 by Aleix Pol.
Committed on 24/09/2012 at 00:44.
Pushed by apol into branch 'analitzaplot'.

Adapt to changes in analitzaplot

M  +4    -2    mobile/kalgebramobile.cpp
M  +4    -4    src/dictionary.cpp
M  +7    -4    src/functionedit.cpp
M  +21   -17   src/kalgebra.cpp

http://commits.kde.org/kalgebra/ce2497884451724626e95d2bbe05bd8dea63eab4

diff --git a/mobile/kalgebramobile.cpp b/mobile/kalgebramobile.cpp
index 2dff057..4a63ab5 100644
--- a/mobile/kalgebramobile.cpp
+++ b/mobile/kalgebramobile.cpp
@@ -22,6 +22,7 @@
 #include <analitzagui/variablesmodel.h>
 #include <analitzaplot/plotsmodel.h>
 #include <analitzaplot/planecurve.h>
+#include <analitzaplot/plotsfactory.h>
 #include "analitzawrapper.h"
 
 #include <QDeclarativeContext>
@@ -51,7 +52,7 @@ PlotsModel* KAlgebraMobile::functionsModel()
 {
 	if(!m_functionsModel) {
 		m_functionsModel = new PlotsModel(this);
-		connect(m_functionsModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), \
SLOT(functionRemoved(QString))); +		connect(m_functionsModel, \
SIGNAL(rowsRemoved(QModelIndex,int,int)), \
SLOT(functionRemoved(QModelIndex,int,int)));  connect(m_functionsModel, \
SIGNAL(rowsInserted(QModelIndex,int,int)), \
SLOT(functionInserted(QModelIndex,int,int)));  connect(m_functionsModel, \
SIGNAL(dataChanged(QModelIndex,QModelIndex)), SLOT(functionModified(QModelIndex, \
QModelIndex)));  }
@@ -104,7 +105,8 @@ QStringList KAlgebraMobile::addFunction(const QString& \
expression, double up, do  QColor fcolor = randomFunctionColor();
 	
 	QStringList err;
-	PlaneCurve* it = new PlaneCurve(e, fname, fcolor, m_vars);
+	PlotBuilder req = PlotsFactory::self()->requestPlot(e, Dim2D);
+	PlaneCurve* it = static_cast<PlaneCurve*>(req.create(fcolor, fname, m_vars));
 	if(up!=down)
 		it->setInterval(it->parameters().first(), down, up);
 	
diff --git a/src/dictionary.cpp b/src/dictionary.cpp
index c66b19c..720c813 100644
--- a/src/dictionary.cpp
+++ b/src/dictionary.cpp
@@ -20,6 +20,9 @@
 #include <analitza/variables.h>
 #include <analitza/expression.h>
 #include <analitzagui/operatorsmodel.h>
+#include <analitzaplot/plotsmodel.h>
+#include <analitzaplot/plotsview2d.h>
+#include <analitzaplot/plotsfactory.h>
 
 #include <QLabel>
 #include <QGroupBox>
@@ -28,9 +31,6 @@
 #include <QFormLayout>
 #include <KLocale>
 #include <QtMmlWidget>
-#include <analitzaplot/plotsmodel.h>
-#include <analitzaplot/plotsview2d.h>
-#include <analitzaplot/planecurve.h>
 
 Dictionary::Dictionary(QWidget *p) : QWidget(p)
 {
@@ -118,7 +118,7 @@ void Dictionary::activated(const QModelIndex& idx, const \
QModelIndex& prev)  if(!error.isEmpty())
 			qDebug() << "dict formula error: " << error << e.toMathMLPresentation();
 
-		m_funcs->addPlot(new PlaneCurve(e, "func", QColor(0,150,0), m_vars));
+		m_funcs->addPlot(PlotsFactory::self()->requestPlot(e, \
Dim2D).create(QColor(0,150,0), "dict", m_vars));  } else {
 		QString error;
 		m_name->setText(QString());
diff --git a/src/functionedit.cpp b/src/functionedit.cpp
index a4d0736..58d99e9 100644
--- a/src/functionedit.cpp
+++ b/src/functionedit.cpp
@@ -36,6 +36,7 @@
 #include <analitzaplot/planecurve.h>
 #include <analitzaplot/plotsmodel.h>
 #include <analitzaplot/plotsview2d.h>
+#include <analitzaplot/plotsfactory.h>
 
 namespace {
 	static const int resolution = 200;
@@ -53,7 +54,7 @@ FunctionEdit::FunctionEdit(QWidget *parent)
 	m_name = new KLineEdit(this);
 	
 	m_func = new ExpressionEdit(this);
-    m_func->setExamples(PlaneCurve::examples());
+    m_func->setExamples(PlotsFactory::self()->examples(Dim2D));
 	m_func->setAns("x");
 	connect(m_func, SIGNAL(textChanged()), this, SLOT(edit()));
 	connect(m_func, SIGNAL(returnPressed()), this, SLOT(ok()));
@@ -259,8 +260,8 @@ void FunctionEdit::edit()
 	bool added = false;
 	
 	PlaneCurve* f = 0;
-	QStringList errors = PlaneCurve::canDraw(expression());
-	if(errors.isEmpty())
+	PlotBuilder req = PlotsFactory::self()->requestPlot(expression(), Dim2D);
+	if(req.canDraw())
 		f = createFunction();
 	
 	if(f && f->isCorrect())
@@ -273,6 +274,7 @@ void FunctionEdit::edit()
 		setState(QString("%1:=%2")
 			.arg(m_name->text()).arg(f->expression().toString()), false);
 	} else {
+		QStringList errors = req.errors();
 		if(f)
 			errors = f->errors();
 		Q_ASSERT(!errors.isEmpty());
@@ -299,7 +301,8 @@ void FunctionEdit::focusInEvent(QFocusEvent *)
 
 PlaneCurve* FunctionEdit::createFunction() const
 {
-	PlaneCurve* curve = new PlaneCurve(expression(), name(), color(), m_vars);
+	PlotBuilder req = PlotsFactory::self()->requestPlot(expression(), Dim2D);
+	PlaneCurve* curve = static_cast<PlaneCurve*>(req.create(color(), name(), m_vars));
 	if(m_calcUplimit != m_calcDownlimit) {
 		foreach(const QString& var, curve->parameters())
 			curve->setInterval(var, m_calcUplimit, m_calcDownlimit);
diff --git a/src/kalgebra.cpp b/src/kalgebra.cpp
index 52f7777..cdc0ec7 100644
--- a/src/kalgebra.cpp
+++ b/src/kalgebra.cpp
@@ -55,6 +55,7 @@
 #include <KRecentFilesAction>
 #include <KApplication>
 #include <kabstractfilewidget.h>
+#include <analitzaplot/plotsfactory.h>
 
 class Add2DOption : public InlineOptions
 {
@@ -64,9 +65,8 @@ class Add2DOption : public InlineOptions
 		{}
 		
 		virtual QString id() const { return "add2d"; }
-		virtual bool matchesExpression(const Analitza::Expression& exp, const \
                Analitza::ExpressionType& functype) const
-		{
-			return FunctionGraph::canDraw(exp, Dim2D).isEmpty();
+		virtual bool matchesExpression(const Analitza::Expression& exp, const \
Analitza::ExpressionType& functype) const { +			return \
PlotsFactory::self()->requestPlot(exp, Dim2D).canDraw();  }
 
 		virtual QString caption() const { return i18n("Plot 2D"); }
@@ -88,7 +88,7 @@ class Add3DOption : public InlineOptions
 		virtual QString id() const { return "add3d"; }
 		virtual bool matchesExpression(const Analitza::Expression& exp, const \
Analitza::ExpressionType& functype) const  {
-			return FunctionGraph::canDraw(exp, Dim3D).isEmpty();
+			return PlotsFactory::self()->requestPlot(exp, Dim2D).canDraw();
 		}
 
 		virtual QString caption() const { return i18n("Plot 3D"); }
@@ -285,6 +285,7 @@ KAlgebra::KAlgebra(QWidget *parent) : KMainWindow(parent)
 	t_model3d = new PlotsModel(this);
 	m_graph3d = new PlotsView3D(tridim);
 	m_graph3d->setModel(t_model3d);
+// 	m_graph3d->setBackgroundColor(Qt::black);
 	
 	tridim->setLayout(t_layo);
 	m_tabs->addTab(tridim, i18n("&3D Graph"));
@@ -292,7 +293,6 @@ KAlgebra::KAlgebra(QWidget *parent) : KMainWindow(parent)
 	t_layo->addWidget(t_exp);
 	
 	connect(t_exp,  SIGNAL(returnPressed()), this, SLOT(new_func3d()));
-	connect(m_graph3d, SIGNAL(status(QString)), this, SLOT(changeStatusBar(QString)));
 	c_results->addOptionsObserver(new Add3DOption(this));
 	
 	////////menu
@@ -301,7 +301,6 @@ KAlgebra::KAlgebra(QWidget *parent) : KMainWindow(parent)
 	t_actions[0] = t_menu->addAction(i18n("&Transparency"), this, \
SLOT(toggleTransparency()));  t_menu->addAction(KStandardAction::save(this, \
SLOT(save3DGraph()), this));  t_menu->addAction(KIcon("zoom-original"), i18n("&Reset \
                View"), m_graph3d, SLOT(resetView()));
-	t_menu->addSeparator()->setText(i18n("Type"));
 	t_actions[2] = t_menu->addAction(i18n("Dots"), this, SLOT(set_dots()));
 	t_actions[3] = t_menu->addAction(i18n("Lines"), this, SLOT(set_lines()));
 	t_actions[4] = t_menu->addAction(i18n("Solid"), this, SLOT(set_solid()));
@@ -392,7 +391,8 @@ void KAlgebra::add2D(const Analitza::Expression& exp)
 {
 	qDebug() << "adding" << exp.toString();
 	
-	PlaneCurve* curve = new PlaneCurve(exp, b_funcsModel->freeId(), \
randomFunctionColor(), c_results->analitza()->variables()); +	PlotItem* curve = \
PlotsFactory::self()->requestPlot(exp, Dim2D).create(randomFunctionColor(), \
b_funcsModel->freeId(), +																		   c_results->analitza()->variables());
 	b_funcsModel->addPlot(curve);
 	
 	m_tabs->setCurrentIndex(1);
@@ -516,33 +516,36 @@ void KAlgebra::new_func3d()
 {
 #ifdef HAVE_OPENGL
 	Analitza::Expression exp = t_exp->expression();
-	QStringList errors = FunctionGraph::canDraw(exp, Dim3D);
-	if(errors.isEmpty()) {
+	PlotBuilder plot = PlotsFactory::self()->requestPlot(exp, Dim3D);
+	if(plot.canDraw()) {
 		t_model3d->clear();
-		t_model3d->addPlot(new FunctionGraph(exp, Dim3D, "func3d", Qt::yellow, \
c_results->analitza()->variables())); +		t_model3d->addPlot(plot.create(Qt::yellow, \
"func3d", c_results->analitza()->variables()));  } else
-		changeStatusBar(i18n("Errors: %1", errors.join(i18n(", "))));
+		changeStatusBar(i18n("Errors: %1", plot.errors().join(i18n(", "))));
 #endif
 }
 
 void KAlgebra::set_dots()
 {
 #ifdef HAVE_OPENGL
-// 	m_graph3d->setMethod(PlotsView3D::Dots);
+	if(t_model3d->rowCount()>0)
+		m_graph3d->itemAt(0)->setPlotStyle(PlotItem::Dots);
 #endif
 }
 
 void KAlgebra::set_lines()
 {
 #ifdef HAVE_OPENGL
-// 	m_graph3d->setMethod(PlotsView3D::Lines);
+	if(t_model3d->rowCount()>0)
+		m_graph3d->itemAt(0)->setPlotStyle(PlotItem::Wired);
 #endif
 }
 
 void KAlgebra::set_solid()
 {
 #ifdef HAVE_OPENGL
-// 	m_graph3d->setMethod(PlotsView3D::Solid);
+	if(t_model3d->rowCount()>0)
+		m_graph3d->itemAt(0)->setPlotStyle(PlotItem::Solid);
 #endif
 }
 
@@ -550,8 +553,9 @@ void KAlgebra::save3DGraph()
 {
 #ifdef HAVE_OPENGL
 	QString path = KFileDialog::getSaveFileName(KUrl(), i18n("*.png|PNG File"), this, \
                QString(), KFileDialog::ConfirmOverwrite);
-	if(!path.isEmpty())
-		m_graph3d->saveSnapshot(path);
+// 	if(!path.isEmpty())
+// 		m_graph3d->saveSnapshot(path);
+#warning TODO: port to the new viewer
 #endif
 }
 
@@ -682,7 +686,7 @@ void KAlgebra::add3D(const Analitza::Expression& exp)
 {
 #ifdef HAVE_OPENGL
 	t_model3d->clear();
-	t_model3d->addPlot(new FunctionGraph(exp, Dim3D, "func3d", Qt::yellow, \
c_results->analitza()->variables())); \
+	t_model3d->addPlot(PlotsFactory::self()->requestPlot(exp, Dim3D).create(Qt::yellow, \
"func3d_console", c_results->analitza()->variables()));  m_tabs->setCurrentIndex(2);
 #endif
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic