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...)
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("<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("<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("Il percorso consigliato e' <i>C:\\Campo</i> </p>");
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("<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.");
@ -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("<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);
//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)); }