X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Flgconfig%2Flgconfig.cpp;h=7b7fca89d910cf4b12b32a7576cb798e1326bc0b;hb=refs%2Ftags%2F3.4-b1;hp=4d599dc22f7e2bcc51cd7d4fa4ca912e0744b974;hpb=7a277153cc72eed9f152af09f22e680db3ec6563;p=vlp.git diff --git a/src/lgconfig/lgconfig.cpp b/src/lgconfig/lgconfig.cpp index 4d599dc..7b7fca8 100644 --- a/src/lgconfig/lgconfig.cpp +++ b/src/lgconfig/lgconfig.cpp @@ -1,323 +1,90 @@ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include #include #include #include +#include -class VLPEntry -{ -public: - int ID; - char addr[255]; - int type; /* 0 - explicit */ - char progdir[255],homedir[255]; - char item[255]; -}; - -class QInstall: public QFrame -{ - Q_OBJECT -public: - QMenuBar *bar; - QListBox *nodelist; - QPushButton *infob; - QList Nodes; - - QInstall(); - bool check_id(int); - bool check_addr(char*); - -public slots: - - void SetOptions(); - void AddNode(); - void DelNode(); - void Info(); - -}; +#include "lgconfig.h" +#include "NodeListDialog.h" +#include "vlp/config.h" - -QApplication *app; +namespace loglan { +namespace vlp { QInstall::QInstall() { - QFont f("Helvetica",12,QFont::Bold); - QPixmap mp; - - infob = new QPushButton(this); - - - - bar = new QMenuBar(this); - bar->insertItem("Configure",this,SLOT(SetOptions())); - bar->insertItem("Quit",app,SLOT(quit())); - bar->setFont(f); - setCaption("VLP Configuration Tool"); - infob->setGeometry(0,bar->height(),200,30); - if( mp.load("logo.bmp")) - { - infob->setPixmap(mp); - infob->resize(mp.width(),mp.height()); - - } - resize(infob->width(),infob->height()+bar->height()); - Nodes.clear(); + setupUi(this); } - -bool QInstall::check_id(int id) +void QInstall::on_actionConfigure_triggered() { - VLPEntry *pom; - - pom = Nodes.first(); - while (pom!=NULL) - { - if (pom->ID == id) return(FALSE); - pom=Nodes.next(); - } - return(TRUE); -} + dialog::NodeListDialog dialog(nodes, this); + if (dialog.exec()) { + nodes = dialog.getNodes(); + if (!nodes.isEmpty()) { -bool QInstall::check_addr(char *addr) -{ - VLPEntry *pom; + VLPEntry *pom; + int i; + char pomstr[255]; - pom = Nodes.first(); - while (pom!=NULL) - { - if (strcmp(pom->addr,addr) == 0) return(FALSE); - pom=Nodes.next(); - } - return(TRUE); -} + QListIterator nodesIterator(nodes); + while (nodesIterator.hasNext()) { + pom = nodesIterator.next(); + i = nodes.indexOf(pom); + sprintf(pomstr, "%s.cfg", pom->addr); -void QInstall::Info() -{ -} - - -void QInstall::AddNode() -{ - QDialog dlg(this,"",TRUE); - QLabel* tmpQLabel; - QLineEdit *id,*addr,*progs,*home; - QPushButton *okbtn,*cancelbtn; - VLPEntry *pom; - char pomstr[255]; + + loglan::vlp::Config config; -tmpQLabel = new QLabel( &dlg, "Label_2" ); -tmpQLabel->setGeometry( 110, 10, 180, 30 ); -tmpQLabel->setFrameStyle( 49 ); -tmpQLabel->setText( "Virtual Processor Properties" ); + config.setProgramDir(pom->progdir); + config.setNodeNumber(pom->ID); + config.setConnectionType( + (pom->type == 0) ? EXPLICIT : REGISTER + ); -id = new QLineEdit( &dlg, "LineEdit_1" ); -id->setGeometry( 130, 50, 50, 30 ); -id->setText( "" ); + std::vector hosts; + for (auto node : nodes) { + if (pom != node) { + hosts.push_back(node->addr); + } + } + config.setHosts(hosts); -tmpQLabel = new QLabel( &dlg, "Label_3" ); -tmpQLabel->setGeometry( 20, 50, 90, 30 ); -tmpQLabel->setText( "Node number" ); + config.save(pomstr); -tmpQLabel = new QLabel( &dlg, "Label_4" ); -tmpQLabel->setGeometry( 20, 90, 80, 30 ); -tmpQLabel->setText( "IP Address" ); +// TODO: add handling of homedir or remove it at all +// setting = config_setting_get_member(root, "homedir"); +// if(!setting) { +// setting = config_setting_add(root, "homedir", CONFIG_TYPE_STRING); +// } +// config_setting_set_string(setting, pom->homedir); -addr = new QLineEdit( &dlg, "LineEdit_2" ); -addr->setGeometry( 130, 90, 120, 30 ); -addr->setText( "" ); -tmpQLabel = new QLabel( &dlg, "Label_5" ); -tmpQLabel->setGeometry( 20, 130, 100, 30 ); -tmpQLabel->setText( "Connection type" ); - -QComboBox* tmpQComboBox; -tmpQComboBox = new QComboBox( FALSE, &dlg, "ComboBox_1" ); -tmpQComboBox->setGeometry( 130, 130, 100, 30 ); -tmpQComboBox->setSizeLimit( 2 ); -tmpQComboBox->setAutoResize( FALSE ); -tmpQComboBox->insertItem( "Explicit" ); - -tmpQLabel = new QLabel( &dlg, "Label_6" ); -tmpQLabel->setGeometry( 20, 170, 110, 30 ); -tmpQLabel->setText( "Programs directory" ); - -progs = new QLineEdit( &dlg, "LineEdit_4" ); -progs->setGeometry( 130, 170, 230, 30 ); -progs->setText( "" ); - -tmpQLabel = new QLabel( &dlg, "Label_7" ); -tmpQLabel->setGeometry( 20, 210, 100, 30 ); -tmpQLabel->setText( "VLP directory" ); - -home = new QLineEdit( &dlg, "LineEdit_5" ); -home->setGeometry( 130, 210, 230, 30 ); -home->setText( "" ); - - okbtn = new QPushButton( &dlg, "PushButton_5" ); - okbtn->setGeometry( 80, 250, 100, 30 ); - okbtn->setText( "Ok" ); - connect(okbtn,SIGNAL(clicked()),&dlg,SLOT(accept())); - cancelbtn = new QPushButton( &dlg, "PushButton_6" ); - cancelbtn->setGeometry( 210, 250, 100, 30 ); - cancelbtn->setText( "Cancel" ); - connect(cancelbtn,SIGNAL(clicked()),&dlg,SLOT(reject())); - dlg.resize( 380, 300 ); - if (dlg.exec()) - { - pom = new VLPEntry; - pom->ID = atoi(id->text()); - if (check_id(pom->ID)) - { - strcpy(pom->addr,addr->text()); - if (check_addr(pom->addr)) - { - - if (strcmp(tmpQComboBox->currentText(),"Explicit")==0) pom->type=0; - strcpy(pom->progdir,progs->text()); - strcpy(pom->homedir,home->text()); - Nodes.append(pom); - sprintf(pomstr,"Node: %d Addr:%s Home dir: %s",pom->ID,pom->addr,pom->homedir); - nodelist->insertItem(pomstr); - strcpy(pom->item,pomstr); - } else QMessageBox::message("Error!","Only one VLP on a single computer!","Ok"); - } - else QMessageBox::message("Error!","ID must be unique!","Ok"); - } - -} - -void QInstall::DelNode() -{ - char pom[255]; - VLPEntry *vpom; - - if (nodelist->currentItem()>=0) - { - strcpy(pom,nodelist->text(nodelist->currentItem())); - vpom = Nodes.first(); - while (vpom!=NULL) - { - if (strcmp(pom,vpom->item)==0) break; - vpom = Nodes.next(); - } - if (vpom!=NULL) - if (QMessageBox::query("Delete VLP","Are you sure?","Yes","No")) - { - nodelist->removeItem(nodelist->currentItem()); - Nodes.remove(vpom); - } - } + pom = nodes.at(i); + } + } + } } -void QInstall::SetOptions() +void QInstall::on_actionQuit_triggered() { - QDialog dlg(this,"",TRUE); - QLabel* tmpQLabel; - QPushButton *addbtn,*delbtn,*okbtn,*cancelbtn; - VLPEntry *pom; - QFile *vlp_file; - int i,j; - char pomstr[255],line[255]; - - //dlg.setStyle(WindowsStyle); - nodelist = new QListBox( &dlg, "ListBox_1" ); - nodelist->setGeometry( 20, 40, 480, 160 ); - - tmpQLabel = new QLabel( &dlg, "Label_1" ); - tmpQLabel->setGeometry( 20, 10, 100, 30 ); - tmpQLabel->setText( "Nodes:" ); - - addbtn = new QPushButton( &dlg, "PushButton_1" ); - addbtn->setGeometry( 30, 210, 100, 30 ); - addbtn->setText( "Add VLP" ); - connect(addbtn,SIGNAL(clicked()),this,SLOT(AddNode())); - delbtn = new QPushButton( &dlg, "PushButton_2" ); - delbtn->setGeometry( 150, 210, 100, 30 ); - delbtn->setText( "Del VLP" ); - connect(delbtn,SIGNAL(clicked()),this,SLOT(DelNode())); - okbtn = new QPushButton( &dlg, "PushButton_3" ); - okbtn->setGeometry( 270, 210, 100, 30 ); - okbtn->setText( "Save files" ); - connect(okbtn,SIGNAL(clicked()),&dlg,SLOT(accept())); - cancelbtn = new QPushButton( &dlg, "PushButton_4" ); - cancelbtn->setGeometry( 390, 210, 100, 30 ); - cancelbtn->setText( "Cancel" ); - connect(cancelbtn,SIGNAL(clicked()),&dlg,SLOT(reject())); - dlg.resize( 520, 260 ); - - - if (dlg.exec()){ - if (!Nodes.isEmpty()) - { - pom = Nodes.first(); - while (pom!=NULL) - { - j = Nodes.at(); - sprintf(pomstr,"%s.cfg",pom->addr); - vlp_file = new QFile(pomstr); - vlp_file->open(IO_WriteOnly); - sprintf(line,"progdir=%s\n",pom->progdir); - vlp_file->writeBlock(line,strlen(line)); - sprintf(line,"homedir=%s\n",pom->homedir); - vlp_file->writeBlock(line,strlen(line)); - sprintf(line,"node_number=%d\n",pom->ID); - vlp_file->writeBlock(line,strlen(line)); - if ( pom->type == 0) - { - sprintf(line,"type=explicit\n"); - vlp_file->writeBlock(line,strlen(line)); - } - for(i=0;iaddr); - vlp_file->writeBlock(line,strlen(line)); - }; - vlp_file->close(); - pom = Nodes.at(j); - pom = Nodes.next(); - } - } - - }; - - - + QApplication::instance()->quit(); } +} +} -#include "lgconfig.moc" -int main( int argc, char **argv ) +int main(int argc, char **argv) { - - app = new QApplication(argc,argv); - QInstall cfg; - //app->setStyle(WindowsStyle); - app->setMainWidget(&cfg); - cfg.show(); - return app->exec(); + QApplication *app = new QApplication(argc,argv); + loglan::vlp::QInstall cfg; + cfg.show(); + return app->exec(); }