Removed redundant method
[vlp.git] / src / kernel / kernel.h
1 /**************************************************************
2
3   Copyright (C) 1997  Oskar Swida
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
7  as published by the Free Software Foundation; either version 2
8  of 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, write to the Free Software
17  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18
19
20
21
22  NOTE: This software is using the free software license of 
23        the QT library v.1.30 from Troll Tech AS.
24        See the file LICENSE.QT.
25
26  
27   To contact the author, write:
28      e-mail: swida@aragorn.pb.bialystok.pl
29
30 ************************************************************/
31
32 #ifndef VLP_KERNEL_H
33 #define VLP_KERNEL_H
34
35 #include <QtGui/QMainWindow>
36 #include <QtGui/QListWidget>
37 #include <QtGui/QTextEdit>
38 #include <QtCore/QSocketNotifier>
39 #include <QtCore/QDir>
40
41 #include "comm.h"
42
43 #include "ui/kernelwindow.h"
44
45 #define GPATH "loggr"
46 #define IPATH "logi"
47 #define NPATH "logn"
48 #define REMOTE_PATH "REMOTE"
49 #define MAXINTERP 20
50 #define MAXINSTANCES 256 
51
52
53 #define MESG_COL        0
54 #define WARN_COL        1
55 #define NORM_COL        2
56
57
58 /**
59  * Interpreter slot
60  */
61 class InterpEntry {
62 public:
63         /** Interpreter identifier */
64         int ID;
65         /** Defines if interpreter is remote or not */
66         bool remote;
67         /* Program name */
68         char fullname[255];
69         char shortname[255];
70         
71         /* Socket */
72         int sock;
73         QSocketNotifier *notify;
74         /* IDs of my remote INT modules */
75         int RInstances[MAXINSTANCES];
76         /* Parent interpreter info */
77         ctx_struct p_ctx;
78 };
79
80 /**
81  * Connection slot
82  */
83 class ConnectEntry {
84 public:
85         char addr[256];
86         
87         ConnectEntry(char *s) {
88                 strcpy(addr, s);
89         };
90 };
91
92
93 /**
94  * Kernel class
95  */
96 class QKernel : public QMainWindow, private Ui::KernelWindow {
97         Q_OBJECT
98 public:
99         QMenu *toolsMenu;
100         char progdir[256];
101         int NodeNumber;
102         int ConType;
103
104         QKernel(int argc, char **argv);
105
106         void WriteMessage(char* msg);
107
108 public slots:
109         void NetMessage();
110         void IntMessage(int);
111
112 protected:
113         virtual void closeEvent (QCloseEvent * e);
114
115 private:
116         QList<InterpEntry*> Interpreters;
117         QList<ConnectEntry*> ConnectList;
118         
119         /**
120          * number of working interpreters
121          * @attention Currently not in use
122          */
123         int Tasks;
124         
125         /**
126          * number of connected VLPs
127          */
128         int ActiveConnections;
129         /**
130          * Indicates state of the Kernel Program. Is it locked or not.
131          */
132         bool LOCKED;
133         bool synchro;
134         bool wait_for_info;
135         char LockPasswd[25];
136         
137         int net_sock;
138         int freeINTid;
139         QSocketNotifier *Net_Notify;
140         QDir homeDir;
141         char myargs[5][255];
142         bool info_messages;
143
144         void loadConfig(const QString &fname);
145         void loadConfig(const char *);
146
147         void RunGraphModule(char*);
148         void RunNetModule();
149         InterpEntry *findINTbySocket(int);
150         InterpEntry *findINTbyID(int);
151         InterpEntry *RunIntModule(char *ss, int r);
152         void RemoteInstance(InterpEntry*, int);
153         void CloseInstances(InterpEntry*);
154
155         /**
156          * Sets QKernel menu entries to the given status
157          * @param locked status which will be set on the menu entries.
158          */
159         void setLocked(bool locked);
160
161         QString getConfigFilePath();
162         const char * getHomeDir();
163         const char * getRemoteDir();
164
165         const char * getNetModuleSocket();
166         const char * getGraphModuleSocket();
167
168 private slots:
169         void on_actionExecute_triggered();
170         void on_actionKill_triggered();
171         void on_actionQuit_triggered();
172         
173         void on_actionMessage_triggered();
174         void on_actionConnect_triggered();
175         void on_actionDisconnect_triggered();
176         void on_actionInfo_triggered();
177
178         void on_actionEditor_triggered();
179         void on_actionHelp_triggered();
180         void on_actionOptions_triggered();
181         void on_actionInfo_messages_triggered();
182         void on_actionLock_console_triggered();
183         void on_actionUnlock_console_triggered();
184 };
185
186 #endif /* VLP_KERNEL_H */