iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ModuleRep.H
Go to the documentation of this file.
1 /*! @file
2  @author Unknown
3  @copyright GNU Public License (GPL v3)
4  @section License
5  @verbatim
6  // ////////////////////////////////////////////////////////////////////////
7  // The iLab Neuromorphic Robotics Toolkit (NRT) //
8  // Copyright 2010-2012 by the University of Southern California (USC) //
9  // and the iLab at USC. //
10  // //
11  // iLab - University of Southern California //
12  // Hedco Neurociences Building, Room HNB-10 //
13  // Los Angeles, Ca 90089-2520 - USA //
14  // //
15  // See http://ilab.usc.edu for information about this project. //
16  // ////////////////////////////////////////////////////////////////////////
17  // This file is part of The iLab Neuromorphic Robotics Toolkit. //
18  // //
19  // The iLab Neuromorphic Robotics Toolkit is free software: you can //
20  // redistribute it and/or modify it under the terms of the GNU General //
21  // Public License as published by the Free Software Foundation, either //
22  // version 3 of the License, or (at your option) any later version. //
23  // //
24  // The iLab Neuromorphic Robotics Toolkit is distributed in the hope //
25  // that it will be useful, but WITHOUT ANY WARRANTY; without even the //
26  // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //
27  // PURPOSE. See the GNU General Public License for more details. //
28  // //
29  // You should have received a copy of the GNU General Public License //
30  // along with The iLab Neuromorphic Robotics Toolkit. If not, see //
31  // <http://www.gnu.org/licenses/>. //
32  // ////////////////////////////////////////////////////////////////////////
33  @endverbatim */
34 #ifndef SRC_APPS_NRTDESIGNER_MODULEREP_H
35 #define SRC_APPS_NRTDESIGNER_MODULEREP_H
36 
37 #include "Common.H"
39 #include "LoaderLibrary.H"
40 #include "ModuleRepBase.H"
41 
43 NRT_BEGIN_UNCHECKED_INCLUDES
44 #include <QMutex>
45 #include <QDebug>
46 NRT_END_UNCHECKED_INCLUDES
47 
48 //! A ModuleRep is a shadow which represents a real, running nrt::Module somewhere on a remote Blackboard
49 class ModuleRep : public ModuleRepBase
50 {
51  Q_OBJECT
52 
53  public:
54  //! Constructor
55  ModuleRep(ModuleDescr const & moduleDesc_, LoaderSummary const & loader, QString const & moduleuid_,
56  QString const & instanceName_);
57 
58  //! Destructor
59  virtual ~ModuleRep();
60 
61  //! Draw this module
62  void paint(QPainter * painter, QStyleOptionGraphicsItem const *, QWidget *);
63 
64  QString const moduleuid;
65  QString const instanceName;
66  QString const displayName;
67  ModuleDescr const moduleDescr;
68  QImage const icon;
69 
70  //! Update or create a subscriber port
71  void updateSubscriberPorts(std::vector<std::pair<std::string,
72  nrt::blackboard::ModulePortSummary> > const & portSummaries);
73 
74  //! Update or create a poster port
75  void updatePosterPorts(std::vector<std::pair<std::string,
76  nrt::blackboard::ModulePortSummary> > const & portSummaries);
77 
78  //! Update or create a checker port
79  void updateCheckerPorts(std::vector<std::pair<std::string,
80  nrt::blackboard::ModulePortSummary> > const & portSummaries);
81 
82  //! Find a port by owner uid (e.g. for sub-modules), and name (regardless of type)
83  Port * findPort(QString const & owneruid, QString const & portname);
84 
85  PortList const & subscriberPorts() { return itsSubscriberPorts; }
86  PortList const & posterPorts() { return itsPosterPorts; }
87  PortList const & checkerPorts() { return itsCheckerPorts; }
88 
89  public slots:
90  void keyPressedSlot(QKeyEvent * event);
91 
92  signals:
93  //! Sent when a user presses 'delete' while a module is selected
95 
96  private:
97  PortList itsSubscriberPorts;
98  PortList itsPosterPorts;
99  PortList itsCheckerPorts;
100  QColor const itsBBcolor;
101 };
102 
103 #endif // SRC_APPS_NRTDESIGNER_MODULEREP_H
104