• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

rocs/RocsCore

  • sources
  • kde-4.12
  • kdeedu
  • rocs
  • RocsCore
  • DataStructures
  • Graph
GraphPlugin.cpp
Go to the documentation of this file.
1 /*
2  This file is part of Rocs.
3  Copyright 2010 Wagner Reck <wagner.reck@gmail.com>
4 
5  This program is free software; you can redistribute it and/or
6  modify it under the terms of the GNU General Public License as
7  published by the Free Software Foundation; either version 2 of
8  the License, or (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 #include "GraphPlugin.h"
20 
21 #include "GraphStructure.h"
22 #include "NodeItem.h"
23 #include "EdgeItem.h"
24 #include "Data.h"
25 
26 #include <KAboutData>
27 #include <KPluginFactory>
28 #include <knuminput.h>
29 #include <KMessageBox>
30 #include <KComboBox>
31 
32 #include <QtGui/QGridLayout>
33 #include <QtGui/QSpinBox>
34 #include <QtGui/QLabel>
35 
36 static const KAboutData aboutdata("rocs_GraphStructure", 0, ki18nc("@title Displayed plugin name", "Graph Structure"), "0.1");
37 using namespace Rocs;
38 
39 K_PLUGIN_FACTORY(DSPluginFactory, registerPlugin<GraphPlugin>();)
40 K_EXPORT_PLUGIN(DSPluginFactory(aboutdata))
41 
42 GraphPlugin::GraphPlugin(QObject* parent, const QList<QVariant>& /*args*/)
43  : DataStructureBackendInterface(DSPluginFactory::componentData(), parent)
44 {
45 }
46 
47 GraphPlugin::~GraphPlugin()
48 {
49 }
50 
51 DataStructurePtr GraphPlugin::convertToDataStructure(DataStructurePtr ds, Document * parent)
52 {
53  return GraphStructure::create(ds, parent);
54 }
55 
56 DataStructurePtr GraphPlugin::createDataStructure(Document* parent)
57 {
58  return GraphStructure::create(parent);
59 }
60 
61 QGraphicsItem* GraphPlugin::dataItem(DataPtr node) const
62 {
63  return new NodeItem(node);
64 }
65 
66 QGraphicsItem* GraphPlugin::pointerItem(PointerPtr edge) const
67 {
68  return new EdgeItem(edge);
69 }
70 QLayout* GraphPlugin::dataExtraProperties(DataPtr node, QWidget* parentWidget) const
71 {
72  QGridLayout * lay = new QGridLayout(parentWidget);
73  QSpinBox * y = new QSpinBox(parentWidget);
74  QSpinBox * x = new QSpinBox(parentWidget);
75  KDoubleNumInput * size = new KDoubleNumInput(parentWidget);
76  y->setMinimum(-9999);
77  y->setMaximum(9999);
78  x->setMinimum(-9999);
79  x->setMaximum(9999);
80  size->setMinimum(0.15);
81  size->setMaximum(3.0);
82  size->setSingleStep(0.15);
83  y->setValue(node->y());
84  x->setValue(node->x());
85  size->setValue(node->width());
86 
87  connect(x, SIGNAL(valueChanged(int)), node.get(), SLOT(setX(int)));
88  connect(y, SIGNAL(valueChanged(int)), node.get(), SLOT(setY(int)));
89  connect(size, SIGNAL(valueChanged(double)), node.get(), SLOT(setWidth(double)));
90 
91  QFrame * line = new QFrame(parentWidget);
92  line->setFrameShape(QFrame::VLine);
93 
94  lay->addWidget(new QLabel(i18nc("coordinate axis", "x"), parentWidget), 0, 0);
95  lay->addWidget(new QLabel(i18nc("coordinate axis", "y"), parentWidget), 1, 0);
96  lay->addWidget(new QLabel(i18n("Size"), parentWidget), 0, 3);
97  lay->addWidget(line, 0, 2, 2, 1);
98  lay->addWidget(x, 0, 1);
99  lay->addWidget(y, 1, 1);
100  lay->addWidget(size, 0, 4);
101 
102  return lay;
103 }
104 
105 QLayout* GraphPlugin::pointerExtraProperties(PointerPtr arg1, QWidget* arg2) const
106 {
107  return DataStructureBackendInterface::pointerExtraProperties(arg1, arg2);
108 }
109 
110 QLayout* GraphPlugin::dataStructureExtraProperties(DataStructurePtr graph, QWidget* parentWidget) const
111 {
112  QGridLayout *lay = new QGridLayout(parentWidget);
113  QLabel * _graphTypeText = new QLabel(i18n("Graph Type:"));
114  KComboBox * _graphTypeCombo = new KComboBox(parentWidget);
115  _graphTypeCombo->insertItem(GraphStructure::Graph, i18nc("@label:inlistbox", "Graph"));
116  _graphTypeCombo->insertItem(GraphStructure::Multigraph,
117  i18nc("@label:inlistbox graph for which several edges between same nodes may exist", "Multigraph"));
118 
119  lay->addWidget(_graphTypeText, 0, 0);
120  lay->addWidget(_graphTypeCombo, 0, 1);
121 
122  GraphStructure * tmp = dynamic_cast<GraphStructure *>(boost::static_pointer_cast<GraphStructure>(graph).get());
123  _graphTypeCombo->setCurrentIndex(tmp->graphType());
124 
125  connect(_graphTypeCombo, SIGNAL(currentIndexChanged(int)), tmp, SLOT(setGraphType(int)));
126 
127  return lay;
128 }
129 
130 bool GraphPlugin::canConvertFrom(Document*) const
131 {
132  return true;
133 }
Rocs::GraphStructure
Definition: GraphStructure.h:29
EdgeItem
the Edge drawing on screen. long explanation here...
Definition: EdgeItem.h:35
EdgeItem.h
Rocs::GraphPlugin::canConvertFrom
bool canConvertFrom(Document *) const
Check if is possíble to convert from the doc document to this data structure.
Definition: GraphPlugin.cpp:130
Rocs::GraphPlugin::pointerExtraProperties
virtual QLayout * pointerExtraProperties(PointerPtr arg1, QWidget *arg2) const
Definition: GraphPlugin.cpp:105
DataStructurePtr
boost::shared_ptr< DataStructure > DataStructurePtr
Definition: CoreTypes.h:38
Rocs::GraphPlugin::dataItem
virtual QGraphicsItem * dataItem(DataPtr) const
Definition: GraphPlugin.cpp:61
Rocs::GraphStructure::graphType
GRAPH_TYPE graphType() const
Returns type of the graph given by enum.
Definition: GraphStructure.cpp:413
Rocs::GraphPlugin::~GraphPlugin
virtual ~GraphPlugin()
Definition: GraphPlugin.cpp:47
QObject
Data.h
Rocs::GraphPlugin::convertToDataStructure
virtual DataStructurePtr convertToDataStructure(DataStructurePtr graph, Document *parent)
Definition: GraphPlugin.cpp:51
GraphStructure.h
Rocs::GraphPlugin::dataExtraProperties
virtual QLayout * dataExtraProperties(DataPtr arg1, QWidget *arg2) const
Definition: GraphPlugin.cpp:70
PointerPtr
boost::shared_ptr< Pointer > PointerPtr
Definition: CoreTypes.h:35
NodeItem
Definition: NodeItem.h:26
Rocs::GraphPlugin::dataStructureExtraProperties
virtual QLayout * dataStructureExtraProperties(DataStructurePtr graph, QWidget *parentWidget) const
Definition: GraphPlugin.cpp:110
GraphPlugin.h
Rocs::GraphPlugin::createDataStructure
virtual DataStructurePtr createDataStructure(Document *parent)
Definition: GraphPlugin.cpp:56
Document
Definition: Document.h:41
aboutdata
static const KAboutData aboutdata("rocs_GraphStructure", 0, ki18nc("@title Displayed plugin name","Graph Structure"),"0.1")
Rocs::GraphStructure::Multigraph
Definition: GraphStructure.h:37
Rocs::GraphStructure::create
static DataStructurePtr create(Document *parent)
Definition: GraphStructure.cpp:44
Rocs::GraphPlugin
Definition: GraphPlugin.h:28
DataStructureBackendInterface::pointerExtraProperties
virtual QLayout * pointerExtraProperties(PointerPtr pointer, QWidget *widget) const
Definition: DataStructureBackendInterface.cpp:32
DataPtr
boost::shared_ptr< Data > DataPtr
Definition: CoreTypes.h:34
NodeItem.h
DataStructureBackendInterface
Definition: DataStructureBackendInterface.h:42
Rocs::GraphStructure::Graph
Definition: GraphStructure.h:36
Rocs::GraphPlugin::pointerItem
virtual QGraphicsItem * pointerItem(PointerPtr) const
Definition: GraphPlugin.cpp:66
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:42:25 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

rocs/RocsCore

Skip menu "rocs/RocsCore"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal