summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings2/networksettings2/resources.h
blob: cfa0b7a4a85bb746b5e8136c91a90ba64f8c27f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#ifndef __RESOURCES__H
#define __RESOURCES__H

#include <qstring.h>
#include <qdict.h>
#include <qmap.h>
#include <qlist.h>
#include "netnode.h"
#include "systemfile.h"
#include "system.h"

class QLibrary;
class QPixmap;
class ANetNode;
class ANetNodeInstance;

typedef void (*GetNetNodeListFt_t)(QList<ANetNode>& PNN );

typedef struct NetNode_S {
        ANetNode * NetNode;
        QLibrary * TheLibrary;
        long NodeCountInLib;
} NetNode_t;

typedef QDict<NetNode_t> Name2NetNode_t;
typedef QDict<ANetNodeInstance > Name2Instance_t;
typedef QDict<NodeCollection> Name2Connection_t;
typedef QDict<SystemFile> Name2SystemFile_t;

class TheNSResources {

public :

    TheNSResources( void );
    ~TheNSResources( );

    System & system()
      { return *TheSystem; }

    QPixmap getPixmap( const QString & Name );

    Name2NetNode_t & netNodes( void ) 
      { return AllNodeTypes; }
    bool netNodeExists( const QString & X )
      { return AllNodeTypes.find(X)!=0; }

    Name2SystemFile_t & systemFiles( void )
      { return SystemFiles; }
    void addSystemFile( SystemFile * SF )
      { SystemFiles.insert( SF->name(), SF ); }

    ANetNodeInstance * createNodeInstance( const QString & S )
      { ANetNodeInstance * NNI = 0;
        NetNode_t * NNT = AllNodeTypes[S];
        if( NNT ) {
          NNI = NNT->NetNode->createInstance();
          NNI->initialize();
        }
        return NNI;
      }

    Name2Instance_t & netNodeInstances( void ) 
      { return AllNodes; }
    void addNodeInstance( ANetNodeInstance * I )
      { AllNodes.insert( I->nodeName(), I ); }
    void removeNodeInstance( const QString & N )
      { AllNodes.remove( N );}
    ANetNodeInstance * findNodeInstance( const QString & S )
      { return (AllNodes.find(S)!=0) ? AllNodes[S] : 0; }

    const QString & netNode2Name( const char * Type );
    const QString & netNode2Description( const char * Type );

    void renumberConnections( void );
    void addConnection( NodeCollection * NC );
    void removeConnection( const QString & N );
    NodeCollection * findConnection( const QString & N );
    Name2Connection_t & connections( void )
      { return ConnectionsMap; }

private :

    QString tr( const char * path );
    void findAvailableNetNodes( const QString &path );
    bool loadNetNode(
         const QString &pluginFileName,
         const QString &resolveString = "create_plugin");

    QMap< QString, QString>   NodeTypeNameMap;
    QMap< QString, QString>   NodeTypeDescriptionMap;
    Name2Connection_t ConnectionsMap;
    System * TheSystem;
    Name2SystemFile_t SystemFiles;

    // all node type classes 
    Name2NetNode_t      AllNodeTypes;

    // all nodes
    Name2Instance_t     AllNodes;
};

extern TheNSResources * _NSResources;
#define NSResources _NSResources

#endif