From db128e1983e6ab808a790b5e8140395afb97e222 Mon Sep 17 00:00:00 2001
From: luca "); str += strTitle; str += wxT(" Questo programma vi guiderà passo a passo nell'installazione / aggiornamento del software. Leggere attentamente le istruzioni che saranno visualizzate nelle finestre di questo programma di installazione! Prima di proseguire con l'installazione / aggiornamento assicurarsi di avere effettuato il login a Windows con un utente di tipo 'Amministratore' di sistema. In caso si desideri aggiornare una postazione tipo server di APPNAME su cui sia attivo il gestore dei servizi di APPNAME, arrestare prima tale gestore dei servizi. E' possibile INSTALLARE APPNAME in un nuovo direttorio. E' possibile AGGIORNARE (scelta consigliata) una installazione di APPNAME gia' presente oppure INSTALLARE in un nuovo direttorio. Selezionare l'opzione desiderata nel riquadro sottostante. In caso di piu' di una installazione ");
- strBody += wxT("presente sara' preselezionata la eventuale installazione di tipo Server, in quanto deve essere aggiornata per prima! ");
- strBody += wxT(" In questo caso procedere all'aggiornamento di tale installazione Server e aggiornare successivamente le postazioni client ");
- strBody += wxT("lanciando il programma APPNAME su di esse Prima di proseguire accertarsi che non vi sia alcuna sessione di APPNAME attiva! ");
- strBody += wxT("Terminare quindi le eventuali sessioni di APPNAME attive e proseguire. E' possibile anche installare la versione DEMO di APPNAME. Questa versione e' a scopo puramente ");
- strBody += wxT("dimostrativo e NON va di norma installata! Non e' utilizzabile come la versione normale in quanto limitata nel ");
- strBody += wxT("numero e nella data delle registrazioni e nel tempo di uso giornaliero (max 2 ore). La cartella di installazione della ");
- strBody += wxT("versione dimostrativa e' C:/campodemo e dispone di un'area dati parzialmente precompilata. La versione commerciale del software richiede l'installazione e la presenza della chiave hardware di protezione E' stata rilevata una chiave tipo Hardlock: Si puo' procedere con l'installazione /aggiornamento del software APPNAME. Premere il pulsante \"Avanti\". E' stata rilevata una chiave tipo Eutron: Si puo' procedere con l'installazione /aggiornamento del software APPNAME. Premere il pulsante \"Avanti\". E' stato rilevata una chiave remota condivisa in rete con il servizio di gestione autorizzazioni: Si puo' procedere con l'installazione /aggiornamento del software APPNAME. Premere il pulsante \"Avanti\". Non e' stata rilevata alcuna chiave hardware installata sul computer! Per procedere all'installazione della chiave hardware, collegarla al computer e premere il bottone corrispondente alla tipologia della chiave stessa per installarne i driver. Se si utilizza una chiave remota collegata ad un altro computer e condivisa in rete attraverso il servizio gestione di autorizzazioni ");
- strBody += wxT("premere il bottone Cerca per attivare la ricerca automatica della chiave remota. Qualora tale ricerca fallisse digitare il nome del computer ");
- strBody += wxT("(o l'indirizzo IP) cui e' collegata la chiave di rete e su cui e' installato e attivo il gestore di autorizzazioni. ");
- FindWindowById(401)->Enable();
- FindWindowById(402)->Enable();
- FindWindowById(403)->Enable();
- FindWindowById(404)->Enable();
- break;
- }
-
- SetHTMLText(strTitle, strBody);
-
- return true;
-}
-
-void CampoWizardPage4::BuildKey(char* key)
-{
- for (int i = 0; i < 8; i++)
- key[i] = 'A'+ rand()%26;
-}
-
-wxString CampoWizardPage4::DecodeString(const wxString& data)
-{
- char key[8] = "";
- BuildKey(key);
-
- char tmp[256];
- int i;
- for (i = 0; data[i]; i++)
- tmp[i] = data[i] - (i < 8 ? key[i] : tmp[i - 8]);
- tmp[i] = '\0';
- return tmp;
-}
-
-int CampoWizardPage4::VersionYear()
-{
- char ver[32];
- GetPrivateProfileString("ba", "Versione", "", ver, sizeof(ver), "../../program/install.ini");
- ver[4] = '\0';
- return atoi(ver);
-}
-
-int CampoWizardPage4::DongleTest()
-{
- int dongle_type = 0;
- int yearKey = 0;
-
- unsigned int serno = 0xFFFF;
-
- wxString strSrvName = GetWizard().GetSrvAuth(); //nome del server di autorizzazioni (se c'e')
- if (!strSrvName.IsEmpty())
- {
- serno = ServerLogin(yearKey, strSrvName);
- if (serno != 0xFFFF)
- dongle_type = 3; //chiave remota
- }
-
- if (serno == 0xFFFF)
- {
- serno = HardlockLogin(yearKey);
- if (serno == 0xFFFF)
- {
- serno = EutronLogin(yearKey);
- if (serno != 0xFFFF)
- dongle_type = 2; //chiave eutron
- }
- else
- dongle_type = 1; //chiave hardlock
- }
-
- if (serno == 0) // Chiave di sviluppo
- return dongle_type;
- if (serno == 0xFFFF) // Chiave inesistente o invisibile = Prima installazione o demo
- return dongle_type;
-
- const int verYear = VersionYear();
- if (yearKey < verYear) // Chiave già programmata con assistenza pagata
- {
- bool ok = false;
- wxFileInputStream file("../dninst.zip");
- if (file.IsOk())
- {
- wxTextInputStream keys(file);
- wxString line = keys.ReadLine();
- srand(883);
- const int ass_year = atoi(DecodeString(line));
- if (ass_year > yearKey) // Non devo abbassare l'anno di assistenza!
- {
- srand(ass_year);
- while (!file.Eof())
- {
- line = keys.ReadLine();
- line = DecodeString(line);
- unsigned int sn = (unsigned int)atol(line);
- if (sn == serno || line[0] == '*')
- {
- ok = true;
- break;
- }
- }
- if (ok)
- {
- const int n = ass_year%10;
- const int y = (ass_year / 1000) * 1000 + (ass_year%1000) /10;
- line.Printf("Il contratto di manutenzione %d/%d verrà attivato automaticamente\ndurante l'installazione del software", y, n);
- WarningBox(line);
- }
- else
- {
- line.Printf("È necessario contattare l'assistenza tecnica\n"
- "per l'abilitazione del contratto di manutenzione %d", verYear);
- WarningBox(line);
- }
- }
- }
- else
- {
- ErrorBox("Impossibile verificare il contratto di manutenzione");
- }
- }
- return dongle_type;
-}
-
-CampoWizardPage4::CampoWizardPage4(wxWizard* parent) : CampoWizardPage(parent)
-{
- //procedura per la costruzione dei bottoni e delle immagini per l'installazione dei driver di chiave
- //"griglia" contenitrice degli oggetti
-
- //griglia per sistemare i campi
- wxGridBagSizer* gbsButtSizer = new wxGridBagSizer(VGAP, HGAP);
- GetSizer()->Add(gbsButtSizer);
-
- //prima riga della griglia
- //Hardlock label
- AddLabel(gbsButtSizer, "Installa chiave locale di tipo Hardlock", 0, 0);
- //Hardlock image
- wxBitmap bmp_HL("../servers/hardlock.gif", wxBITMAP_TYPE_GIF);
- wxStaticBitmap* s_bmp_HL = new wxStaticBitmap(this, wxID_ANY, bmp_HL);
- gbsButtSizer->Add(s_bmp_HL, wxGBPosition(0, 1));
- //bottone Hardlock
- wxButton* bHlButton = new wxButton(this, 401, wxT("Hardlock"), wxDefaultPosition, wxSize(64, -1));
- gbsButtSizer->Add(bHlButton, wxGBPosition(0, 2), wxDefaultSpan, wxALIGN_CENTER_VERTICAL);
-
- //seconda riga della griglia
- //Eutron label
- AddLabel(gbsButtSizer, "Installa chiave locale di tipo Eutron", 1, 0);
- //Eutron image
- wxBitmap bmp_EU("../servers/eutron.gif", wxBITMAP_TYPE_GIF);
- wxStaticBitmap* s_bmp_EU = new wxStaticBitmap(this, wxID_ANY, bmp_EU);
- gbsButtSizer->Add(s_bmp_EU, wxGBPosition(1, 1));
- //bottone Eutron
- wxButton* bEuButton = new wxButton(this, 402, wxT("Eutron"), wxDefaultPosition, wxSize(64, -1));
- gbsButtSizer->Add(bEuButton, wxGBPosition(1, 2), wxDefaultSpan, wxALIGN_CENTER_VERTICAL);
-
- //terza riga della griglia
- //Server label
- AddLabel(gbsButtSizer, "Nome o indirizzo IP del server di autorizzazioni", 2, 0);
- //nome Server
- wxTextCtrl* tcSrvName = new wxTextCtrl(this, 404, "", wxDefaultPosition, wxSize(128,-1));
- gbsButtSizer->Add(tcSrvName, wxGBPosition(2, 1));
- //bottone Eutron
- wxButton* bSrvButton = new wxButton(this, 403, wxT("Cerca"), wxDefaultPosition, wxSize(64, -1));
- gbsButtSizer->Add(bSrvButton, wxGBPosition(2, 2), wxDefaultSpan, wxALIGN_CENTER_VERTICAL);
-
-}
-
-/**********************************************************************************************************/
-// 5 Scelta tipo installazione
-/**********************************************************************************************************/
-class CampoWizardPage5 : public CampoWizardPage
-{
- wxRadioBox* m_pRadioBox;
-
-protected:
- virtual bool ForwardValidate();
-
-public:
- CampoWizardPage5(wxWizard* parent);
-};
-
-bool CampoWizardPage5::ForwardValidate()
-{
- const unsigned int type = m_pRadioBox->GetSelection();
- GetWizard().SetInstallationType(type);
- return true;
-}
-
-CampoWizardPage5::CampoWizardPage5(wxWizard* parent) : CampoWizardPage(parent)
-{
- //Istruzioni per l'uso!
- wxString strTitle = wxT("Scelta del tipo di installazione");
- wxString strBody = wxT(" Standard (scelta consigliata). Installazione su postazione singola, con programmi e dati sul disco locale del computer Installazioni di rete (per utenti esperti) Server: Computer in rete sul quale sono presenti una copia, utilizzata o meno, dei programmi (server programmi) e l’area dati (server dati). ");
- strBody += wxT("In una installazione in rete di APPNAME e' necessario sia presente un unica postazione di tipo server, ");
- strBody += wxT("e deve essere installata per prima! Client: Computer in rete sul quale e' presente una copia dei programmi ma non l'area dati. ");
- strBody += wxT("I client possono essere installati solo dopo l'installazione del server! 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:\\APPNAME Digitare nel campo 'Cartella Dati' il percorso completo della cartella dove si desidera installare l'area dati. ");
- strBody += wxT("Il percorso di default (consigliato) e' C:\\APPNAME\\dati Dati dimostrativi: area dati precompilata per installazioni di tipo dimostrativo del funzionamento del software. ");
- strBody += wxT("NON vanno caricati nel caso di una normale installazione! Digitare nel campo 'Cartella programma' il percorso completo della cartella dove si desidera installare il programma. ");
- strBody += wxT("Il percorso consigliato e' C:\\APPNAME Digitare nel campo 'Cartella dati' il percorso completo della cartella dove si desidera installare l'area dati. ");
- strBody += wxT("Il percorso consigliato e' C:\\APPNAME\\dati 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 APPNAME. ");
- strBody += wxT("In mancanza di tale condivisione nessun client potra' accedere al server! 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.");
- strBody += wxT("Viene di default proposto il computer su cui si sta eseguendo l'installazione di APPNAME (localhost). Gestore dizionari: e' il software che permette di utilizzare APPNAME in lingue diverse dall'italiano. ");
- strBody += wxT("Per l'installazione di questo software viene di default proposto il computer su cui si sta eseguendo l'installazione di APPNAME (localhost). Modalita' di esecuzione programmi di gestione Digitare nel campo 'Cartella locale programma' il percorso completo della cartella dove si desidera installare il programma. ");
- strBody += wxT("Il percorso consigliato e' C:\\APPNAME 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. 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. Gestore dizionari: e' il computer gestore dei dizionari di APPNAME in lingue diverse dall'italiano. Generalmente e' il computer agente da server di APPNAME in rete. ");
- strBody += wxT("Premere il bottone Cerca per attivare la ricerca automatica di tale computer. Qualora tale ricerca fallisse digitare il nome del computer gestore dei dizionari E' possibile creare l'icona di APPNAME sul desktop Cartella programma da aggiornare: ");
- strBody += wxT(Bold(_strPrgLocPath) + " Cartella dati in uso: ");
- strBody += wxT(Bold(_strDataPath) + " Tipo installazione selezionata: ");
- strBody += wxT("DEMO Cartella dove installare il programma: ");
- strBody += wxT("C:/campodemo Tipo installazione selezionata: ");
- strBody += wxT(Bold(_strInstallType) + " Cartella dove installare il programma: ");
- strBody += wxT(Bold(_strPrgLocPath) + " Cartella di origine dei files del programma: ");
- strBody += wxT(Bold(_strPrgNetPath) + " Cartella dati da creare: ");
- strBody += wxT(Bold(_strDataPath) + " Computer gestore delle autorizzazioni: ");
- strBody += wxT(Bold(_strSrvAuth) + " Computer gestore dei dizionari: ");
- strBody += wxT(Bold(_strSrvDict) + " Modalita' di esecuzione dei programmi di gestione: ");
- if (_iSrvAutostartMode == 0)
- strBody += wxT(Bold("Come servizi") + "
");
- str += wxT("
");
- strBody += wxT("Come servizi: i programmi di gestione vengono eseguiti come servizi di Windows; questa e' la modalita' consigliata ed e' obbligatoria in caso di installazione con Windows 2003
");
- strBody += wxT("Nel menu esecuzione automatica: i programmi di gestione vengono eseguiti automaticamente al primo accesso di un utente al server di APPNAME; usare questa modalita' solo nell'impossibilita' di utilizzare la precedente
Installazione area dati dimostrativa
"); - - if (_bDesktopShortcut) - strBody += wxT("Creazione dell' icona sul desktop
"); - - SetHTMLText(strTitle, strBody); - - return true; -} - -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(m_pPage[0]); } - -wxString CampoWizard::Get(wxWindowID id) const -{ - wxWindow* pWnd = FindWindowById(id); - return pWnd ? pWnd->GetLabel() : wxEmptyString; -} - -int CampoWizard::GetSelection(wxWindowID id) const -{ - int n = -1; - wxWindow* pWnd = FindWindowById(id); - if (pWnd) - { - wxChoice* pList = (wxChoice*)pWnd; - n = pList->GetSelection(); - } - return n; -} - -bool CampoWizard::GetBool(wxWindowID id) const -{ - wxCheckBox* pWnd = (wxCheckBox*)FindWindowById(id); - return pWnd != NULL && pWnd->IsChecked(); -} - - -void CampoWizard::Set(wxWindowID id, const wxString str) -{ - wxWindow* pWnd = FindWindowById(id); - if (pWnd != NULL) - pWnd->SetLabel(str); -} - -//lunga litania di metodi per gettare e settare i valori tra le pagine -void CampoWizard::SetDestinationPath(const wxString& path) -{ - _strDestinationPath = path; - //Se il path di destinazione e' vuoto -> nuova installazione, senno' e' un aggiornamento della installazione.. - //..che sta in _strDestinationPath - if (_strDestinationPath.IsEmpty()) - { - if (GetInstDemoVersion()) - wxWizardPageSimple::Chain(m_pPage[2], m_pPage[8]); //installazione DEMO - else - wxWizardPageSimple::Chain(m_pPage[3], m_pPage[4]); //installazione nuova normale - } - else - { - wxWizardPageSimple::Chain(m_pPage[3], m_pPage[8]); //aggiornamento - } -} - -const wxString& CampoWizard::GetDestinationPath() const -{ - return _strDestinationPath; -} - -void CampoWizard::SetInstallationType(const unsigned int type) -{ - _uInstallationType = type; - //in base al tipo di installazione spara l'utente alla pagina corretta - switch (_uInstallationType) - { - case 1: //server - wxWizardPageSimple::Chain(m_pPage[4], m_pPage[6]); //manda l'utente alla pagina server - wxWizardPageSimple::Chain(m_pPage[6], m_pPage[8]); //dal server alla pagina riassuntiva - break; - case 2: //client - wxWizardPageSimple::Chain(m_pPage[4], m_pPage[7]); //manda l'utente alla pagina client - wxWizardPageSimple::Chain(m_pPage[7], m_pPage[8]); //dal client alla pagina riassuntiva - break; - case 3: //aggiornamento installazione precedente - wxWizardPageSimple::Chain(m_pPage[3], m_pPage[8]); //manda l'utente alla pagina riassuntiva - break; - default: //standard - //if demo - if (GetInstDemoVersion()) - { - wxWizardPageSimple::Chain(m_pPage[2], m_pPage[8]); //manda l'utente alla pagina riassuntiva senza controllo chiave - } - else - { - wxWizardPageSimple::Chain(m_pPage[4], m_pPage[5]); //manda l'utente alla pagina standard - wxWizardPageSimple::Chain(m_pPage[5], m_pPage[8]); //dalla standard alla pagina riassuntiva - } - break; - } -} - -const unsigned int CampoWizard::GetInstallationType() const -{ - return _uInstallationType; -} - -void CampoWizard::SetPrgLocPath(const wxString& strPrgLocPath) -{ - _strPrgLocPath = strPrgLocPath; -} - -const unsigned int CampoWizard::GetDongleType() const -{ - return _uDongleType; -} - -void CampoWizard::SetDongleType(const unsigned int uType) -{ - _uDongleType = uType; -} - -const wxString& CampoWizard::GetPrgLocPath() const -{ - return _strPrgLocPath; -} - -void CampoWizard::SetPrgNetPath(const wxString& strPrgNetPath) -{ - _strPrgNetPath = strPrgNetPath; -} - -const wxString& CampoWizard::GetPrgNetPath() const -{ - return _strPrgNetPath; -} - -void CampoWizard::SetDataPath(const wxString& strDataPath) -{ - _strDataPath = strDataPath; -} - -const wxString& CampoWizard::GetDataPath() const -{ - return _strDataPath; -} - -void CampoWizard::SetInstUseAuth(const bool bInstUseAuth) -{ - _bInstUseAuth = bInstUseAuth; -} - -const bool CampoWizard::GetInstUseAuth() const -{ - return _bInstUseAuth; -} - -void CampoWizard::SetSrvAuth(const wxString& strSrvAuth) -{ - _strSrvAuth = strSrvAuth; -} - -const wxString& CampoWizard::GetSrvAuth() const -{ - return _strSrvAuth; -} - -void CampoWizard::SetInstUseDict(const bool bInstUseDict) -{ - _bInstUseDict = bInstUseDict; -} - -const bool CampoWizard::GetInstUseDict() const -{ - return _bInstUseDict; -} - -void CampoWizard::SetSrvDict(const wxString& strSrvDict) -{ - _strSrvDict = strSrvDict; -} - -const wxString& CampoWizard::GetSrvDict() const -{ - return _strSrvDict; -} - -void CampoWizard::SetSrvAutostartMode(const int iSrvAutostartMode) -{ - _iSrvAutostartMode = iSrvAutostartMode; -} - -const int CampoWizard::GetSrvAutostartMode() const -{ - return _iSrvAutostartMode; -} - -void CampoWizard::SetInstDemoData(const bool bInstDemoData) -{ - _bInstDemoData = bInstDemoData; -} - -const bool CampoWizard::GetInstDemoData() const -{ - return _bInstDemoData; -} - -void CampoWizard::SetInstDemoVersion(const bool bInstDemoVersion) -{ - _bInstDemoVersion = bInstDemoVersion; -} - -const bool CampoWizard::GetInstDemoVersion() const -{ - return _bInstDemoVersion; -} - -void CampoWizard::SetDesktopShortcut(const bool bDesktopShortcut) -{ - _bDesktopShortcut = bDesktopShortcut; -} - -const bool CampoWizard::GetDesktopShortcut() const -{ - return _bDesktopShortcut; -} -//...fine litania metodi di passaggio valori tra le finestre - - - -CampoWizard::CampoWizard(wxWindow* pParent) -{ - //resettatore dei booleans (che senno' prendono valore casuale ad ogni esecuzione) - _bInstDemoData = false; //installa dati dimostrativi - _bInstDemoVersion = false; //installa versione demo - _bInstUseAuth = false; //installa/usa server authoriz - _bInstUseDict = false; //installa/usa server diction - _bDesktopShortcut = false; //creazione link sul desktop - - wxBitmap bitmap; - wxString strName = wxT("logo.gif"); - bitmap.LoadFile(strName, wxBITMAP_TYPE_GIF); - - Create(pParent, wxID_ANY, APPNAME, bitmap); - - m_pPage[0] = new CampoWizardPage1(this); //benvenuto con logo - m_pPage[1] = new CampoWizardPage2(this); //licenza - m_pPage[2] = new CampoWizardPage3(this); //scelta aggiornamento/tipo installazione - m_pPage[3] = new CampoWizardPage4(this); //test ed installazione chiavi - m_pPage[4] = new CampoWizardPage5(this); //selezione tipo installazione - m_pPage[5] = new CampoWizardPage6(this); //installazione standard - m_pPage[6] = new CampoWizardPage7(this); //installazione server - m_pPage[7] = new CampoWizardPage8(this); //installazione client - m_pPage[8] = new CampoWizardPage9(this); //creazione icona sul desktop e in start/programmi/campo - m_pPage[9] = new CampoWizardPage10(this); //riassuntino installazione - - - for (int p = 1; p < m_nPages; p++) - wxWizardPageSimple::Chain(m_pPage[p-1], m_pPage[p]); - - GetPageAreaSizer()->Add(m_pPage[0]); - - //bottoni di navigazione - Set(wxID_FORWARD, "Avanti"); - Set(wxID_BACKWARD, "Indietro"); - Set(wxID_CANCEL, "Annulla"); -} - +#include "key.h" +#include "wizard.h" +#include "utils.h" /////////////////////////////////////////////////////////// // CampoFrame diff --git a/setup/setupkey.cpp b/setup/key.cpp similarity index 96% rename from setup/setupkey.cpp rename to setup/key.cpp index da4f8e4da..6827a78c4 100755 --- a/setup/setupkey.cpp +++ b/setup/key.cpp @@ -1,7 +1,8 @@ #include "wxinc.h" #include"); str += strTitle; str += wxT("
"); + str += wxT("Questo programma vi guiderà passo a passo nell'installazione / aggiornamento del software.
"); + strBody += wxT("Leggere attentamente le istruzioni che saranno visualizzate nelle finestre di questo programma di installazione!
"); + strBody += wxT("Prima di proseguire con l'installazione / aggiornamento assicurarsi di avere effettuato il login a Windows con un utente di tipo 'Amministratore' di sistema.
"); + strBody += wxT("In caso si desideri aggiornare una postazione tipo server di APPNAME su cui sia attivo il gestore dei servizi di APPNAME, arrestare prima tale gestore dei servizi.
"); + SetHTMLText(strTitle, strBody); +} + + +/**********************************************************************************************************/ +// 2 Pagina con Accetta / Rifiuta la licenza +//*********************************************************************************************************/ +class CampoWizardPage2 : public CampoWizardPage +{ +protected: + virtual bool ForwardValidate(); + +public: + CampoWizardPage2(wxWizard* parent); +}; + +bool CampoWizardPage2::ForwardValidate() +{ + if (GetSelection(201) == 1) + return ErrorBox("Impossibile proseguire se non si accetta la licenza sul software!!"); + + return true; +} + +CampoWizardPage2::CampoWizardPage2(wxWizard* parent) : CampoWizardPage(parent) +{ + SetHTMLPage("licenza.htm"); + + //radiobutton Accetta / Rifiuta + wxArrayString asAccRef; + asAccRef.Add("Accetta"); + asAccRef.Add("Rifiuta"); + wxRadioBox* radio_box = new wxRadioBox(this, 201, "Selezionare 'Accetta' per proseguire con l'installazione, 'Rifiuta' per terminare l'installazione", wxDefaultPosition, + wxDefaultSize, asAccRef, 0, wxRA_SPECIFY_COLS); + + radio_box->SetSelection(1); + GetSizer()->Add(radio_box); +} + + +/**********************************************************************************************************/ +/* 3 Pagina con la scelta di Aggiornamento / Tipo Installazione */ +/**********************************************************************************************************/ +class CampoWizardPage3 : public CampoWizardPage +{ + wxRadioBox* m_pRadioBox; + +protected: + virtual bool ForwardValidate(); + bool LocalDongleTest() const; + +public: + CampoWizardPage3(wxWizard* parent); +}; + +//metodo per cercare se c'e' una chiave fisicamente collegata (serve per abilitare l'installazione demo) +bool CampoWizardPage3::LocalDongleTest() const +{ + unsigned short serno = 0xFFFF; + int yearKey = 0; + + serno = HardlockLogin(yearKey); + if (serno == 0xFFFF) + serno = EutronLogin(yearKey); + + return serno != 0xFFFF && yearKey > 0; +} + + +bool CampoWizardPage3::ForwardValidate() +{ + const int iLastRow = m_pRadioBox->GetRowCount() - 1; + const int iSelectedRow = m_pRadioBox->GetSelection(); + wxString strPrgPath; + wxString strStudy; + wxString strSrvAuth; + wxString strSrvDict; + + //analizza il campo.ini dell'installazione selezionata (si usa < perche' l'ultima row e' la nuova installazione!) + if (iSelectedRow < iLastRow) + { + strPrgPath = m_pRadioBox->GetStringSelection(); + CampoIniFile CampoIni(strPrgPath + "/campo.ini", "Main"); + + const bool bTestDatabase = CampoIni.GetBool("TestDatabase"); + + //non si puo' aggiornare un client da cd!! va fatto dal programma + const bool bTestPrograms = CampoIni.GetBool("TestPrograms"); + if (bTestPrograms) + { + CampoIniFile InstallIni(strPrgPath + "/install.ini", "Main"); + wxString strDiskPath = InstallIni.Get("DiskPath"); + wxString strMsg = "Per aggiornare questa stazione di lavoro e' necessario aggiornare prima il Server di "; + strMsg << APPNAME << " in " << strDiskPath << " !\n"; + strMsg << "Questa stazione di lavoro si aggiornera' automaticamente alla prima esecuzione del programma " << APPNAME; + return ErrorBox(strMsg); + } + + strStudy = CampoIni.Get("Study"); + CampoIniFile CampoServerIni(strPrgPath + "/campo.ini", "Server"); + strSrvAuth = CampoServerIni.Get("Dongle"); + strSrvDict = CampoServerIni.Get("Dictionary"); + + if (!CheckDataDir(strStudy)) + return ErrorBox("La cartella indicata come area dati NON e' valida!\nInterrompere l'installazione e selezionare un'area dati valida\ncon il programma APPNAME"); + GetWizard().SetDataPath(strStudy); + + if (!strSrvAuth.IsEmpty()) + GetWizard().SetSrvAuth(strSrvAuth); + if (!strSrvDict.IsEmpty()) + GetWizard().SetSrvDict(strSrvDict); + + //setta alla pagina riassuntiva i valori della pagina attuale... + GetWizard().SetDestinationPath(strPrgPath); //va alla pagina riassuntiva + GetWizard().SetPrgLocPath(strPrgPath); //questo serve solo per la creazione del link sul desktop! + GetWizard().SetInstallationType(3); //e' un aggiornamento!! + GetWizard().SetDesktopShortcut(false); //e' sempre un aggiornamento! + } + else //resetta il path in caso si scelga nuova installazione dopo aver scelto aggiornamento + { + //continuiamo a sconsigliare l'installazione DEMO, ma ognuno fa come crede... + if (GetBool(302)) + { + const wxString strPrgDemoPath = "c:/campodemo"; + wxDir dirPrgDemoPath(strPrgDemoPath); + if (dirPrgDemoPath.Exists(strPrgDemoPath) && (dirPrgDemoPath.HasFiles() || dirPrgDemoPath.HasSubDirs())) + return ErrorBox("Impossibile installare la versione DEMO!\nLa cartella c:/campodemo NON e' vuota!"); + + GetWizard().SetInstDemoVersion(true); + } + + //questo lo fa in ogni caso! + GetWizard().SetDestinationPath(""); + GetWizard().SetDesktopShortcut(true); + + } + + return true; +} + +CampoWizardPage3::CampoWizardPage3(wxWizard* parent) : CampoWizardPage(parent) +{ + //deve cercare campo.stp + CampoIniFile campo_stp("C:\\campo.stp", ""); + wxString group; + long index; + const wxString program = "Program"; + wxArrayString asGroups, asCampi; + + //cerca se esiste campo.stp;se lo trova cerca quelle che sono le installazioni valide;se ne trova.. + //..le aggiunge ad un array di stringhe (asCampi) da cui genera un radiobutton di scelte + for (bool ok = campo_stp.GetFirstGroup(group, index); ok; ok = campo_stp.GetNextGroup(group, index)) + { + asGroups.Add(group); + } + int prechecked = -1; + for (unsigned int i = 0; i < asGroups.GetCount(); i++) + { + CampoIniFile campo_stp("C:\\campo.stp", asGroups[i]); + wxString path = campo_stp.Get(program); + + //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"; + wxString campo_aut = path; + campo_aut << "/campo.aut"; + if (wxFileName::FileExists(campo_ini) && wxFileName::FileExists(campo_aut)) + { + asCampi.Add(path); + //cerca l'eventuale installazione server se ci sono piu' installazioni sulla stessa macchina + if (prechecked < 0) + { + CampoIniFile ini(campo_ini, "Main"); + if (ini.GetBool("TestDatabase") && !ini.GetBool("TestPrograms")) + prechecked = i; + } + } + } + + wxString strTitle, strBody; + //se non ci sono delle installazioni da aggiornare propone solo installazioni.. + if (asCampi.IsEmpty()) + { + strTitle += wxT("Scelta Installazione"); + strBody += wxT("E' possibile INSTALLARE APPNAME in un nuovo direttorio.
"); + + asCampi.Add("Nuova installazione"); //voce di nuova installazione! + m_pRadioBox = new wxRadioBox(this, 301, "Installazione del software", wxDefaultPosition, + wxDefaultSize, asCampi, 0, wxRA_SPECIFY_ROWS); + } + //..senno' propone di aggiornare + else + { + strTitle += wxT("Scelta Aggiornamento / Installazione"); + strBody += wxT("E' possibile AGGIORNARE (scelta consigliata) una installazione di APPNAME gia' presente oppure INSTALLARE in un nuovo direttorio.
"); + strBody += wxT("Selezionare l'opzione desiderata nel riquadro sottostante. In caso di piu' di una installazione "); + strBody += wxT("presente sara' preselezionata la eventuale installazione di tipo Server, in quanto deve essere aggiornata per prima! "); + strBody += wxT("
In questo caso procedere all'aggiornamento di tale installazione Server e aggiornare successivamente le postazioni client "); + strBody += wxT("lanciando il programma APPNAME su di esse
"); + + //radiobutton con le scelte aggiornamento + asCampi.Add("Nuova installazione"); + m_pRadioBox = new wxRadioBox(this, 301, "Selezionare l'installazione da aggiornare (consigliato) o Nuova installazione", wxDefaultPosition, + wxDefaultSize, asCampi, 0, wxRA_SPECIFY_ROWS); + if (prechecked > 0) + m_pRadioBox->SetSelection(prechecked); + } + + strBody += wxT("Prima di proseguire accertarsi che non vi sia alcuna sessione di APPNAME attiva! "); + strBody += wxT("Terminare quindi le eventuali sessioni di APPNAME attive e proseguire.
"); + + GetSizer()->Add(m_pRadioBox); + + //se NON ci sono installazioni gia' presenti e NON c'e' alcuna chiave collegata -> puo' installare la DEMO + if (asCampi.GetCount() == 1 && !LocalDongleTest()) + { + //checkbox per installare la DEMO (non fatelo, vi prego!!!) + wxCheckBox* chDemoPrg = new wxCheckBox(this, 302, wxT("Installare la versione DEMO")); + chDemoPrg->SetValue(false); + GetSizer()->AddSpacer(16); + GetSizer()->Add(chDemoPrg); + + strBody += wxT("E' possibile anche installare la versione DEMO di APPNAME. Questa versione e' a scopo puramente "); + strBody += wxT("dimostrativo e NON va di norma installata! Non e' utilizzabile come la versione normale in quanto limitata nel "); + strBody += wxT("numero e nella data delle registrazioni e nel tempo di uso giornaliero (max 2 ore). La cartella di installazione della "); + strBody += wxT("versione dimostrativa e' C:/campodemo e dispone di un'area dati parzialmente precompilata.
"); + } + + SetHTMLText(strTitle, strBody); +} + + +/**********************************************************************************************************/ +/* 4 Pagina con la gestione della chiave di protezione */ +/**********************************************************************************************************/ +class CampoWizardPage4 : public CampoWizardPage +{ + +protected: + DECLARE_EVENT_TABLE(); + void OnHLPick(wxCommandEvent& e); + void OnEUPick(wxCommandEvent& e); + void OnSRPick(wxCommandEvent& e); + + virtual bool ForwardValidate(); + virtual bool TransferDataToWindow(); + + int DongleTest(); + wxString DecodeString(const wxString& data); + int VersionYear(); + void BuildKey(char* key); + +public: + CampoWizardPage4(wxWizard* parent); +}; + +//metodi per la gestione dei bottoni per l'esecuzione dei programmi di installazione delle chiavi +BEGIN_EVENT_TABLE(CampoWizardPage4, CampoWizardPage) + EVT_BUTTON(401, OnHLPick) + EVT_BUTTON(402, OnEUPick) + EVT_BUTTON(403, OnSRPick) +END_EVENT_TABLE() + +void CampoWizardPage4::OnHLPick(wxCommandEvent& e) +{ + wxString path("../../chiavi/hardlock/hldrv32.exe"); + wxExecute(path, wxEXEC_SYNC); +} + +void CampoWizardPage4::OnEUPick(wxCommandEvent& e) +{ + wxString path("../../chiavi/eutron/sdi.exe"); + wxExecute(path, wxEXEC_SYNC); +} + +void CampoWizardPage4::OnSRPick(wxCommandEvent& e) +{ + static bool bSemaforo = false; + if (!bSemaforo) + { + bSemaforo = true; + wxBusyCursor hourglass; + wxString strSrvName; + int year = 0; + unsigned short serno = ServerLogin(year, strSrvName); + if (!strSrvName.IsEmpty()) + Set(404, strSrvName); + bSemaforo = false; + } +} + +bool CampoWizardPage4::ForwardValidate() +{ + //per poter proseguire deve aver trovato una chiave o un server! + + GetWizard().SetSrvAuth(Get(404)); + int nDongleType = DongleTest(); + if (nDongleType == 0) + return ErrorBox("Per proseguire e' NECESSARIO installare una chiave locale o collegarsi ad una chiave di rete!"); + + return true; +} + +bool CampoWizardPage4::TransferDataToWindow() +{ + FindWindowById(401)->Disable(); + FindWindowById(402)->Disable(); + FindWindowById(403)->Disable(); + FindWindowById(404)->Disable(); + + //controlla preventivamente se la chiave c'e' ed eventualmente quale e' (hardlock,eutron,server di chiavi) + const int nDongleType = DongleTest(); + GetWizard().SetDongleType(nDongleType); + + wxString strTitle = wxT("Controllo della chiave hardware di protezione"); + wxString strBody = wxT("La versione commerciale del software richiede l'installazione e la presenza della chiave hardware di protezione
"); + switch (nDongleType) + { + case 1: + strBody += wxT("E' stata rilevata una chiave tipo Hardlock:
"); + strBody += wxT(""); + strBody += wxT("Si puo' procedere con l'installazione /aggiornamento del software APPNAME. Premere il pulsante \"Avanti\".
"); + break; + case 2: + strBody += wxT("E' stata rilevata una chiave tipo Eutron:
"); + strBody += wxT(""); + strBody += wxT("Si puo' procedere con l'installazione /aggiornamento del software APPNAME. Premere il pulsante \"Avanti\".
"); + break; + case 3: + strBody += wxT("E' stato rilevata una chiave remota condivisa in rete con il servizio di gestione autorizzazioni:
"); + strBody += wxT(""); + strBody += wxT("Si puo' procedere con l'installazione /aggiornamento del software APPNAME. Premere il pulsante \"Avanti\".
"); + Set(404, GetWizard().GetSrvAuth()); + break; + + default: + strBody += wxT("Non e' stata rilevata alcuna chiave hardware installata sul computer!
"); + strBody += wxT("Per procedere all'installazione della chiave hardware, collegarla al computer e premere il bottone corrispondente alla tipologia della chiave stessa per installarne i driver.
"); + strBody += wxT("Se si utilizza una chiave remota collegata ad un altro computer e condivisa in rete attraverso il servizio gestione di autorizzazioni "); + strBody += wxT("premere il bottone Cerca per attivare la ricerca automatica della chiave remota. Qualora tale ricerca fallisse digitare il nome del computer "); + strBody += wxT("(o l'indirizzo IP) cui e' collegata la chiave di rete e su cui e' installato e attivo il gestore di autorizzazioni. "); + FindWindowById(401)->Enable(); + FindWindowById(402)->Enable(); + FindWindowById(403)->Enable(); + FindWindowById(404)->Enable(); + break; + } + + SetHTMLText(strTitle, strBody); + + return true; +} + +void CampoWizardPage4::BuildKey(char* key) +{ + for (int i = 0; i < 8; i++) + key[i] = 'A'+ rand()%26; +} + +wxString CampoWizardPage4::DecodeString(const wxString& data) +{ + char key[8] = ""; + BuildKey(key); + + char tmp[256]; + int i; + for (i = 0; data[i]; i++) + tmp[i] = data[i] - (i < 8 ? key[i] : tmp[i - 8]); + tmp[i] = '\0'; + return tmp; +} + +int CampoWizardPage4::VersionYear() +{ + char ver[32]; + GetPrivateProfileString("ba", "Versione", "", ver, sizeof(ver), "../../program/install.ini"); + ver[4] = '\0'; + return atoi(ver); +} + +int CampoWizardPage4::DongleTest() +{ + int dongle_type = 0; + int yearKey = 0; + + unsigned int serno = 0xFFFF; + + wxString strSrvName = GetWizard().GetSrvAuth(); //nome del server di autorizzazioni (se c'e') + if (!strSrvName.IsEmpty()) + { + serno = ServerLogin(yearKey, strSrvName); + if (serno != 0xFFFF) + dongle_type = 3; //chiave remota + } + + if (serno == 0xFFFF) + { + serno = HardlockLogin(yearKey); + if (serno == 0xFFFF) + { + serno = EutronLogin(yearKey); + if (serno != 0xFFFF) + dongle_type = 2; //chiave eutron + } + else + dongle_type = 1; //chiave hardlock + } + + if (serno == 0) // Chiave di sviluppo + return dongle_type; + if (serno == 0xFFFF) // Chiave inesistente o invisibile = Prima installazione o demo + return dongle_type; + + const int verYear = VersionYear(); + if (yearKey < verYear) // Chiave già programmata con assistenza pagata + { + bool ok = false; + wxFileInputStream file("../dninst.zip"); + if (file.IsOk()) + { + wxTextInputStream keys(file); + wxString line = keys.ReadLine(); + srand(883); + const int ass_year = atoi(DecodeString(line)); + if (ass_year > yearKey) // Non devo abbassare l'anno di assistenza! + { + srand(ass_year); + while (!file.Eof()) + { + line = keys.ReadLine(); + line = DecodeString(line); + unsigned int sn = (unsigned int)atol(line); + if (sn == serno || line[0] == '*') + { + ok = true; + break; + } + } + if (ok) + { + const int n = ass_year%10; + const int y = (ass_year / 1000) * 1000 + (ass_year%1000) /10; + line.Printf("Il contratto di manutenzione %d/%d verrà attivato automaticamente\ndurante l'installazione del software", y, n); + WarningBox(line); + } + else + { + line.Printf("È necessario contattare l'assistenza tecnica\n" + "per l'abilitazione del contratto di manutenzione %d", verYear); + WarningBox(line); + } + } + } + else + { + ErrorBox("Impossibile verificare il contratto di manutenzione"); + } + } + return dongle_type; +} + +CampoWizardPage4::CampoWizardPage4(wxWizard* parent) : CampoWizardPage(parent) +{ + //procedura per la costruzione dei bottoni e delle immagini per l'installazione dei driver di chiave + //"griglia" contenitrice degli oggetti + + //griglia per sistemare i campi + wxGridBagSizer* gbsButtSizer = new wxGridBagSizer(VGAP, HGAP); + GetSizer()->Add(gbsButtSizer); + + //prima riga della griglia + //Hardlock label + AddLabel(gbsButtSizer, "Installa chiave locale di tipo Hardlock", 0, 0); + //Hardlock image + wxBitmap bmp_HL("../servers/hardlock.gif", wxBITMAP_TYPE_GIF); + wxStaticBitmap* s_bmp_HL = new wxStaticBitmap(this, wxID_ANY, bmp_HL); + gbsButtSizer->Add(s_bmp_HL, wxGBPosition(0, 1)); + //bottone Hardlock + wxButton* bHlButton = new wxButton(this, 401, wxT("Hardlock"), wxDefaultPosition, wxSize(64, -1)); + gbsButtSizer->Add(bHlButton, wxGBPosition(0, 2), wxDefaultSpan, wxALIGN_CENTER_VERTICAL); + + //seconda riga della griglia + //Eutron label + AddLabel(gbsButtSizer, "Installa chiave locale di tipo Eutron", 1, 0); + //Eutron image + wxBitmap bmp_EU("../servers/eutron.gif", wxBITMAP_TYPE_GIF); + wxStaticBitmap* s_bmp_EU = new wxStaticBitmap(this, wxID_ANY, bmp_EU); + gbsButtSizer->Add(s_bmp_EU, wxGBPosition(1, 1)); + //bottone Eutron + wxButton* bEuButton = new wxButton(this, 402, wxT("Eutron"), wxDefaultPosition, wxSize(64, -1)); + gbsButtSizer->Add(bEuButton, wxGBPosition(1, 2), wxDefaultSpan, wxALIGN_CENTER_VERTICAL); + + //terza riga della griglia + //Server label + AddLabel(gbsButtSizer, "Nome o indirizzo IP del server di autorizzazioni", 2, 0); + //nome Server + wxTextCtrl* tcSrvName = new wxTextCtrl(this, 404, "", wxDefaultPosition, wxSize(128,-1)); + gbsButtSizer->Add(tcSrvName, wxGBPosition(2, 1)); + //bottone Eutron + wxButton* bSrvButton = new wxButton(this, 403, wxT("Cerca"), wxDefaultPosition, wxSize(64, -1)); + gbsButtSizer->Add(bSrvButton, wxGBPosition(2, 2), wxDefaultSpan, wxALIGN_CENTER_VERTICAL); + +} + +/**********************************************************************************************************/ +// 5 Scelta tipo installazione +/**********************************************************************************************************/ +class CampoWizardPage5 : public CampoWizardPage +{ + wxRadioBox* m_pRadioBox; + +protected: + virtual bool ForwardValidate(); + +public: + CampoWizardPage5(wxWizard* parent); +}; + +bool CampoWizardPage5::ForwardValidate() +{ + const unsigned int type = m_pRadioBox->GetSelection(); + GetWizard().SetInstallationType(type); + return true; +} + +CampoWizardPage5::CampoWizardPage5(wxWizard* parent) : CampoWizardPage(parent) +{ + //Istruzioni per l'uso! + wxString strTitle = wxT("Scelta del tipo di installazione"); + wxString strBody = wxT("
Standard (scelta consigliata). Installazione su postazione singola, con programmi e dati sul disco locale del computer
"); + strBody += wxT("Installazioni di rete (per utenti esperti)
"); + strBody += wxT("Server: Computer in rete sul quale sono presenti una copia, utilizzata o meno, dei programmi (server programmi) e l’area dati (server dati). "); + strBody += wxT("In una installazione in rete di APPNAME e' necessario sia presente un unica postazione di tipo server, "); + strBody += wxT("e deve essere installata per prima!
"); + strBody += wxT("Client: Computer in rete sul quale e' presente una copia dei programmi ma non l'area dati. "); + strBody += wxT("I client possono essere installati solo dopo l'installazione del server!
"); + SetHTMLText(strTitle, strBody); + + //radiobutton con i tipi di installazione + wxArrayString asInstType; + asInstType.Add("Standard"); + asInstType.Add("Server"); + asInstType.Add("Client"); + + m_pRadioBox = new wxRadioBox(this, 501, "Selezionare il tipo di installazione", wxDefaultPosition, + wxDefaultSize, asInstType, 0, wxRA_SPECIFY_ROWS); + //setta il default a Standard + m_pRadioBox->SetSelection(0); + GetSizer()->Add(m_pRadioBox); + +} + + +/**********************************************************************************************************/ +// 6 Installazione standard +/**********************************************************************************************************/ +class CampoWizardPage6 : public CampoWizardPage +{ +protected: + DECLARE_EVENT_TABLE(); + void OnDirPick(wxCommandEvent& e); + virtual bool ForwardValidate(); + +public: + CampoWizardPage6(wxWizard* parent); +}; + +BEGIN_EVENT_TABLE(CampoWizardPage6, CampoWizardPage) + EVT_BUTTON(602, OnDirPick) + EVT_BUTTON(604, OnDirPick) +END_EVENT_TABLE() + +void CampoWizardPage6::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); + } +} + +//metodo per il controllo dell'area dati;se la directory indicata non e' vuota non puoi usarla ne' crearla +bool CampoWizardPage6::ForwardValidate() +{ + //controllo esistenza directory vuota per i programmi in locale + const wxString strPrgLocPath = Get(601); + wxDir dirPrgLocPath(strPrgLocPath); + if (dirPrgLocPath.Exists(Get(601)) && (dirPrgLocPath.HasFiles() || dirPrgLocPath.HasSubDirs())) + return ErrorBox("La cartella selezionata per l'installazione dei programmi NON e' valida! Selezionarne un'altra!"); + + const wxString strDataPath = Get(603); + wxDir dirDataPath(strDataPath); + if (dirDataPath.Exists(strDataPath) && (dirDataPath.HasFiles() || dirDataPath.HasSubDirs())) + return ErrorBox("La cartella indicata per la creazione dell'area dati non e' vuota! Selezionarne un'altra!"); + + //setta alla pagina riassuntiva i valori della pagina attuale... + GetWizard().SetPrgLocPath(strPrgLocPath); + GetWizard().SetDataPath(strDataPath); + + //...e pure quegli stupidi datidemo che nessuno ha mai installato!! + const bool bInstDemoData = GetBool(605); + GetWizard().SetInstDemoData(bInstDemoData); + + return true; +} + +CampoWizardPage6::CampoWizardPage6(wxWizard* parent) : CampoWizardPage(parent) +{ + wxString strTitle = wxT("Installazione di tipo Standard"); + 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:\\APPNAME
"); + strBody += wxT("Digitare nel campo 'Cartella Dati' il percorso completo della cartella dove si desidera installare l'area dati. "); + strBody += wxT("Il percorso di default (consigliato) e' C:\\APPNAME\\dati
"); + strBody += wxT("Dati dimostrativi: area dati precompilata per installazioni di tipo dimostrativo del funzionamento del software. "); + strBody += wxT("NON vanno caricati nel caso di una normale installazione!
"); + SetHTMLText(strTitle, strBody); + + //griglia per sistemare i campi + wxGridBagSizer* gbsSizer = new wxGridBagSizer(VGAP, HGAP); + GetSizer()->Add(gbsSizer); + + //prima riga della griglia + //prompt + AddLabel(gbsSizer, "Cartella programmi", 0, 0); + //campo testo + wxString strPath; + strPath = "C:\\"; + strPath += APPNAME; + wxTextCtrl* tcPrgPath = new wxTextCtrl(this, 601, strPath, wxDefaultPosition, wxSize(320,-1)); + gbsSizer->Add(tcPrgPath, wxGBPosition(0, 1)); + //bottone 'sfoglia' + wxButton* bPrgButton = new wxButton(this, 602, wxT("Sfoglia"), wxDefaultPosition, wxSize(48, -1)); + gbsSizer->Add(bPrgButton, wxGBPosition(0, 2)); + + //seconda riga della griglia + //prompt + AddLabel(gbsSizer, "Cartella dati", 1, 0); + //campo testo + strPath += "/dati"; + wxTextCtrl* tcDataPath = new wxTextCtrl(this, 603, strPath, wxDefaultPosition, wxSize(320,-1)); + gbsSizer->Add(tcDataPath, wxGBPosition(1, 1)); + //bottone 'sfoglia' + wxButton* bDataButton = new wxButton(this, 604, wxT("Sfoglia"), wxDefaultPosition, wxSize(48, -1)); + gbsSizer->Add(bDataButton, wxGBPosition(1, 2)); + + //terza riga della griglia + wxCheckBox* chDataDemo = new wxCheckBox(this, 605, wxT("Carica i dati dimostrativi")); + chDataDemo->SetValue(false); + gbsSizer->Add(chDataDemo, wxGBPosition(2, 1)); +} + +/**********************************************************************************************************/ +// 7 Installazione server +/**********************************************************************************************************/ +class CampoWizardPage7 : public CampoWizardPage +{ + wxRadioBox* m_pRadioBox; + +protected: + DECLARE_EVENT_TABLE(); + virtual bool ForwardValidate(); + void OnDirPick(wxCommandEvent& e); + void OnSrvClick(wxCommandEvent& e); + +public: + CampoWizardPage7(wxWizard* parent); +}; + +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) +{ + //nome del server + wxWindow* pWnd = FindWindowById(e.GetId() + 1); + if (pWnd) + pWnd->Enable(e.IsChecked()); + //tipo installazione server + pWnd = FindWindowById(709); + if (pWnd) + pWnd->Enable(GetBool(705) || GetBool(707)); +} + +bool CampoWizardPage7::ForwardValidate() +{ + //controllo esistenza directory vuota per i programmi in locale + const wxString strPrgLocPath = Get(701); + wxDir dirPrgLocPath(strPrgLocPath); + if (dirPrgLocPath.Exists(strPrgLocPath) && (dirPrgLocPath.HasFiles() || dirPrgLocPath.HasSubDirs())) + return ErrorBox("La cartella selezionata per l'installazione dei programmi NON e' valida! Selezionarne un'altra!"); + + //controllo della directory dell'area dati: deve essere nuova o vuota affinche' possa essere utilizzata!! + const wxString strDataPath = Get(703); + wxDir dirDataPath(strDataPath); + if (dirDataPath.Exists(strDataPath) && (dirDataPath.HasFiles() || dirDataPath.HasSubDirs())) + return ErrorBox("La cartella indicata per la creazione dell'area dati non e' vuota! Selezionarne un'altra!"); + + //setta alla pagina riassuntiva i valori della pagina attuale... + GetWizard().SetPrgLocPath(strPrgLocPath); + GetWizard().SetDataPath(strDataPath); + //...compresi eventuali stupidi servers! + const bool bInstAuth = GetBool(705); + if (bInstAuth) + { + GetWizard().SetInstUseAuth(bInstAuth); + const wxString strSrvAuth = Get(706); + if (strSrvAuth.IsEmpty()) + return ErrorBox("Specificare il server gestore delle autorizzazioni!"); + GetWizard().SetSrvAuth(strSrvAuth); + } + else + GetWizard().SetSrvAuth(""); + + const bool bInstDict = GetBool(707); + if (bInstDict) + { + GetWizard().SetInstUseDict(bInstDict); + const wxString strSrvDict = Get(708); + if (strSrvDict.IsEmpty()) + return ErrorBox("Specificare il server gestore dei dizionari!"); + GetWizard().SetSrvDict(strSrvDict); + } + else + GetWizard().SetSrvDict(""); + + //..e loro modalita' di esecuzione + if (bInstAuth || bInstDict) + { + GetWizard().SetSrvAutostartMode(m_pRadioBox->GetSelection()); + } + else + GetWizard().SetSrvAutostartMode(-1); + + return true; +} + +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 consigliato e' C:\\APPNAME
"); + 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:\\APPNAME\\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 APPNAME. "); + 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."); + strBody += wxT("Viene di default proposto il computer su cui si sta eseguendo l'installazione di APPNAME (localhost).
"); + strBody += wxT("Gestore dizionari: e' il software che permette di utilizzare APPNAME in lingue diverse dall'italiano. "); + strBody += wxT("Per l'installazione di questo software viene di default proposto il computer su cui si sta eseguendo l'installazione di APPNAME (localhost).
"); + strBody += wxT("Modalita' di esecuzione programmi di gestione
");
+ strBody += wxT("Come servizi: i programmi di gestione vengono eseguiti come servizi di Windows; questa e' la modalita' consigliata ed e' obbligatoria in caso di installazione con Windows 2003
");
+ strBody += wxT("Nel menu esecuzione automatica: i programmi di gestione vengono eseguiti automaticamente al primo accesso di un utente al server di APPNAME; usare questa modalita' solo nell'impossibilita' di utilizzare la precedente
Digitare nel campo 'Cartella locale programma' il percorso completo della cartella dove si desidera installare il programma. "); + strBody += wxT("Il percorso consigliato e' C:\\APPNAME
"); + 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.
"); + strBody += wxT("Gestore dizionari: e' il computer gestore dei dizionari di APPNAME in lingue diverse dall'italiano. Generalmente e' il computer agente da server di APPNAME in rete. "); + strBody += wxT("Premere il bottone Cerca per attivare la ricerca automatica di tale computer. Qualora tale ricerca fallisse digitare il nome del computer gestore dei dizionari
"); + + SetHTMLText(strTitle, strBody); + + //griglia per sistemare i campi + wxGridBagSizer* gbsSizer = new wxGridBagSizer(VGAP, HGAP); + GetSizer()->Add(gbsSizer); + + //prima riga della griglia + //prompt + AddLabel(gbsSizer, "Cartella locale programma", 0, 0); + //campo testo + wxString strPath; + strPath = "C:\\"; + strPath += APPNAME; + wxTextCtrl* tcDestPrgPath = new wxTextCtrl(this, 801, strPath, wxDefaultPosition, wxSize(256,-1)); + gbsSizer->Add(tcDestPrgPath, wxGBPosition(0, 1)); + //bottone 'sfoglia' + wxButton* bDestPrgButton = new wxButton(this, 802, wxT("Sfoglia"), wxDefaultPosition, wxSize(48, -1)); + gbsSizer->Add(bDestPrgButton, wxGBPosition(0, 2)); + + //seconda riga della griglia + //prompt + AddLabel(gbsSizer, "Cartella remota origine programmi", 1, 0); + //campo testo + strPath = "Z:\\"; + strPath += APPNAME; + wxTextCtrl* tcSrcPrgPath = new wxTextCtrl(this, 803, strPath, wxDefaultPosition, wxSize(256,-1)); + gbsSizer->Add(tcSrcPrgPath, wxGBPosition(1, 1)); + //bottone 'sfoglia' + wxButton* bSrcPrgButton = new wxButton(this, 804, wxT("Sfoglia"), wxDefaultPosition, wxSize(48, -1)); + gbsSizer->Add(bSrcPrgButton, wxGBPosition(1, 2)); + + //terza riga della griglia + //prompt + AddLabel(gbsSizer, "Cartella remota dati da utilizzare", 2, 0); + //campo testo + strPath += "/dati"; + wxTextCtrl* tcDataPath = new wxTextCtrl(this, 805, strPath, wxDefaultPosition, wxSize(256,-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)); + + //terza riga della griglia + //Server dizionari label + AddLabel(gbsSizer, "Nome o indirizzo IP del server dei dizionari", 3, 0); + //nome Server dizionari + wxTextCtrl* tcSrvName = new wxTextCtrl(this, 807, "", wxDefaultPosition, wxSize(256,-1)); + gbsSizer->Add(tcSrvName, wxGBPosition(3, 1)); + //bottone Cerca + wxButton* bSrvButton = new wxButton(this, 808, wxT("Cerca"), wxDefaultPosition, wxSize(48, -1)); + gbsSizer->Add(bSrvButton, wxGBPosition(3, 2), wxDefaultSpan, wxALIGN_CENTER_VERTICAL); + +} + + +/**********************************************************************************************************/ +// 9 pagina con la creazione icona sul desktop e lanciatore del lurch +/**********************************************************************************************************/ +class CampoWizardPage9 : public CampoWizardPage +{ +protected: + virtual bool TransferDataToWindow(); + virtual bool ForwardValidate(); + +public: + CampoWizardPage9(wxWizard* parent); +}; + +bool CampoWizardPage9::TransferDataToWindow() +{ + return Set(901, GetWizard().GetDesktopShortcut()); +} + +bool CampoWizardPage9::ForwardValidate() +{ + const bool bDesktopShortcut = GetBool(901); + GetWizard().SetDesktopShortcut(bDesktopShortcut); + return true; +} + +CampoWizardPage9::CampoWizardPage9(wxWizard* parent) : CampoWizardPage(parent) +{ + wxString strTitle = wxT("Collegamenti"); + wxString strBody; + strBody += wxT("E' possibile creare l'icona di APPNAME sul desktop
"); + + SetHTMLText(strTitle, strBody); + + wxCheckBox* pIcon = new wxCheckBox(this, 901, wxT("Creare l'icona sul desktop")); + GetSizer()->Add(pIcon, 0, wxALL, 0); + + GetSizer()->AddSpacer(5); + + //wxCheckBox* pLink = new wxCheckBox(this, 1002, wxT("Associare i file .caz al programma")); + //pLink->SetValue(true); + //GetSizer()->Add(pLink, 0, wxALL, 0); +} + + +/**********************************************************************************************************/ +// 10 pagina con la selezione di destinazione +/**********************************************************************************************************/ +class CampoWizardPage10 : public CampoWizardPage +{ + unsigned int _uInstallType; + wxString _strInstallType; + wxString _strPrgLocPath; + wxString _strPrgNetPath; + wxString _strDataPath; + wxString _strSrvAuth; + wxString _strSrvDict; + unsigned int _iSrvAutostartMode; + bool _bInstDemoData; + bool _bInstDemoVersion; + bool _bDesktopShortcut; + +protected: + virtual bool TransferDataToWindow(); + +public: + CampoWizardPage10(wxWizard* parent); +}; + +bool CampoWizardPage10::TransferDataToWindow() +{ + CampoWizard& cw = GetWizard(); + + _uInstallType = cw.GetInstallationType(); + switch (_uInstallType) + { + case 1: //server + _strInstallType = "Server"; + _strPrgLocPath = cw.GetPrgLocPath(); + _strDataPath = cw.GetDataPath(); + _strSrvAuth = cw.GetSrvAuth(); + _strSrvDict = cw.GetSrvDict(); + if (!_strSrvAuth.IsEmpty() || !_strSrvDict.IsEmpty()) + _iSrvAutostartMode = cw.GetSrvAutostartMode(); + break; + case 2: //client + _strInstallType = "Client"; + _strPrgLocPath = cw.GetPrgLocPath(); + _strPrgNetPath = cw.GetPrgNetPath(); + _strDataPath = cw.GetDataPath(); + _strSrvAuth = cw.GetSrvAuth(); + _strSrvDict = cw.GetSrvDict(); + break; + case 3: //aggiornamento + _strInstallType = ""; + _strPrgLocPath = cw.GetDestinationPath(); + _strDataPath = cw.GetDataPath(); + _strSrvAuth = cw.GetSrvAuth(); + _strSrvDict = cw.GetSrvDict(); + break; + default: //standard + if (cw.GetInstDemoVersion()) + { + _strInstallType = "DEMO"; + _strPrgLocPath = "c:/campodemo"; + } + else + { + _strInstallType = "Standard"; + _strPrgLocPath = cw.GetPrgLocPath(); + _strDataPath = cw.GetDataPath(); + _bInstDemoData = cw.GetInstDemoData(); + } + break; + } + //questo vale per tutti + _bDesktopShortcut = cw.GetDesktopShortcut(); + + //se installazione o aggiornamento cambia sia il titolo che i contenuti + wxString strTitle; + wxString strBody; + + //Aggiornamento + if (_uInstallType == 3) + { + strTitle += wxT("AGGIORNAMENTO: riepilogo configurazione"); + + strBody = wxT("Cartella programma da aggiornare: "); + strBody += wxT(Bold(_strPrgLocPath) + "
"); + strBody += wxT("Cartella dati in uso: "); + strBody += wxT(Bold(_strDataPath) + "
"); + } + else //Installazione + { + strTitle += wxT("INSTALLAZIONE: riepilogo configurazione"); + //DEMO (aaarrgh!) + if (cw.GetInstDemoVersion()) + { + strBody = wxT("Tipo installazione selezionata: "); + strBody += wxT("DEMO
"); + strBody += wxT("Cartella dove installare il programma: "); + strBody += wxT("C:/campodemo
"); + } + else //tutte le altre + { + strBody = wxT("Tipo installazione selezionata: "); + strBody += wxT(Bold(_strInstallType) + "
"); + strBody += wxT("Cartella dove installare il programma: "); + strBody += wxT(Bold(_strPrgLocPath) + "
"); + if (_uInstallType == 2) + { + strBody += wxT("Cartella di origine dei files del programma: "); + strBody += wxT(Bold(_strPrgNetPath) + "
"); + } + strBody += wxT("Cartella dati da creare: "); + strBody += wxT(Bold(_strDataPath) + "
"); + } + } + //installazione servers... + if (!_strSrvAuth.IsEmpty()) + { + strBody += wxT("Computer gestore delle autorizzazioni: "); + strBody += wxT(Bold(_strSrvAuth) + "
"); + } + if (!_strSrvDict.IsEmpty()) + { + strBody += wxT("Computer gestore dei dizionari: "); + strBody += wxT(Bold(_strSrvDict) + "
"); + } + //...e loro modalita' di lancio (solo installazione server!) + if (_uInstallType == 1 && (!_strSrvAuth.IsEmpty() || !_strSrvDict.IsEmpty()) && _iSrvAutostartMode >= 0) + { + strBody += wxT("Modalita' di esecuzione dei programmi di gestione: "); + if (_iSrvAutostartMode == 0) + strBody += wxT(Bold("Come servizi") + "
"); + else + strBody += wxT(Bold("Nel menu esecuzione automatica") + ""); + } + + //installazione dati demo (solo in postazione singola) + if (_uInstallType == 0 && _bInstDemoData) + strBody += wxT("Installazione area dati dimostrativa
"); + + if (_bDesktopShortcut) + strBody += wxT("Creazione dell' icona sul desktop
"); + + SetHTMLText(strTitle, strBody); + + return true; +} + +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(m_pPage[0]); } + +wxString CampoWizard::Get(wxWindowID id) const +{ + wxWindow* pWnd = FindWindowById(id); + return pWnd ? pWnd->GetLabel() : wxEmptyString; +} + +int CampoWizard::GetSelection(wxWindowID id) const +{ + int n = -1; + wxWindow* pWnd = FindWindowById(id); + if (pWnd) + { + wxChoice* pList = (wxChoice*)pWnd; + n = pList->GetSelection(); + } + return n; +} + +bool CampoWizard::GetBool(wxWindowID id) const +{ + wxCheckBox* pWnd = (wxCheckBox*)FindWindowById(id); + return pWnd != NULL && pWnd->IsChecked(); +} + + +void CampoWizard::Set(wxWindowID id, const wxString str) +{ + wxWindow* pWnd = FindWindowById(id); + if (pWnd != NULL) + pWnd->SetLabel(str); +} + +//lunga litania di metodi per gettare e settare i valori tra le pagine +void CampoWizard::SetDestinationPath(const wxString& path) +{ + _strDestinationPath = path; + //Se il path di destinazione e' vuoto -> nuova installazione, senno' e' un aggiornamento della installazione.. + //..che sta in _strDestinationPath + if (_strDestinationPath.IsEmpty()) + { + if (GetInstDemoVersion()) + wxWizardPageSimple::Chain(m_pPage[2], m_pPage[8]); //installazione DEMO + else + wxWizardPageSimple::Chain(m_pPage[3], m_pPage[4]); //installazione nuova normale + } + else + { + wxWizardPageSimple::Chain(m_pPage[3], m_pPage[8]); //aggiornamento + } +} + +const wxString& CampoWizard::GetDestinationPath() const +{ + return _strDestinationPath; +} + +void CampoWizard::SetInstallationType(const unsigned int type) +{ + _uInstallationType = type; + //in base al tipo di installazione spara l'utente alla pagina corretta + switch (_uInstallationType) + { + case 1: //server + wxWizardPageSimple::Chain(m_pPage[4], m_pPage[6]); //manda l'utente alla pagina server + wxWizardPageSimple::Chain(m_pPage[6], m_pPage[8]); //dal server alla pagina riassuntiva + break; + case 2: //client + wxWizardPageSimple::Chain(m_pPage[4], m_pPage[7]); //manda l'utente alla pagina client + wxWizardPageSimple::Chain(m_pPage[7], m_pPage[8]); //dal client alla pagina riassuntiva + break; + case 3: //aggiornamento installazione precedente + wxWizardPageSimple::Chain(m_pPage[3], m_pPage[8]); //manda l'utente alla pagina riassuntiva + break; + default: //standard + //if demo + if (GetInstDemoVersion()) + { + wxWizardPageSimple::Chain(m_pPage[2], m_pPage[8]); //manda l'utente alla pagina riassuntiva senza controllo chiave + } + else + { + wxWizardPageSimple::Chain(m_pPage[4], m_pPage[5]); //manda l'utente alla pagina standard + wxWizardPageSimple::Chain(m_pPage[5], m_pPage[8]); //dalla standard alla pagina riassuntiva + } + break; + } +} + +const unsigned int CampoWizard::GetInstallationType() const +{ + return _uInstallationType; +} + +void CampoWizard::SetPrgLocPath(const wxString& strPrgLocPath) +{ + _strPrgLocPath = strPrgLocPath; +} + +const unsigned int CampoWizard::GetDongleType() const +{ + return _uDongleType; +} + +void CampoWizard::SetDongleType(const unsigned int uType) +{ + _uDongleType = uType; +} + +const wxString& CampoWizard::GetPrgLocPath() const +{ + return _strPrgLocPath; +} + +void CampoWizard::SetPrgNetPath(const wxString& strPrgNetPath) +{ + _strPrgNetPath = strPrgNetPath; +} + +const wxString& CampoWizard::GetPrgNetPath() const +{ + return _strPrgNetPath; +} + +void CampoWizard::SetDataPath(const wxString& strDataPath) +{ + _strDataPath = strDataPath; +} + +const wxString& CampoWizard::GetDataPath() const +{ + return _strDataPath; +} + +void CampoWizard::SetInstUseAuth(const bool bInstUseAuth) +{ + _bInstUseAuth = bInstUseAuth; +} + +const bool CampoWizard::GetInstUseAuth() const +{ + return _bInstUseAuth; +} + +void CampoWizard::SetSrvAuth(const wxString& strSrvAuth) +{ + _strSrvAuth = strSrvAuth; +} + +const wxString& CampoWizard::GetSrvAuth() const +{ + return _strSrvAuth; +} + +void CampoWizard::SetInstUseDict(const bool bInstUseDict) +{ + _bInstUseDict = bInstUseDict; +} + +const bool CampoWizard::GetInstUseDict() const +{ + return _bInstUseDict; +} + +void CampoWizard::SetSrvDict(const wxString& strSrvDict) +{ + _strSrvDict = strSrvDict; +} + +const wxString& CampoWizard::GetSrvDict() const +{ + return _strSrvDict; +} + +void CampoWizard::SetSrvAutostartMode(const int iSrvAutostartMode) +{ + _iSrvAutostartMode = iSrvAutostartMode; +} + +const int CampoWizard::GetSrvAutostartMode() const +{ + return _iSrvAutostartMode; +} + +void CampoWizard::SetInstDemoData(const bool bInstDemoData) +{ + _bInstDemoData = bInstDemoData; +} + +const bool CampoWizard::GetInstDemoData() const +{ + return _bInstDemoData; +} + +void CampoWizard::SetInstDemoVersion(const bool bInstDemoVersion) +{ + _bInstDemoVersion = bInstDemoVersion; +} + +const bool CampoWizard::GetInstDemoVersion() const +{ + return _bInstDemoVersion; +} + +void CampoWizard::SetDesktopShortcut(const bool bDesktopShortcut) +{ + _bDesktopShortcut = bDesktopShortcut; +} + +const bool CampoWizard::GetDesktopShortcut() const +{ + return _bDesktopShortcut; +} +//...fine litania metodi di passaggio valori tra le finestre + + + +CampoWizard::CampoWizard(wxWindow* pParent) +{ + //resettatore dei booleans (che senno' prendono valore casuale ad ogni esecuzione) + _bInstDemoData = false; //installa dati dimostrativi + _bInstDemoVersion = false; //installa versione demo + _bInstUseAuth = false; //installa/usa server authoriz + _bInstUseDict = false; //installa/usa server diction + _bDesktopShortcut = false; //creazione link sul desktop + + wxBitmap bitmap; + wxString strName = wxT("logo.gif"); + bitmap.LoadFile(strName, wxBITMAP_TYPE_GIF); + + Create(pParent, wxID_ANY, APPNAME, bitmap); + + m_pPage[0] = new CampoWizardPage1(this); //benvenuto con logo + m_pPage[1] = new CampoWizardPage2(this); //licenza + m_pPage[2] = new CampoWizardPage3(this); //scelta aggiornamento/tipo installazione + m_pPage[3] = new CampoWizardPage4(this); //test ed installazione chiavi + m_pPage[4] = new CampoWizardPage5(this); //selezione tipo installazione + m_pPage[5] = new CampoWizardPage6(this); //installazione standard + m_pPage[6] = new CampoWizardPage7(this); //installazione server + m_pPage[7] = new CampoWizardPage8(this); //installazione client + m_pPage[8] = new CampoWizardPage9(this); //creazione icona sul desktop e in start/programmi/campo + m_pPage[9] = new CampoWizardPage10(this); //riassuntino installazione + + + for (int p = 1; p < m_nPages; p++) + wxWizardPageSimple::Chain(m_pPage[p-1], m_pPage[p]); + + GetPageAreaSizer()->Add(m_pPage[0]); + + //bottoni di navigazione + Set(wxID_FORWARD, "Avanti"); + Set(wxID_BACKWARD, "Indietro"); + Set(wxID_CANCEL, "Annulla"); +} diff --git a/setup/wizard.h b/setup/wizard.h new file mode 100755 index 000000000..b4070329d --- /dev/null +++ b/setup/wizard.h @@ -0,0 +1,85 @@ +#ifndef __WIZARD_H +#define __WIZARD_H + +/////////////////////////////////////////////////////////// +// CampoWizardPage +/////////////////////////////////////////////////////////// +class CampoWizardPage; //predefinizione di CampoWizardPage (magia nera!!) +//predefinizione pure della CampoWizard con tutti i suoi metodi per poterlo usare nel metodo GetWizard (magia nerissima!!) +class CampoWizard : public wxWizard +{ + enum { m_nPages = 10 }; + CampoWizardPage* m_pPage[m_nPages]; + + wxString _strDestinationPath; //path di aggiornamento/installazione + unsigned int _uInstallationType; //tipo di installazione selezionata (standard,server,client,aggiornamento) + unsigned int _uDongleType; //tipo di chiave di protezione (hardlock,eutron,server) + + wxString _strPrgLocPath; //path programmi in locale + wxString _strPrgNetPath; //path programmi in remoto (server programmi directory per client) + wxString _strDataPath; //path dati (creare o usare) + + bool _bInstDemoData; //installa dati dimostrativi + bool _bInstDemoVersion; //installa versione demo + bool _bInstUseAuth; //installa/usa server authoriz + wxString _strSrvAuth; //nome server authoriz + bool _bInstUseDict; //installa/usa server diction + wxString _strSrvDict; //nome server diction + + unsigned int _iSrvAutostartMode; //tipologia di esecuzione dei server + bool _bDesktopShortcut; //crea il link sul desktop + +protected: + DECLARE_EVENT_TABLE(); + void OnNext(wxCommandEvent& e); + + int Pages() const { return m_nPages; } + CampoWizardPage& Page(int p) const { wxASSERT(p >= 0 && p < m_nPages); return *m_pPage[p]; } + +public: + bool Run(); + wxString Get(wxWindowID id) const; + int GetSelection(wxWindowID id) const; + bool GetBool(wxWindowID id) const; + void Set(wxWindowID id, const wxString str); + + //metodi per il passaggio tra le finestre dei parametri di installazione! + void SetDestinationPath(const wxString& strPath); + const wxString& GetDestinationPath() const; + void SetInstallationType(const unsigned int uType); + const unsigned int GetInstallationType() const; + void SetDongleType(const unsigned int uType); + const unsigned int GetDongleType() const; + + void SetPrgLocPath(const wxString& strPrgLocPath); + const wxString& GetPrgLocPath() const; + void SetPrgNetPath(const wxString& strPrgNetPath); + const wxString& GetPrgNetPath() const; + void SetDataPath(const wxString& strDataPath); + const wxString& GetDataPath() const; + + void SetInstDemoData(const bool bInstDemoData); + const bool GetInstDemoData() const; + void SetInstDemoVersion(const bool bInstDemoVersion); + const bool GetInstDemoVersion() const; + + void SetInstUseAuth(const bool bInstUseAuth); + const bool GetInstUseAuth() const; + void SetSrvAuth(const wxString& strSrvAuth); + const wxString& GetSrvAuth() const; + + void SetInstUseDict(const bool bInstUseDict); + const bool GetInstUseDict() const; + void SetSrvDict(const wxString& strSrvDict); + const wxString& GetSrvDict() const; + + void SetSrvAutostartMode(const int iSrvAutostartMode); + const int GetSrvAutostartMode() const; + + void SetDesktopShortcut(const bool bDesktopShortcut); + const bool GetDesktopShortcut() const; + + CampoWizard(wxWindow* pParent); +}; + +#endif diff --git a/setup/wxinc.h b/setup/wxinc.h index 3e5966fdd..4874f6937 100755 --- a/setup/wxinc.h +++ b/setup/wxinc.h @@ -21,5 +21,18 @@ #include