• 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.14
  • kdeedu
  • rocs
  • RocsCore
  • DataStructures
  • LinkedList
ListPlugin.cpp
Go to the documentation of this file.
1 /*
2  This file is part of Rocs.
3  Copyright 2011 Tomaz Canabrava <tomaz.canabrava@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 "ListPlugin.h"
20 
21 #include "DocumentManager.h"
22 #include "Document.h"
23 #include "ListStructure.h"
24 #include "Pointer.h"
25 #include "Data.h"
26 #include "LinkedListPointerItem.h"
27 #include "NodeListItem.h"
28 
29 #include <KAboutData>
30 #include <KComboBox>
31 #include <KLineEdit>
32 #include <KPluginFactory>
33 
34 #include <QtGui/QCheckBox>
35 #include <QtGui/QGridLayout>
36 #include <QtGui/QLabel>
37 
38 #include <KDebug>
39 #include <KMessageBox>
40 
41 static const KAboutData aboutdata("rocs_ListStructure", 0, ki18nc("@title Displayed plugin name", "Linked List Structure") , "0.1");
42 using namespace Rocs;
43 
44 K_PLUGIN_FACTORY(DSPluginFactory, registerPlugin< ListPlugin>();)
45 K_EXPORT_PLUGIN(DSPluginFactory(aboutdata))
46 
47 
48 ListPlugin::ListPlugin(QObject* parent, const QList< QVariant >& /*args*/)
49  : DataStructureBackendInterface(DSPluginFactory::componentData(), parent)
50 {
51 
52 }
53 
54 ListPlugin::~ListPlugin()
55 {
56 
57 }
58 
59 DataStructurePtr ListPlugin::convertToDataStructure(DataStructurePtr ds, Document* parent)
60 {
61  return ListStructure::create(ds, parent);
62 }
63 
64 DataStructurePtr ListPlugin::createDataStructure(Document* parent)
65 {
66  return ListStructure::create(parent);
67 }
68 
69 QGraphicsItem* Rocs::ListPlugin::dataItem(DataPtr node) const
70 {
71  return (new NodeItem(node));
72 }
73 
74 QGraphicsItem* Rocs::ListPlugin::pointerItem(PointerPtr edge) const
75 {
76  return new LinkedListPointerItem(edge);
77 }
78 
79 QLayout* Rocs::ListPlugin::nodeExtraProperties(DataPtr node, QWidget* parentWidget) const
80 {
81  QGridLayout * lay = new QGridLayout(parentWidget);
82  QLabel *_value = new QLabel(i18n("Front value"), parentWidget);
83  KLineEdit *_valueLine = new KLineEdit(parentWidget);
84  _valueLine->setReadOnly(true);
85  if (node->outPointerList().count() == 1) {
86  _valueLine->setText(node->outPointerList().at(0)->to()->property("value").toString());
87  }
88  lay->addWidget(_value, 0, 0);
89  lay->addWidget(_valueLine, 0, 1);
90 
91  return lay;
92 }
93 
94 bool ListPlugin::canConvertFrom(Document* doc) const
95 {
96  QStringList errors;
97  foreach(DataStructurePtr ds, doc->dataStructures()) {
98  //FIXME only default data type considered
99  foreach(DataPtr data, ds->dataList(0)) {
100  if (data->outPointerList().count() > 1)
101  errors.append(i18n("Data \'%1\' has more than one out pointer.", data->identifier()));
102  }
103  }
104 
105  //convert if no errors or user click continue
106  if (errors.isEmpty()
107  || KMessageBox::Continue == KMessageBox::warningContinueCancelList(
108  0,
109  i18n("Cannot convert document \'%1\'", doc->name()),
110  errors)
111  ) {
112  return true;
113  }
114  return false;
115 }
QWidget
DocumentManager.h
QGridLayout::addWidget
void addWidget(QWidget *widget, int row, int column, QFlags< Qt::AlignmentFlag > alignment)
DataStructurePtr
boost::shared_ptr< DataStructure > DataStructurePtr
Definition: CoreTypes.h:38
Rocs::ListPlugin::pointerItem
virtual QGraphicsItem * pointerItem(PointerPtr) const
Definition: ListPlugin.cpp:74
QLayout
Rocs::ListPlugin::dataItem
virtual QGraphicsItem * dataItem(DataPtr) const
Definition: ListPlugin.cpp:69
Rocs::ListPlugin::createDataStructure
virtual DataStructurePtr createDataStructure(Document *parent)
Definition: ListPlugin.cpp:64
ListPlugin.h
QGraphicsItem
QGridLayout
Data.h
Rocs::ListPlugin::canConvertFrom
virtual bool canConvertFrom(Document *doc) const
Check if is possíble to convert from the doc document to this data structure.
Definition: ListPlugin.cpp:94
Document.h
PointerPtr
boost::shared_ptr< Pointer > PointerPtr
Definition: CoreTypes.h:35
QList::append
void append(const T &value)
NodeItem
Definition: NodeItem.h:26
QObject
QList::isEmpty
bool isEmpty() const
Rocs::ListPlugin
Definition: ListPlugin.h:28
QList
NodeListItem.h
QStringList
Document
Definition: Document.h:41
Document::dataStructures
QList< DataStructurePtr > & dataStructures() const
Definition: Document.cpp:227
Pointer.h
Rocs::ListPlugin::~ListPlugin
virtual ~ListPlugin()
Definition: ListPlugin.cpp:54
DataPtr
boost::shared_ptr< Data > DataPtr
Definition: CoreTypes.h:34
Rocs::ListPlugin::convertToDataStructure
virtual DataStructurePtr convertToDataStructure(DataStructurePtr graph, Document *parent)
Definition: ListPlugin.cpp:59
aboutdata
static const KAboutData aboutdata("rocs_ListStructure", 0, ki18nc("@title Displayed plugin name","Linked List Structure"),"0.1")
DataStructureBackendInterface
Definition: DataStructureBackendInterface.h:42
Document::name
QString name() const
Definition: Document.cpp:253
Rocs::ListStructure::create
static DataStructurePtr create(Document *parent)
Definition: ListStructure.cpp:28
ListStructure.h
QLabel
Rocs::ListPlugin::nodeExtraProperties
virtual QLayout * nodeExtraProperties(DataPtr arg1, QWidget *arg2) const
Definition: ListPlugin.cpp:79
LinkedListPointerItem.h
LinkedListPointerItem
the Edge drawing on screen. long explanation here...
Definition: LinkedListPointerItem.h:34
QVariant
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:16:18 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
  • 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