vlp-27 Moving kernel to use QtDesigner files. Important note: need to use uic-qt4...
[vlp.git] / src / kernel / kernel.cpp
index d2521abafcf342c3e570cd9918c8a96c2417bccd..6c0f27c72c413cb164865d2671dcc2e667bc618c 100644 (file)
@@ -64,6 +64,7 @@
 #include <libconfig.h>
 
 #include "kernel.h"
+#include "send-message.h"
 
 /* File resides in top directory (where are Makefiles)*/
 #include "../../config.h"
@@ -91,27 +92,29 @@ void QKernel::setLocked(bool locked)
 {
        LOCKED = locked;
 
-       quitAction->setDisabled(locked);
-       programExecuteAction->setDisabled(locked);
-       programKillAction->setDisabled(locked);
-       machineMessageAction->setDisabled(locked);
-       machineConnectAction->setDisabled(locked);
-       machineDisconnectAction->setDisabled(locked);
-       machineInfoAction->setDisabled(locked);
+       actionExecute->setDisabled(locked);
+       actionKill->setDisabled(locked);
+       actionConnect->setDisabled(locked);
+       actionDisconnect->setDisabled(locked);
+       actionInfo_messages->setDisabled(locked);
+       actionMessage->setDisabled(locked);
 
        /* Enable only menu entry for unlocking */
-       toolsEditorAction->setDisabled(locked);
-       toolsOptionsAction->setDisabled(locked);
-       toolsLockAction->setDisabled(locked);
-       toolsUnlockAction->setEnabled(locked);
+       actionEditor->setDisabled(locked);
+       actionOptions->setDisabled(locked);
+       actionLock_Console->setDisabled(locked);
+       actionUnlock_console->setEnabled(locked);
 }
 
 /**
  * Kernel program constructor.
  * Prepares everything to work.
  */
-QKernel::QKernel()
+QKernel::QKernel(QWidget *parent)
+       : QMainWindow(parent)
 {
+       setupUi(this);
+
        QDir q(REMOTE_PATH);
        char ss[255];
 
@@ -125,45 +128,7 @@ QKernel::QKernel()
 
        setWindowTitle(PACKAGE_NAME);
 
-       QMenu * programMenu = NULL;
-       programMenu = menuBar()->addMenu("&Program");
-       programExecuteAction = programMenu->addAction("Execute", this, SLOT(Run_Prog()));
-       programKillAction = programMenu->addAction("Kill", this, SLOT(KillInterpreter()));
-
-       machineMenu = menuBar()->addMenu("&Machine");
-       machineMessageAction = machineMenu->addAction("Message", this, SLOT(MessageToNode()));
-       machineMenu->addSeparator();
-       machineConnectAction = machineMenu->addAction("Connect", this, SLOT(Connect()));
-       machineDisconnectAction = machineMenu->addAction("Disconnect", this, SLOT(Disconnect()));
-       machineInfoAction = machineMenu->addAction("Info", this, SLOT(Info()));
-
-       toolsMenu = menuBar()->addMenu("&Tools");
-       toolsEditorAction = toolsMenu->addAction("Editor", this, SLOT(Edit()));
-       toolsMenu->addAction("Help", this, SLOT(Help()));
-       toolsMenu->addSeparator(); 
-       toolsOptionsAction = toolsMenu->addAction("Options", this, SLOT(SetOptions()));
-       toolsInfoAction = toolsMenu->addAction("Info messages", this, SLOT(SetMessages()));
-       toolsInfoAction->setCheckable(TRUE);
-       toolsInfoAction->setChecked(TRUE);
-       toolsMenu->addSeparator();
-       toolsLockAction = toolsMenu->addAction("Lock console", this, SLOT(LockConsole()));
-       toolsUnlockAction = toolsMenu->addAction("Unlock console", this, 
-                                                       SLOT(UnlockConsole()));
-       toolsUnlockAction->setDisabled(TRUE);
        LOCKED = FALSE;
-
-       quitAction = menuBar()->addAction("&Quit", this, SLOT(QuitProc()));
-
-       desktop = new QTextEdit(this);
-       desktop->setReadOnly(TRUE);
-       QVBoxLayout * layout = new QVBoxLayout();
-       layout->setContentsMargins (3, 0, 3, 0);
-       layout->addWidget(desktop);
-       QWidget *window = new QWidget();
-       window->setLayout(layout);
-       setCentralWidget(window);
-
-       resize(400, 200);
        Tasks = 0;
        freeINTid = 1;
        ActiveConnections = 0;
@@ -175,18 +140,6 @@ QKernel::QKernel()
        connect(Net_Notify, SIGNAL(activated(int)), this, SLOT(NetMessage()));
 }
 
-/**
- * Event invoked on resizing kernel application window.
- * @copydoc QWidget::resizeEvent(QResizeEvent*)
- */
-void QKernel::resizeEvent(QResizeEvent *ev)
-{
-//     QFrame::resizeEvent(ev);
-//     if (desktop)
-//             desktop->setGeometry(0, bar->height(), width(), 
-//                                             height() - bar->height());
-}
-
 /**
  * Displays window with information about not implemented functionality.
  */
@@ -303,7 +256,7 @@ void QKernel::LoadConfig(char * fname)
  * Executes program.
  * Additional window id displayed to set which code to execute.
  */
-void QKernel::Run_Prog()
+void QKernel::on_actionExecute_triggered()
 {
        int i;
        QString s = QFileDialog::getOpenFileName(this, "Execute", progdir, "*.log");
@@ -321,7 +274,7 @@ void QKernel::Run_Prog()
 /**
  * Invokes editor program
  */
-void QKernel::Edit()
+void QKernel::on_actionEditor_triggered()
 {
        char cmd[255];
        sprintf(cmd, "%s/modules/logedit %s %s %s %s %s %s &", HomeDir, HomeDir, 
@@ -332,7 +285,7 @@ void QKernel::Edit()
 /**
  * Invokes help program
  */
-void QKernel::Help()
+void QKernel::on_actionHelp_triggered()
 {
        char cmd[255];
        sprintf(cmd, "%s/modules/loghelp %s/doc %s %s %s %s %s &", HomeDir,
@@ -405,7 +358,7 @@ void QKernel::RunNetModule()
  * Connects to the specified address
  * Additional window is displayed to connect to the specified address
  */
-void QKernel::Connect()
+void QKernel::on_actionConnect_triggered()
 {
        QDialog d(this, Qt::Dialog);
        QLabel lab("IP Address:", &d);
@@ -437,7 +390,7 @@ void QKernel::Connect()
 /**
  * Disconnects from virtual machine
  */
-void QKernel::Disconnect()
+void QKernel::on_actionDisconnect_triggered()
 {
        MESSAGE msg;
 
@@ -526,50 +479,20 @@ void QKernel::DelAddress()
  * Additional window is displayed to set Node Number of node where send message,
  * and textfield to enter message.
  */
-void QKernel::MessageToNode()
+void QKernel::on_actionMessage_triggered()
 {
-       QDialog *dlg;
-       QLineEdit *nodenr;
        MESSAGE m;
-
-       dlg = new QDialog(this, Qt::Dialog);
-       dlg->setWindowTitle("Send message to node");
-
-       nodenr = new QLineEdit("number", dlg);
-       nodenr->setGeometry(90, 10, 50, 30);
-       nodenr->setText("");
-
-       QLabel *tmpQLabel;
-       tmpQLabel = new QLabel("Node number:", dlg);
-       tmpQLabel->setGeometry(10, 10, 77, 30);
-
-       tmpQLabel = new QLabel("Message:", dlg);
-       tmpQLabel->setGeometry(10, 50, 70, 30);
-
-       QLineEdit *msg;
-       msg = new QLineEdit("", dlg);
-       msg->setGeometry(80, 60, 330, 30);
-
-       QPushButton *ob;
-       ob = new QPushButton("Send", dlg);
-       ob->setGeometry(230, 10, 80, 30);
-       ob->setDefault(TRUE);
-       
-       QPushButton *cb;
-       cb = new QPushButton("Cancel", dlg);
-       cb->setGeometry(330, 10, 80, 30);
-       dlg->resize(430, 110);
-       connect(ob, SIGNAL(clicked()), dlg, SLOT(accept()));
-       connect(cb, SIGNAL(clicked()), dlg, SLOT(reject()));
+       SendMessageDialog *dlg;
+       dlg = new SendMessageDialog(this);
 
        if (dlg->exec()) {
                m.msg_type = MSG_NET;
                m.param.pword[0] = NET_PROPAGATE;
                m.param.pword[1] = MSG_VLP;
                m.param.pword[2] = NodeNumber;
-               m.param.pword[4] = atoi(nodenr->text().toAscii().data());
+               m.param.pword[4] = dlg->getNodeNumber();
                m.param.pword[6] = VLP_WRITE;
-               strcpy(m.param.pstr, msg->text().toAscii().data());
+               strcpy(m.param.pstr, dlg->getMessage().toAscii().data());
                write(net_sock, &m, sizeof(MESSAGE));
        }
 }
@@ -579,7 +502,7 @@ void QKernel::MessageToNode()
  * Additional window is displayed to get ID of interpreter which should be
  * killed.
  */
-void QKernel::KillInterpreter()
+void QKernel::on_actionKill_triggered()
 {
        QDialog *dlg;
        QLineEdit *nodenr;
@@ -840,15 +763,11 @@ void QKernel::WriteMessage(char *msg)
  * Adds checkbox to menu item. If it is checked additional info messages are
  * shown.
  */
-void QKernel::SetMessages()
+void QKernel::on_actionInfo_messages_triggered()
 {
-       if (toolsMenu != NULL) {
-               toolsInfoAction->setChecked(!toolsInfoAction->isChecked());
-//             toolsInfoAction->toggle();
-               info_messages = toolsInfoAction->isChecked();
-               fprintf(stderr, "Info is checked? %s\n", toolsInfoAction->isChecked() ? "yes" : "no");
+       if (menuTools != NULL) {
+               info_messages = actionInfo_messages->isChecked();
        }
-//     menuBar()->repaint();
 }
 
 /**
@@ -856,7 +775,7 @@ void QKernel::SetMessages()
  * Additional window is displayed to set kernel options which are saved in 
  * vlp.cfg file in kernel executable directory.
  */
-void QKernel::SetOptions()
+void QKernel::on_actionOptions_triggered()
 {
        QDialog dlg(this, Qt::Dialog);
        dlg.setWindowTitle("Options");
@@ -995,7 +914,7 @@ void QKernel::SetOptions()
  * Additional window is displayed to enter password and retype it. If both are
  * same kernel window is locked.
  */
-void QKernel::LockConsole()
+void QKernel::on_actionLock_Console_triggered()
 {
        QDialog d(this, Qt::Dialog);
        d.setWindowTitle("Lock console");
@@ -1054,7 +973,7 @@ void QKernel::LockConsole()
  * Additional window is displayed to enter password. If it is correct, kernel 
  * window is unlocked
  */
-void QKernel::UnlockConsole()
+void QKernel::on_actionUnlock_console_triggered()
 {
        QDialog d(this, Qt::Dialog);
        d.setWindowTitle("Enter password");
@@ -1346,7 +1265,7 @@ void QKernel::CloseInstances(InterpEntry *e)
 /**
  * Displays information about virtual machine
  */
-void QKernel::Info()
+void QKernel::on_actionInfo_triggered()
 {
        MESSAGE m;
 
@@ -1376,7 +1295,9 @@ int main(int argc, char **argv)
        }
 
        QApplication * app = new QApplication(argc, argv);
+       
        QKernel kernel;
+
        kernel.show();
        kernel.InitMessage();