X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Fkernel%2Fkernel.cpp;h=8321476ff915e4c37d017939894065d160f132e9;hb=00f4996d5c0fee841fd51e26f1576100aa1add7d;hp=d2521abafcf342c3e570cd9918c8a96c2417bccd;hpb=3490d8d1eee73348bc8ed4938d27d19d8f41660b;p=vlp.git diff --git a/src/kernel/kernel.cpp b/src/kernel/kernel.cpp index d2521ab..8321476 100644 --- a/src/kernel/kernel.cpp +++ b/src/kernel/kernel.cpp @@ -64,6 +64,8 @@ #include #include "kernel.h" +#include "send-message.h" +#include "kill-interpreter.h" /* File resides in top directory (where are Makefiles)*/ #include "../../config.h" @@ -91,27 +93,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 +129,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 +141,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 +257,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 +275,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 +286,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 +359,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 +391,7 @@ void QKernel::Connect() /** * Disconnects from virtual machine */ -void QKernel::Disconnect() +void QKernel::on_actionDisconnect_triggered() { MESSAGE msg; @@ -526,50 +480,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, Qt::Dialog); 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,37 +503,18 @@ 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; MESSAGE m; InterpEntry *pom; + KillInterpreterDialog *dlg; - dlg = new QDialog(this, Qt::Dialog); - dlg->setWindowTitle("Kill interpreter"); - - nodenr = new QLineEdit("", dlg); - nodenr->setGeometry(90, 10, 50, 30); - - QLabel * tmpQLabel = new QLabel("Interp. ID:", dlg); - tmpQLabel->setGeometry(10, 10, 77, 30); - - QPushButton * ob = new QPushButton("Kill", dlg); - ob->setGeometry( 160, 10, 80, 30); - ob->setDefault(TRUE); - - QPushButton * cb = new QPushButton("Cancel", dlg); - cb->setGeometry(260, 10, 80, 30); - dlg->resize(360, 50); - - connect(ob, SIGNAL(clicked()), dlg, SLOT(accept())); - connect(cb, SIGNAL(clicked()), dlg, SLOT(reject())); + dlg = new KillInterpreterDialog(this, Qt::Dialog); if (dlg->exec()) { m.msg_type = MSG_INT; m.param.pword[0] = INT_KILL; - pom = findINTbyID(atoi(nodenr->text().toAscii().data())); + pom = findINTbyID(dlg->getNodeNumber()); if (pom != NULL) { if (!(pom->remote)) write(pom->sock, &m, sizeof(MESSAGE)); @@ -840,15 +745,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 +757,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 +896,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 +955,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 +1247,7 @@ void QKernel::CloseInstances(InterpEntry *e) /** * Displays information about virtual machine */ -void QKernel::Info() +void QKernel::on_actionInfo_triggered() { MESSAGE m; @@ -1376,7 +1277,9 @@ int main(int argc, char **argv) } QApplication * app = new QApplication(argc, argv); + QKernel kernel; + kernel.show(); kernel.InitMessage();