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
This commit is contained in:
luca 2007-07-26 14:00:16 +00:00
parent 8ead286823
commit 4a3383690c

View File

@ -225,8 +225,10 @@ class CampoWizard : public wxWizard
unsigned int _installation_type; //tipo di installazione selezionata (standard,server,client...) unsigned int _installation_type; //tipo di installazione selezionata (standard,server,client...)
protected: protected:
DECLARE_EVENT_TABLE();
int Pages() const { return m_nPages; } int Pages() const { return m_nPages; }
CampoWizardPage* Page(int p) const { return m_pPage[p]; } CampoWizardPage* Page(int p) const { return m_pPage[p]; }
void OnNext(wxCommandEvent& e);
public: public:
bool Run(); bool Run();
@ -241,6 +243,9 @@ public:
CampoWizard(wxWindow* pParent); CampoWizard(wxWindow* pParent);
}; };
////////////////////////////
//Campo wizard page (pagina generica del programma, di cui saranno figlie le singole pagine) //Campo wizard page (pagina generica del programma, di cui saranno figlie le singole pagine)
class CampoWizardPage : public wxWizardPageSimple class CampoWizardPage : public wxWizardPageSimple
{ {
@ -254,6 +259,7 @@ protected:
void AddLabel(wxGridBagSizer* pSizer, const wxChar* label, unsigned int row, unsigned int column); void AddLabel(wxGridBagSizer* pSizer, const wxChar* label, unsigned int row, unsigned int column);
public: public:
virtual bool ForwardValidate() { return true; }
wxString Get(wxWindowID id) const; wxString Get(wxWindowID id) const;
bool Set(wxWindowID id, const wxString& str); bool Set(wxWindowID id, const wxString& str);
int GetSelection(wxWindowID id) const; int GetSelection(wxWindowID id) const;
@ -357,13 +363,13 @@ class CampoWizardPage2 : public CampoWizardPage
wxRadioBox* m_pRadioBox; wxRadioBox* m_pRadioBox;
protected: protected:
virtual bool TransferDataFromWindow(); virtual bool ForwardValidate();
public: public:
CampoWizardPage2(wxWizard* parent); CampoWizardPage2(wxWizard* parent);
}; };
bool CampoWizardPage2::TransferDataFromWindow() bool CampoWizardPage2::ForwardValidate()
{ {
const int last_row = m_pRadioBox->GetRowCount() - 1; const int last_row = m_pRadioBox->GetRowCount() - 1;
const int selected_row = m_pRadioBox->GetSelection(); 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.. //sono installazioni valide quelle che presentano la coppia di files campo.ini e campo.aut (senza..
//..questi 2 soggetti il programma non parte) //..questi 2 soggetti il programma non parte)
wxString campo_ini = path; wxString campo_ini = path;
campo_ini << "\\campo.ini"; campo_ini << "/campo.ini";
wxString campo_aut = path; wxString campo_aut = path;
campo_aut << "\\campo.aut"; campo_aut << "/campo.aut";
if (wxFileName::FileExists(campo_ini) && wxFileName::FileExists(campo_aut)) if (wxFileName::FileExists(campo_ini) && wxFileName::FileExists(campo_aut))
{ {
asCampi.Add(path); asCampi.Add(path);
@ -456,13 +462,13 @@ CampoWizardPage2::CampoWizardPage2(wxWizard* parent) : CampoWizardPage(parent)
class CampoWizardPage3 : public CampoWizardPage class CampoWizardPage3 : public CampoWizardPage
{ {
protected: protected:
virtual bool TransferDataFromWindow(); virtual bool ForwardValidate();
public: public:
CampoWizardPage3(wxWizard* parent); CampoWizardPage3(wxWizard* parent);
}; };
bool CampoWizardPage3::TransferDataFromWindow() bool CampoWizardPage3::ForwardValidate()
{ {
if (GetSelection(301) == 1) if (GetSelection(301) == 1)
return ErrorBox("Impossibile proseguire se non si accetta la licenza sul software!!"); return ErrorBox("Impossibile proseguire se non si accetta la licenza sul software!!");
@ -802,13 +808,13 @@ class CampoWizardPage5 : public CampoWizardPage
wxRadioBox* m_pRadioBox; wxRadioBox* m_pRadioBox;
protected: protected:
virtual bool TransferDataFromWindow(); virtual bool ForwardValidate();
public: public:
CampoWizardPage5(wxWizard* parent); CampoWizardPage5(wxWizard* parent);
}; };
bool CampoWizardPage5::TransferDataFromWindow() bool CampoWizardPage5::ForwardValidate()
{ {
const unsigned int type = m_pRadioBox->GetSelection(); const unsigned int type = m_pRadioBox->GetSelection();
GetWizard().SetInstallationType(type); GetWizard().SetInstallationType(type);
@ -851,7 +857,7 @@ class CampoWizardPage6 : public CampoWizardPage
protected: protected:
DECLARE_EVENT_TABLE(); DECLARE_EVENT_TABLE();
void OnDirPick(wxCommandEvent& e); void OnDirPick(wxCommandEvent& e);
virtual bool TransferDataFromWindow(); virtual bool ForwardValidate();
public: public:
CampoWizardPage6(wxWizard* parent); 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 //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)); wxDir dirDataPath(Get(603));
if (dirDataPath.Exists(Get(603)) && (dirDataPath.HasFiles() || dirDataPath.HasSubDirs())) if (dirDataPath.Exists(Get(603)) && (dirDataPath.HasFiles() || dirDataPath.HasSubDirs()))
@ -917,7 +923,7 @@ CampoWizardPage6::CampoWizardPage6(wxWizard* parent) : CampoWizardPage(parent)
//prompt //prompt
AddLabel(gbsSizer, "Cartella dati", 1, 0); AddLabel(gbsSizer, "Cartella dati", 1, 0);
//campo testo //campo testo
strPath += "\\dati"; strPath += "/dati";
wxTextCtrl* tcDataPath = new wxTextCtrl(this, 603, strPath, wxDefaultPosition, wxSize(320,-1)); wxTextCtrl* tcDataPath = new wxTextCtrl(this, 603, strPath, wxDefaultPosition, wxSize(320,-1));
gbsSizer->Add(tcDataPath, wxGBPosition(1, 1)); gbsSizer->Add(tcDataPath, wxGBPosition(1, 1));
//bottone 'sfoglia' //bottone 'sfoglia'
@ -937,7 +943,8 @@ class CampoWizardPage7 : public CampoWizardPage
{ {
protected: protected:
DECLARE_EVENT_TABLE(); DECLARE_EVENT_TABLE();
virtual bool TransferDataFromWindow(); virtual bool ForwardValidate();
void OnDirPick(wxCommandEvent& e);
void OnSrvClick(wxCommandEvent& e); void OnSrvClick(wxCommandEvent& e);
public: public:
@ -945,10 +952,25 @@ public:
}; };
BEGIN_EVENT_TABLE(CampoWizardPage7, CampoWizardPage) BEGIN_EVENT_TABLE(CampoWizardPage7, CampoWizardPage)
EVT_BUTTON(702, OnDirPick)
EVT_BUTTON(704, OnDirPick)
EVT_CHECKBOX(705, OnSrvClick) EVT_CHECKBOX(705, OnSrvClick)
EVT_CHECKBOX(707, OnSrvClick) EVT_CHECKBOX(707, OnSrvClick)
END_EVENT_TABLE() 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) void CampoWizardPage7::OnSrvClick(wxCommandEvent& e)
{ {
wxWindow* pWnd = FindWindowById(e.GetId() + 1); wxWindow* pWnd = FindWindowById(e.GetId() + 1);
@ -956,8 +978,12 @@ void CampoWizardPage7::OnSrvClick(wxCommandEvent& e)
pWnd->Enable(e.IsChecked()); 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; return true;
} }
@ -965,8 +991,10 @@ CampoWizardPage7::CampoWizardPage7(wxWizard* parent) : CampoWizardPage(parent)
{ {
wxString strTitle = wxT("Installazione di tipo Server"); wxString strTitle = wxT("Installazione di tipo Server");
wxString strBody = wxT("<p>Digitare nel campo <b>'Cartella programma'</b> il percorso completo della cartella dove si desidera installare il programma. "); wxString strBody = wxT("<p>Digitare nel campo <b>'Cartella programma'</b> il percorso completo della cartella dove si desidera installare il programma. ");
strBody += wxT("Il percorso di default (consigliato) e' <i>C:\\Campo</i> </p>"); strBody += wxT("Il percorso consigliato e' <i>C:\\Campo</i> </p>");
strBody += wxT("<p>Le cartella del programma e dei dati <b>dovranno essere condivise in modalita' lettura/scrittura</b> agli utenti di sistema e di rete che utilizzeranno il software <b><i>Campo</i></b>. "); strBody += wxT("<p>Digitare nel campo <b>'Cartella dati'</b> il percorso completo della cartella dove si desidera installare l'area dati. ");
strBody += wxT("Il percorso consigliato e' <i>C:\\Campo\\dati</i> </p>");
strBody += wxT("<p>Le cartelle del programma e dei dati <b><u>dovranno essere condivise in modalita' lettura/scrittura</u></b> agli utenti di sistema e di rete che utilizzeranno il software <b><i>Campo</i></b>. ");
strBody += wxT("In mancanza di tale condivisione nessun client potra' accedere al server!</p>"); strBody += wxT("In mancanza di tale condivisione nessun client potra' accedere al server!</p>");
strBody += wxT("<p><b>Gestore autorizzazioni:</b> e' il software che permette di gestire una chiave di protezione hardware multiutenza condivisa in rete. "); strBody += wxT("<p><b>Gestore autorizzazioni:</b> 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."); 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 //prompt
AddLabel(gbsSizer, "Cartella dati", 1, 0); AddLabel(gbsSizer, "Cartella dati", 1, 0);
//campo testo //campo testo
strPath += "\\dati"; strPath += "/dati";
wxTextCtrl* tcDataPath = new wxTextCtrl(this, 703, strPath, wxDefaultPosition, wxSize(320,-1)); wxTextCtrl* tcDataPath = new wxTextCtrl(this, 703, strPath, wxDefaultPosition, wxSize(320,-1));
gbsSizer->Add(tcDataPath, wxGBPosition(1, 1)); gbsSizer->Add(tcDataPath, wxGBPosition(1, 1));
//bottone 'sfoglia' //bottone 'sfoglia'
@ -1027,15 +1055,104 @@ CampoWizardPage7::CampoWizardPage7(wxWizard* parent) : CampoWizardPage(parent)
class CampoWizardPage8 : public CampoWizardPage class CampoWizardPage8 : public CampoWizardPage
{ {
protected: protected:
DECLARE_EVENT_TABLE();
virtual bool ForwardValidate();
void OnDirPick(wxCommandEvent& e);
void OnSrvClick(wxCommandEvent& e);
public: public:
CampoWizardPage8(wxWizard* parent); 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) CampoWizardPage8::CampoWizardPage8(wxWizard* parent) : CampoWizardPage(parent)
{ {
wxString strTitle = wxT("Installazione di tipo Client"); wxString strTitle = wxT("Installazione di tipo Client");
wxString strBody = wxT("<p>Digitare nel campo <b>'Cartella locale programma'</b> il percorso completo della cartella dove si desidera installare il programma. "); wxString strBody = wxT("<p>Digitare nel campo <b>'Cartella locale programma'</b> il percorso completo della cartella dove si desidera installare il programma. ");
strBody += wxT("Il percorso di default (consigliato) e' <i>C:\\Campo</i> </p>"); strBody += wxT("Il percorso consigliato e' <i>C:\\Campo</i> </p>");
strBody += wxT("<p>Digitare nel campo <b>'Cartella remota origine programmi'</b> 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.</p>");
strBody += wxT("<p>Digitare nel campo <b>'Cartella remota dati da utilizzare'</b> il percorso completo della cartella di rete dove sono i dati. ");
strBody += wxT("E' la cartella dei dati condivisa dal server precedentemente installato.</p>");
SetHTMLText(strTitle, strBody); SetHTMLText(strTitle, strBody);
//griglia per sistemare i campi //griglia per sistemare i campi
@ -1071,13 +1188,33 @@ CampoWizardPage8::CampoWizardPage8(wxWizard* parent) : CampoWizardPage(parent)
//prompt //prompt
AddLabel(gbsSizer, "Cartella remota dati da utilizzare", 2, 0); AddLabel(gbsSizer, "Cartella remota dati da utilizzare", 2, 0);
//campo testo //campo testo
strPath += "\\dati"; strPath += "/dati";
wxTextCtrl* tcDataPath = new wxTextCtrl(this, 805, strPath, wxDefaultPosition, wxSize(320,-1)); wxTextCtrl* tcDataPath = new wxTextCtrl(this, 805, strPath, wxDefaultPosition, wxSize(320,-1));
gbsSizer->Add(tcDataPath, wxGBPosition(2, 1)); gbsSizer->Add(tcDataPath, wxGBPosition(2, 1));
//bottone 'sfoglia' //bottone 'sfoglia'
wxButton* bDataButton = new wxButton(this, 806, wxT("Sfoglia"), wxDefaultPosition, wxSize(48, -1)); wxButton* bDataButton = new wxButton(this, 806, wxT("Sfoglia"), wxDefaultPosition, wxSize(48, -1));
gbsSizer->Add(bDataButton, wxGBPosition(2, 2)); 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 //pagina con la selezione di destinazione
@ -1129,6 +1266,16 @@ CampoWizardPage10::CampoWizardPage10(wxWizard* parent) : CampoWizardPage(parent)
// CampoWizard // CampoWizard
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
//la dichiarazione della classe e' prima in quanto alcuni suoi metodi sono usati da altre classi scritte piu' su //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() bool CampoWizard::Run()
{ return RunWizard(Page(0)); } { return RunWizard(Page(0)); }