From 4a3383690c8b284c2d0c6a471444eaa5a8bc4b01 Mon Sep 17 00:00:00 2001 From: luca Date: Thu, 26 Jul 2007 14:00:16 +0000 Subject: [PATCH] Patch level :4.0 nopatch Files correlati : Ricompilazione Demo : [ ] Commento :risolto il problema di asimmetria comportamento next/back git-svn-id: svn://10.65.10.50/trunk@15529 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- setup/Setup.cpp | 183 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 165 insertions(+), 18 deletions(-) diff --git a/setup/Setup.cpp b/setup/Setup.cpp index 973a3fb7f..9f19e171b 100755 --- a/setup/Setup.cpp +++ b/setup/Setup.cpp @@ -225,8 +225,10 @@ class CampoWizard : public wxWizard unsigned int _installation_type; //tipo di installazione selezionata (standard,server,client...) protected: + DECLARE_EVENT_TABLE(); int Pages() const { return m_nPages; } CampoWizardPage* Page(int p) const { return m_pPage[p]; } + void OnNext(wxCommandEvent& e); public: bool Run(); @@ -241,6 +243,9 @@ public: CampoWizard(wxWindow* pParent); }; +//////////////////////////// + + //Campo wizard page (pagina generica del programma, di cui saranno figlie le singole pagine) class CampoWizardPage : public wxWizardPageSimple { @@ -254,6 +259,7 @@ protected: void AddLabel(wxGridBagSizer* pSizer, const wxChar* label, unsigned int row, unsigned int column); public: + virtual bool ForwardValidate() { return true; } wxString Get(wxWindowID id) const; bool Set(wxWindowID id, const wxString& str); int GetSelection(wxWindowID id) const; @@ -357,13 +363,13 @@ class CampoWizardPage2 : public CampoWizardPage wxRadioBox* m_pRadioBox; protected: - virtual bool TransferDataFromWindow(); + virtual bool ForwardValidate(); public: CampoWizardPage2(wxWizard* parent); }; -bool CampoWizardPage2::TransferDataFromWindow() +bool CampoWizardPage2::ForwardValidate() { const int last_row = m_pRadioBox->GetRowCount() - 1; const int selected_row = m_pRadioBox->GetSelection(); @@ -401,9 +407,9 @@ CampoWizardPage2::CampoWizardPage2(wxWizard* parent) : CampoWizardPage(parent) //sono installazioni valide quelle che presentano la coppia di files campo.ini e campo.aut (senza.. //..questi 2 soggetti il programma non parte) wxString campo_ini = path; - campo_ini << "\\campo.ini"; + campo_ini << "/campo.ini"; wxString campo_aut = path; - campo_aut << "\\campo.aut"; + campo_aut << "/campo.aut"; if (wxFileName::FileExists(campo_ini) && wxFileName::FileExists(campo_aut)) { asCampi.Add(path); @@ -456,13 +462,13 @@ CampoWizardPage2::CampoWizardPage2(wxWizard* parent) : CampoWizardPage(parent) class CampoWizardPage3 : public CampoWizardPage { protected: - virtual bool TransferDataFromWindow(); + virtual bool ForwardValidate(); public: CampoWizardPage3(wxWizard* parent); }; -bool CampoWizardPage3::TransferDataFromWindow() +bool CampoWizardPage3::ForwardValidate() { if (GetSelection(301) == 1) return ErrorBox("Impossibile proseguire se non si accetta la licenza sul software!!"); @@ -802,13 +808,13 @@ class CampoWizardPage5 : public CampoWizardPage wxRadioBox* m_pRadioBox; protected: - virtual bool TransferDataFromWindow(); + virtual bool ForwardValidate(); public: CampoWizardPage5(wxWizard* parent); }; -bool CampoWizardPage5::TransferDataFromWindow() +bool CampoWizardPage5::ForwardValidate() { const unsigned int type = m_pRadioBox->GetSelection(); GetWizard().SetInstallationType(type); @@ -851,7 +857,7 @@ class CampoWizardPage6 : public CampoWizardPage protected: DECLARE_EVENT_TABLE(); void OnDirPick(wxCommandEvent& e); - virtual bool TransferDataFromWindow(); + virtual bool ForwardValidate(); public: CampoWizardPage6(wxWizard* parent); @@ -876,7 +882,7 @@ void CampoWizardPage6::OnDirPick(wxCommandEvent& e) } //metodo per il controllo dell'area dati;se la directory indicata non e' vuota non puoi usarla ne' crearla -bool CampoWizardPage6::TransferDataFromWindow() +bool CampoWizardPage6::ForwardValidate() { wxDir dirDataPath(Get(603)); if (dirDataPath.Exists(Get(603)) && (dirDataPath.HasFiles() || dirDataPath.HasSubDirs())) @@ -917,7 +923,7 @@ CampoWizardPage6::CampoWizardPage6(wxWizard* parent) : CampoWizardPage(parent) //prompt AddLabel(gbsSizer, "Cartella dati", 1, 0); //campo testo - strPath += "\\dati"; + strPath += "/dati"; wxTextCtrl* tcDataPath = new wxTextCtrl(this, 603, strPath, wxDefaultPosition, wxSize(320,-1)); gbsSizer->Add(tcDataPath, wxGBPosition(1, 1)); //bottone 'sfoglia' @@ -937,7 +943,8 @@ class CampoWizardPage7 : public CampoWizardPage { protected: DECLARE_EVENT_TABLE(); - virtual bool TransferDataFromWindow(); + virtual bool ForwardValidate(); + void OnDirPick(wxCommandEvent& e); void OnSrvClick(wxCommandEvent& e); public: @@ -945,10 +952,25 @@ public: }; BEGIN_EVENT_TABLE(CampoWizardPage7, CampoWizardPage) + EVT_BUTTON(702, OnDirPick) + EVT_BUTTON(704, OnDirPick) EVT_CHECKBOX(705, OnSrvClick) EVT_CHECKBOX(707, OnSrvClick) END_EVENT_TABLE() +void CampoWizardPage7::OnDirPick(wxCommandEvent& e) +{ + const wxWindowID wiTargetField = e.GetId() - 1; + wxString strPath = Get(wiTargetField); + wxDirDialog dlg(this, wxDirSelectorPromptStr, strPath, + wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST); + if (dlg.ShowModal() == wxID_OK) + { + strPath = dlg.GetPath(); + Set(wiTargetField, strPath); + } +} + void CampoWizardPage7::OnSrvClick(wxCommandEvent& e) { wxWindow* pWnd = FindWindowById(e.GetId() + 1); @@ -956,8 +978,12 @@ void CampoWizardPage7::OnSrvClick(wxCommandEvent& e) pWnd->Enable(e.IsChecked()); } -bool CampoWizardPage7::TransferDataFromWindow() +bool CampoWizardPage7::ForwardValidate() { + wxDir dirDataPath(Get(703)); + if (dirDataPath.Exists(Get(703)) && (dirDataPath.HasFiles() || dirDataPath.HasSubDirs())) + return ErrorBox("La cartella indicata per la creazione dell'area dati non e' vuota! Selezionarne un'altra!"); + return true; } @@ -965,8 +991,10 @@ CampoWizardPage7::CampoWizardPage7(wxWizard* parent) : CampoWizardPage(parent) { wxString strTitle = wxT("Installazione di tipo Server"); wxString strBody = wxT("

Digitare nel campo 'Cartella programma' il percorso completo della cartella dove si desidera installare il programma. "); - strBody += wxT("Il percorso di default (consigliato) e' C:\\Campo

"); - strBody += wxT("

Le cartella del programma e dei dati dovranno essere condivise in modalita' lettura/scrittura agli utenti di sistema e di rete che utilizzeranno il software Campo. "); + strBody += wxT("Il percorso consigliato e' C:\\Campo

"); + strBody += wxT("

Digitare nel campo 'Cartella dati' il percorso completo della cartella dove si desidera installare l'area dati. "); + strBody += wxT("Il percorso consigliato e' C:\\Campo\\dati

"); + strBody += wxT("

Le cartelle del programma e dei dati dovranno essere condivise in modalita' lettura/scrittura agli utenti di sistema e di rete che utilizzeranno il software Campo. "); strBody += wxT("In mancanza di tale condivisione nessun client potra' accedere al server!

"); strBody += wxT("

Gestore autorizzazioni: e' il software che permette di gestire una chiave di protezione hardware multiutenza condivisa in rete. "); strBody += wxT("Installando tale software e' necessario specificare il computer su cui e' montata la chiave di protezione multiutenza."); @@ -994,7 +1022,7 @@ CampoWizardPage7::CampoWizardPage7(wxWizard* parent) : CampoWizardPage(parent) //prompt AddLabel(gbsSizer, "Cartella dati", 1, 0); //campo testo - strPath += "\\dati"; + strPath += "/dati"; wxTextCtrl* tcDataPath = new wxTextCtrl(this, 703, strPath, wxDefaultPosition, wxSize(320,-1)); gbsSizer->Add(tcDataPath, wxGBPosition(1, 1)); //bottone 'sfoglia' @@ -1027,15 +1055,104 @@ CampoWizardPage7::CampoWizardPage7(wxWizard* parent) : CampoWizardPage(parent) class CampoWizardPage8 : public CampoWizardPage { protected: + DECLARE_EVENT_TABLE(); + virtual bool ForwardValidate(); + void OnDirPick(wxCommandEvent& e); + void OnSrvClick(wxCommandEvent& e); + public: CampoWizardPage8(wxWizard* parent); }; +BEGIN_EVENT_TABLE(CampoWizardPage8, CampoWizardPage) + EVT_BUTTON(802, OnDirPick) + EVT_BUTTON(804, OnDirPick) + EVT_BUTTON(806, OnDirPick) + EVT_CHECKBOX(807, OnSrvClick) + EVT_CHECKBOX(809, OnSrvClick) +END_EVENT_TABLE() + +void CampoWizardPage8::OnDirPick(wxCommandEvent& e) +{ + const wxWindowID wiTargetField = e.GetId() - 1; + wxString strPath = Get(wiTargetField); + wxDirDialog dlg(this, wxDirSelectorPromptStr, strPath, + wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST); + if (dlg.ShowModal() == wxID_OK) + { + strPath = dlg.GetPath(); + Set(wiTargetField, strPath); + } +} + +void CampoWizardPage8::OnSrvClick(wxCommandEvent& e) +{ + wxWindow* pWnd = FindWindowById(e.GetId() + 1); + if (pWnd) + pWnd->Enable(e.IsChecked()); +} + +bool CampoWizardPage8::ForwardValidate() +{ + //controllo esistenza programmi sul server + const wxString strPrgPath = Get(803); + wxDir dirPrgPath(strPrgPath); + bool ok_prg = false; + //deve esistere non vuota, e contenere almeno campo.ini,install.ini,campo.aut,ba0.exe + if (dirPrgPath.Exists(strPrgPath) && dirPrgPath.HasFiles() && dirPrgPath.HasSubDirs()) + { + wxFileName fnFileToCheck(strPrgPath, "campo"); + fnFileToCheck.SetExt("ini"); + if (fnFileToCheck.FileExists()) + { + fnFileToCheck.SetName("install"); + fnFileToCheck.SetExt("ini"); + if (fnFileToCheck.FileExists()) + { + fnFileToCheck.SetName("campo"); + fnFileToCheck.SetExt("aut"); + if (fnFileToCheck.FileExists()) + { + fnFileToCheck.SetName("ba0"); + fnFileToCheck.SetExt("exe"); + if (fnFileToCheck.FileExists()) + { + ok_prg = true; + } + } + } + } + } + if (!ok_prg) + return ErrorBox("La cartella selezionata come origine dei programmi NON e' valida!"); + + //controllo esistenza dati sul server + wxString strDataPath = Get(805); + wxDir dirDataPath(strDataPath); + bool ok_data = false; + //deve esistere non vuota, e contenere la sottodirectory "com" con i dati comuni + if (dirDataPath.Exists(strDataPath) && dirDataPath.HasSubDirs("com")) + { + strDataPath << "/com"; + wxFileName fnFileToCheck(strDataPath, "tabcom"); + fnFileToCheck.SetExt("dbf"); + if (fnFileToCheck.FileExists()) + ok_data = true; + } + if (!ok_data) + return ErrorBox("La cartella selezionata come area dati NON e' valida!"); + return true; +} + CampoWizardPage8::CampoWizardPage8(wxWizard* parent) : CampoWizardPage(parent) { wxString strTitle = wxT("Installazione di tipo Client"); wxString strBody = wxT("

Digitare nel campo 'Cartella locale programma' il percorso completo della cartella dove si desidera installare il programma. "); - strBody += wxT("Il percorso di default (consigliato) e' C:\\Campo

"); + strBody += wxT("Il percorso consigliato e' C:\\Campo

"); + strBody += wxT("

Digitare nel campo 'Cartella remota origine programmi' il percorso completo della cartella di rete dove sono i files origine del programma. "); + strBody += wxT("E' la cartella di programmi condivisa dal server precedentemente installato.

"); + strBody += wxT("

Digitare nel campo 'Cartella remota dati da utilizzare' il percorso completo della cartella di rete dove sono i dati. "); + strBody += wxT("E' la cartella dei dati condivisa dal server precedentemente installato.

"); SetHTMLText(strTitle, strBody); //griglia per sistemare i campi @@ -1071,13 +1188,33 @@ CampoWizardPage8::CampoWizardPage8(wxWizard* parent) : CampoWizardPage(parent) //prompt AddLabel(gbsSizer, "Cartella remota dati da utilizzare", 2, 0); //campo testo - strPath += "\\dati"; + strPath += "/dati"; wxTextCtrl* tcDataPath = new wxTextCtrl(this, 805, strPath, wxDefaultPosition, wxSize(320,-1)); gbsSizer->Add(tcDataPath, wxGBPosition(2, 1)); //bottone 'sfoglia' wxButton* bDataButton = new wxButton(this, 806, wxT("Sfoglia"), wxDefaultPosition, wxSize(48, -1)); gbsSizer->Add(bDataButton, wxGBPosition(2, 2)); + //quarta riga della griglia + //check usa authoriz + wxCheckBox* chAuthoriz = new wxCheckBox(this, 807, wxT("Utilizza il gestore delle autorizzazioni")); + chAuthoriz->SetValue(false); + gbsSizer->Add(chAuthoriz, wxGBPosition(3, 1)); + //quale e' il server authoriz + wxTextCtrl* tcAuthoriz = new wxTextCtrl(this, 808, "nomeserverautorizzazioni", wxDefaultPosition, wxSize(96,-1)); + tcAuthoriz->Disable(); + gbsSizer->Add(tcAuthoriz, wxGBPosition(3, 2)); + + //quarta riga della griglia + //check usa diction + wxCheckBox* chDictionary = new wxCheckBox(this, 809, wxT("Utilizza il gestore dei dizionari")); + chDictionary->SetValue(false); + gbsSizer->Add(chDictionary, wxGBPosition(4, 1)); + //quale e' il server diction + wxTextCtrl* tcDiction = new wxTextCtrl(this, 810, "nomeserverdizionario", wxDefaultPosition, wxSize(96,-1)); + tcDiction->Disable(); + gbsSizer->Add(tcDiction, wxGBPosition(4, 2)); + } /**********************************************************************************************************/ //pagina con la selezione di destinazione @@ -1129,6 +1266,16 @@ CampoWizardPage10::CampoWizardPage10(wxWizard* parent) : CampoWizardPage(parent) // CampoWizard /////////////////////////////////////////////////////////// //la dichiarazione della classe e' prima in quanto alcuni suoi metodi sono usati da altre classi scritte piu' su +BEGIN_EVENT_TABLE(CampoWizard, wxWizard) + EVT_BUTTON(wxID_FORWARD, CampoWizard::OnNext) +END_EVENT_TABLE() + +void CampoWizard::OnNext(wxCommandEvent& e) +{ + CampoWizardPage* p = (CampoWizardPage*)GetCurrentPage(); + if (p->ForwardValidate()) + e.Skip(); +} bool CampoWizard::Run() { return RunWizard(Page(0)); }