summaryrefslogtreecommitdiffstats
path: root/arts/gui/kde/kgraphline_impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'arts/gui/kde/kgraphline_impl.cpp')
-rw-r--r--arts/gui/kde/kgraphline_impl.cpp124
1 files changed, 124 insertions, 0 deletions
diff --git a/arts/gui/kde/kgraphline_impl.cpp b/arts/gui/kde/kgraphline_impl.cpp
new file mode 100644
index 00000000..5a48c000
--- /dev/null
+++ b/arts/gui/kde/kgraphline_impl.cpp
@@ -0,0 +1,124 @@
+ /*
+
+ Copyright (C) 2001 Stefan Westerfeld
+ stefan@space.twc.de
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+
+ */
+
+#include "kgraphline_impl.h"
+#include "kwidgetrepo.h"
+#include "kgraph.h"
+
+using namespace Arts;
+using namespace std;
+
+KGraphLine_impl::KGraphLine_impl()
+{
+ _graphID = -1;
+}
+
+KGraphLine_impl::~KGraphLine_impl()
+{
+ KGraph *kgraph = getKGraph();
+ if(kgraph)
+ kgraph->removeLine(this);
+}
+
+Graph KGraphLine_impl::graph()
+{
+ return Arts::DynamicCast(KWidgetRepo::the()->lookupWidget(_graphID));
+}
+
+void KGraphLine_impl::graph(Graph newGraph)
+{
+ KGraph *kgraph = getKGraph();
+ if(kgraph)
+ kgraph->removeLine(this);
+
+ _graphID = newGraph.widgetID();
+
+ kgraph = getKGraph();
+ if(kgraph)
+ kgraph->addLine(this);
+}
+
+bool KGraphLine_impl::editable()
+{
+ return _editable;
+}
+
+void KGraphLine_impl::editable(bool newEditable)
+{
+ _editable = newEditable;
+
+ KGraph *kgraph = getKGraph();
+ if(kgraph)
+ kgraph->redrawLine(this);
+}
+
+string KGraphLine_impl::color()
+{
+ return _color;
+}
+
+void KGraphLine_impl::color(const std::string& newColor)
+{
+ _color = newColor;
+
+ KGraph *kgraph = getKGraph();
+ if(kgraph)
+ kgraph->redrawLine(this);
+}
+
+vector<GraphPoint> *KGraphLine_impl::points()
+{
+ return new vector<GraphPoint>(_points);
+}
+
+void KGraphLine_impl::points(const vector<GraphPoint>& newPoints)
+{
+ _points = newPoints;
+
+ KGraph *kgraph = getKGraph();
+ if(kgraph)
+ kgraph->redrawLine(this);
+
+ // emitting a change notification is a bit tricky because no real
+ // Arts::AnyRef support is there for sequence<Arts::GraphPoint>
+ Arts::Any any;
+ Arts::Buffer buffer;
+
+ any.type = "*Arts::GraphPoint";
+ writeTypeSeq(buffer,_points);
+ buffer.read(any.value,buffer.size());
+
+ _emit_changed("points_changed",any);
+}
+
+KGraph *KGraphLine_impl::getKGraph()
+{
+ QWidget *widget = KWidgetRepo::the()->lookupQWidget(_graphID);
+ if(!widget)
+ return 0;
+
+ return dynamic_cast<KGraph *>(widget);
+}
+
+namespace Arts {
+ REGISTER_IMPLEMENTATION(KGraphLine_impl);
+}