From 301d0379888abfb00f71cdacab77389c2b0f3365 Mon Sep 17 00:00:00 2001 From: Vadim Kurland Date: Mon, 7 Dec 2009 23:25:10 +0000 Subject: [PATCH] see #803 take user name for the batch install from the dialog, overriding the name set in the fw object settings --- build_num | 2 +- src/gui/FirewallInstallerUnx.cpp | 7 +++++- src/gui/instDialog.cpp | 3 +++ src/gui/instDialog.h | 4 +++- src/gui/instDialog_installer.cpp | 14 +++++++----- src/gui/instDialog_ui_ops.cpp | 27 +++++++++++++++++------ test/ipt/objects-for-regression-tests.fwb | 14 ++++++++++-- 7 files changed, 54 insertions(+), 17 deletions(-) diff --git a/build_num b/build_num index 509fda2bf..738a38de0 100644 --- a/build_num +++ b/build_num @@ -1 +1 @@ -#define BUILD_NUM 2048 +#define BUILD_NUM 2049 diff --git a/src/gui/FirewallInstallerUnx.cpp b/src/gui/FirewallInstallerUnx.cpp index 311be5e0a..51bca2306 100644 --- a/src/gui/FirewallInstallerUnx.cpp +++ b/src/gui/FirewallInstallerUnx.cpp @@ -57,6 +57,7 @@ #include #include #include +#include using namespace std; @@ -65,7 +66,11 @@ using namespace libfwbuilder; bool FirewallInstallerUnx::packInstallJobsList(Firewall* fw) { - if (fwbdebug) qDebug("FirewallInstallerUnx::packInstallJobList"); + if (fwbdebug) + { + qDebug() << "FirewallInstallerUnx::packInstallJobList"; + qDebug() << "cnf->user=" << cnf->user; + } job_list.clear(); diff --git a/src/gui/instDialog.cpp b/src/gui/instDialog.cpp index bc5d4f899..e36df0172 100644 --- a/src/gui/instDialog.cpp +++ b/src/gui/instDialog.cpp @@ -94,6 +94,8 @@ instDialog::instDialog(QWidget* p, m_dialog = new Ui::instDialog_q; m_dialog->setupUi(this); + batch_inst_opt_dlg = NULL; + project = mw->activeProject(); setControlWidgets(this, @@ -234,6 +236,7 @@ instDialog::instDialog(QWidget* p, instDialog::~instDialog() { + if (batch_inst_opt_dlg != NULL) delete batch_inst_opt_dlg; delete m_dialog; } diff --git a/src/gui/instDialog.h b/src/gui/instDialog.h index aa775a822..72f14f195 100644 --- a/src/gui/instDialog.h +++ b/src/gui/instDialog.h @@ -51,6 +51,7 @@ #include "fwbuilder/FWObjectDatabase.h" class FirewallInstaller; +class instBatchOptionsDialog; class QEventLoop; class QTextEdit; @@ -92,7 +93,8 @@ class instDialog : public QDialog, public FakeWizard Page1Operation page_1_op; FirewallInstaller *installer; ProjectPanel *project; - + instBatchOptionsDialog *batch_inst_opt_dlg; + // proc is used to launch external oprocess, such as compiler or // user-defined installer script QProcess proc; diff --git a/src/gui/instDialog_installer.cpp b/src/gui/instDialog_installer.cpp index 687b71b3d..6989beee1 100644 --- a/src/gui/instDialog_installer.cpp +++ b/src/gui/instDialog_installer.cpp @@ -50,6 +50,7 @@ #include #include #include +#include using namespace std; @@ -57,12 +58,15 @@ using namespace libfwbuilder; bool instDialog::runInstaller(Firewall *fw) { - if (fwbdebug) qDebug("instDialog::runInstaller"); - cnf.fwobj = fw; cnf.maddr = ""; - if (!getInstOptions(fw)) + if (fwbdebug) + qDebug() << "instDialog::runInstaller: built-in installer" + << fw->getName().c_str() + << " cnf.user=" << cnf.user; + + if (!getInstOptions(fw)) { QTimer::singleShot( 0, this, SLOT(mainLoopInstall())); return false; @@ -103,8 +107,8 @@ bool instDialog::runInstaller(Firewall *fw) addToLog("\n"); - if (fwbdebug) qDebug("built-in installer firewall %s", - fw->getName().c_str()); + if (fwbdebug) + qDebug() << "instDialog::runInstaller:" << " cnf.user=" << cnf.user; if (installer!=NULL) delete installer; diff --git a/src/gui/instDialog_ui_ops.cpp b/src/gui/instDialog_ui_ops.cpp index 172e19b0f..e58aebf78 100644 --- a/src/gui/instDialog_ui_ops.cpp +++ b/src/gui/instDialog_ui_ops.cpp @@ -67,6 +67,7 @@ #include #include #include +#include #include "fwbuilder/Resources.h" #include "fwbuilder/FWObjectDatabase.h" @@ -857,8 +858,15 @@ bool instDialog::getInstOptions(Firewall *fw) readInstallerOptionsFromSettings(); readInstallerOptionsFromFirewallObject(fw); - if (!m_dialog->batchInstall->isChecked()) + if (m_dialog->batchInstall->isChecked() && batch_inst_opt_dlg) { + // in batch install mode we use the same dialog to fill cnf + // without showing it to the user again + readInstallerOptionsFromDialog(fw, batch_inst_opt_dlg); + } else + { + // In non-batch mode installer options from the dialog + // overwrite options set in the fw object itself. instOptionsDialog *inst_opt_dlg = new instOptionsDialog(this, &cnf); if (inst_opt_dlg->exec()==QDialog::Rejected) { @@ -880,18 +888,23 @@ bool instDialog::getBatchInstOptions() readInstallerOptionsFromSettings(); - instBatchOptionsDialog *inst_opt_dlg = new instBatchOptionsDialog(this, - &cnf); - if (inst_opt_dlg->exec()==QDialog::Rejected) + if (batch_inst_opt_dlg != NULL) delete batch_inst_opt_dlg; + + batch_inst_opt_dlg = new instBatchOptionsDialog(this, &cnf); + + if (batch_inst_opt_dlg->exec()==QDialog::Rejected) { - delete inst_opt_dlg; stopProcessFlag = true; showPage(0); return false; } // clear aternative address in the dialog - inst_opt_dlg->m_dialog->altAddress->setText(""); - readInstallerOptionsFromDialog(NULL, inst_opt_dlg); + batch_inst_opt_dlg->m_dialog->altAddress->setText(""); + readInstallerOptionsFromDialog(NULL, batch_inst_opt_dlg); + + if (fwbdebug) + qDebug() << "instDialog::getBatchInstOptions(): cnf.user=" << cnf.user; + return verifyManagementAddress(); } diff --git a/test/ipt/objects-for-regression-tests.fwb b/test/ipt/objects-for-regression-tests.fwb index a3d754289..cb491ce65 100644 --- a/test/ipt/objects-for-regression-tests.fwb +++ b/test/ipt/objects-for-regression-tests.fwb @@ -29892,7 +29892,7 @@ echo '%FWBPROMPT%'; sh /tmp/%FWSCRIPT% - + @@ -29900,7 +29900,10 @@ echo '%FWBPROMPT%'; sh /tmp/%FWSCRIPT% + + + @@ -29982,6 +29985,8 @@ echo '%FWBPROMPT%'; sh /tmp/%FWSCRIPT% + + @@ -38996,7 +39001,7 @@ echo '%FWBPROMPT%'; sh /tmp/%FWSCRIPT% - + @@ -39004,7 +39009,10 @@ echo '%FWBPROMPT%'; sh /tmp/%FWSCRIPT% + + + @@ -39087,6 +39095,8 @@ echo '%FWBPROMPT%'; sh /tmp/%FWSCRIPT% + +