Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/trunk@15865 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2007-12-13 14:49:46 +00:00
parent 5b2e68378b
commit 8257473361
4 changed files with 222 additions and 100 deletions

View File

@ -118,6 +118,7 @@ protected:
const wxString GetSourceDir(const wxString strDirName) const; const wxString GetSourceDir(const wxString strDirName) const;
void EmptyOutDir(const wxString& strDir) const; void EmptyOutDir(const wxString& strDir) const;
bool UnzipModule(const wxString& strPrgLocPath, const wxString& strSrc, const wxString& strModule) const; bool UnzipModule(const wxString& strPrgLocPath, const wxString& strSrc, const wxString& strModule) const;
void CopyDir(const wxString& strSourceDir, const wxString& strDestDir) const;
bool CopyFilesAndDirs(const wxString& FilesListI, wxString strFileCurr, const bool bIni) const; bool CopyFilesAndDirs(const wxString& FilesListI, wxString strFileCurr, const bool bIni) const;
void UpdateInstallIni(const wxString strSourcePath, const wxString strDestPath, const wxString& strModule) const; void UpdateInstallIni(const wxString strSourcePath, const wxString strDestPath, const wxString& strModule) const;
bool HTTPGet(const wxString& strLocalPath, const wxString& strWebPath) const; bool HTTPGet(const wxString& strLocalPath, const wxString& strWebPath) const;
@ -450,6 +451,21 @@ bool CampoSetup::CopyFilesAndDirs(const wxString& FilesListI, wxString strFileCu
return ok; return ok;
} }
//metodo per copiare una directory e tutti i files che contiene
void CampoSetup::CopyDir(const wxString& strSourceDir, const wxString& strDestDir) const
{
if (!wxDir::Exists(strDestDir))
wxMkdir(strDestDir);
wxArrayString asFilesList;
const size_t uFilesToCopy = wxDir::GetAllFiles(strSourceDir, &asFilesList, "*.*", wxDIR_FILES);
const size_t uFrom = strSourceDir.Len();
for (size_t i = 0; i < uFilesToCopy; i++)
{
wxString strFileDest = strDestDir + asFilesList[i].Mid(uFrom);
::wxCopyFile(asFilesList[i], strFileDest);
}
}
//metodo per accoppare tutti i files di una directory //metodo per accoppare tutti i files di una directory
void CampoSetup::EmptyOutDir(const wxString& strDir) const void CampoSetup::EmptyOutDir(const wxString& strDir) const
{ {
@ -836,6 +852,8 @@ void CampoSetup::NormalSetup()
wxArrayString asFilesList; wxArrayString asFilesList;
wxFileName strSourcePath(m_strSetupPath, "*.*"); wxFileName strSourcePath(m_strSetupPath, "*.*");
strSourcePath.AppendDir(".."); strSourcePath.AppendDir("..");
strSourcePath.AppendDir("..");
strSourcePath.AppendDir("campo");
strSourcePath.MakeAbsolute(); strSourcePath.MakeAbsolute();
//stringa inutile al programma ma decisiva per il programmatore //stringa inutile al programma ma decisiva per il programmatore
const wxString strSrc = strSourcePath.GetPath(); const wxString strSrc = strSourcePath.GetPath();
@ -1012,7 +1030,12 @@ void CampoSetup::NormalSetup()
//..conseguente riaggiornamento del livello versione/patch del SY in install.ini //..conseguente riaggiornamento del livello versione/patch del SY in install.ini
const wxString strPrgCDPath = GetSourceDir("program"); const wxString strPrgCDPath = GetSourceDir("program");
if (wxFileName::DirExists(strPrgCDPath)) if (wxFileName::DirExists(strPrgCDPath))
{
const wxString strSetupCDPath = strPrgCDPath + "/setup";
const wxString strSetupLocPath = strPrgLocPath + "/setup";
CopyDir(strSetupCDPath, strSetupLocPath);
UnzipModule(strPrgLocPath, strPrgCDPath, "sy"); UnzipModule(strPrgLocPath, strPrgCDPath, "sy");
}
// 8) CREAZIONE DELL'ICONA SUL DESKTOP // 8) CREAZIONE DELL'ICONA SUL DESKTOP
@ -1104,9 +1127,12 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
return; return;
} }
wxFileName strPath(argv[0]);
/*
//panegirico all'apparenza inutile ma in realta' decisivo per reperire i veri path assoluti dove funzionano... //panegirico all'apparenza inutile ma in realta' decisivo per reperire i veri path assoluti dove funzionano...
//..setup, ba0, ba1. NON cancellare!!! //..setup, ba0, ba1. NON cancellare!!!
wxString strIni = "install.ini"; wxString strIni = "../install.ini";
wxFileName strPath; wxFileName strPath;
if (wxFileName::FileExists(strIni)) if (wxFileName::FileExists(strIni))
{ {
@ -1123,7 +1149,7 @@ void CampoSetup::OnTimer(wxTimerEvent& WXUNUSED(e))
return; return;
} }
} }
*/
strPath.MakeAbsolute(); strPath.MakeAbsolute();
strPath.SetCwd(); strPath.SetCwd();
//path del programma setup.exe in esecuzione; serve in seguito in quanto alcuni metodi (tipo la GetAllFiles).. //path del programma setup.exe in esecuzione; serve in seguito in quanto alcuni metodi (tipo la GetAllFiles)..

View File

@ -48,6 +48,128 @@ wxString GetDefaultDestination()
return strDest; return strDest;
} }
//metodo per avere la lista delle condivisioni remote connesse al computer (preso da MSDN)
size_t ListNetworkDisks(wxArrayString& asList)
{
DWORD dwResult, dwResultEnum;
HANDLE hEnum;
DWORD cbBuffer = 16384; // 16K is a good size
DWORD cEntries = -1; // enumerate all possible entries
LPNETRESOURCE lpnrLocal; // pointer to enumerated structures
DWORD i;
//
// Call the WNetOpenEnum function to begin the enumeration.
//
dwResult = WNetOpenEnum(RESOURCE_CONNECTED, // connected resources
RESOURCETYPE_DISK, // only disks
0, // enumerate all resources
NULL, // NULL first time the function is called
&hEnum); // handle to the resource
if (dwResult != NO_ERROR)
{
//
// Process errors with an application-defined error handler.
//
//NetErrorHandler(hwnd, dwResult, (LPSTR)"WNetOpenEnum");
//return false;
return 0;
}
//
// Call the GlobalAlloc function to allocate resources.
//
lpnrLocal = (LPNETRESOURCE) GlobalAlloc(GPTR, cbBuffer);
if (lpnrLocal == NULL)
return 0;
do
{
//
// Initialize the buffer.
//
ZeroMemory(lpnrLocal, cbBuffer);
//
// Call the WNetEnumResource function to continue
// the enumeration.
//
dwResultEnum = WNetEnumResource(hEnum, // resource handle
&cEntries, // defined locally as -1
lpnrLocal, // LPNETRESOURCE
&cbBuffer); // buffer size
//
// If the call succeeds, loop through the structures.
//
if (dwResultEnum == NO_ERROR)
{
for(i = 0; i < cEntries; i++)
{
asList.Add(lpnrLocal[i].lpLocalName);
}
}
// Process errors.
//
else if (dwResultEnum != ERROR_NO_MORE_ITEMS)
{
//NetErrorHandler(hwnd, dwResultEnum, (LPSTR)"WNetEnumResource");
break;
}
}
//
// End do.
//
while(dwResultEnum != ERROR_NO_MORE_ITEMS);
//
// Call the GlobalFree function to free the memory.
//
GlobalFree((HGLOBAL)lpnrLocal);
//
// Call WNetCloseEnum to end the enumeration.
//
dwResult = WNetCloseEnum(hEnum);
if(dwResult != NO_ERROR)
{
//
// Process errors.
//
//NetErrorHandler(hwnd, dwResult, (LPSTR)"WNetCloseEnum");
return 0;
}
return asList.GetCount();
}
//metodo per avere un array con la lista dei path delle condivisioni locali
size_t ListSharedDirectories(wxArrayString& asList)
{
#ifdef WIN32
NET_API_STATUS res = ERROR_MORE_DATA;
while (res == ERROR_MORE_DATA)
{
PSHARE_INFO_502 shi;
DWORD nEntriesRead = 0, nTotalEntries = 0, nResume = 0;
res = NetShareEnum(NULL, 502, (LPBYTE *)&shi, -1, &nEntriesRead, &nTotalEntries, &nResume);
if (res == ERROR_SUCCESS || res == ERROR_MORE_DATA)
{
for (DWORD i = 0; i < nEntriesRead; i++)
{
wxString strPath(shi[i].shi502_path);
if (!strPath.IsEmpty())
{
strPath.MakeLower();
asList.Add(strPath);
}
} //for(DWORD i...
NetApiBufferFree(shi);
} //if(res ==...
} //while (res==ERROR_MORE_DATA...
#endif
return asList.GetCount();
}
//Magico metodo per stabilire se una directory e' condivisa ed e' su un disco locale!! //Magico metodo per stabilire se una directory e' condivisa ed e' su un disco locale!!
bool IsSharedDirectory (const wxString& strDir) bool IsSharedDirectory (const wxString& strDir)
{ {
@ -56,35 +178,19 @@ bool IsSharedDirectory (const wxString& strDir)
wxString strDataDir = strDir.Lower(); wxString strDataDir = strDir.Lower();
strDataDir.Replace ("/", "\\"); strDataDir.Replace ("/", "\\");
NET_API_STATUS res = ERROR_MORE_DATA; wxArrayString asList;
while (res==ERROR_MORE_DATA && !found) ListSharedDirectories(asList);
for (size_t i = 0; i < asList.GetCount(); i++)
{ {
PSHARE_INFO_502 shi; const wxString& strPath = asList[i];
DWORD nEntriesRead =0, nTotalEntries = 0, nResume = 0; //se trova la directory di studio condivisa ed e' su disco locale -> server
res = NetShareEnum(NULL, 502, (LPBYTE *)&shi, -1, &nEntriesRead, &nTotalEntries, &nResume); if (strPath.Len() > 3 && strDir.StartsWith(strPath))
if (res == ERROR_SUCCESS || res == ERROR_MORE_DATA)
{ {
for (DWORD i = 0; i < nEntriesRead; i++) found = true;
{ break;
/*Oh ignaro programmatore, questa parte commentata utilizza funzioni native di windows che non si sono riuscite.. }
..a far funzionare! Se osi, prova la tua forza rendendole utili! } //for(DWORD i...
//la directory dei dati deve essere leggibile,scrivibile,e filecreabile
int Result = NetShareGetInfo(NULL, shi[i].shi502_netname, 502, (LPBYTE *)&shi[i]);
if (shi[i].shi502_permissions & (PERM_FILE_READ | PERM_FILE_WRITE | PERM_FILE_CREATE))*/
{
wxString strPath(shi[i].shi502_path);
strPath.MakeLower();
//se trova la directory di studio condivisa ed e' su disco locale -> server
if (strDir.StartsWith(strPath))
{
found = true;
break;
}
}
} //for(DWORD i...
NetApiBufferFree(shi);
} //if(res ==...
} //while (res==ERROR_MORE_DATA...
return found; return found;
} }

View File

@ -44,20 +44,28 @@ public:
}; };
*/ */
//progind
class CampoProgressDialog : public wxProgressDialog class CampoProgressDialog : public wxProgressDialog
{ {
public: public:
CampoProgressDialog(const wxString& strTitle, int nMaximum = 100, wxWindow* pParent = NULL); CampoProgressDialog(const wxString& strTitle, int nMaximum = 100, wxWindow* pParent = NULL);
}; };
//metodi generici
//finestre messaggio,errore,ecc...
bool ErrorBox(const wxString str); bool ErrorBox(const wxString str);
bool WarningBox(const wxString str); bool WarningBox(const wxString str);
//trattamento files
void CheckAndMakeDir(const wxString& strDir, const wxString& strMsg); void CheckAndMakeDir(const wxString& strDir, const wxString& strMsg);
bool UnzipFile(const char* strZipFile, const char* strDestdir); bool UnzipFile(const char* strZipFile, const char* strDestdir);
//interfaccia con windows
wxString GetWindowsProgramDirectory(); wxString GetWindowsProgramDirectory();
int GetSessionId(); int GetSessionId();
size_t ListNetworkDisks(wxArrayString& asList);
size_t ListSharedDirectories(wxArrayString& asList);
bool IsSharedDirectory (const wxString& strDir);
#endif #endif

View File

@ -537,17 +537,17 @@ bool CampoWizardPage4::TransferDataToWindow()
{ {
case 1: case 1:
strBody += wxT("<p>E' stata rilevata una chiave tipo <b>Hardlock</b>:</p>"); strBody += wxT("<p>E' stata rilevata una chiave tipo <b>Hardlock</b>:</p>");
strBody += wxT("<p align=center><img src=\"../servers/hardlock.gif\" /></p>"); strBody += wxT("<p align=center><img src=\"../../campo/servers/hardlock.gif\" /></p>");
strBody += wxT("<p>Si puo' procedere con l'installazione /aggiornamento del software <b><i>APPNAME</i></b>. Premere il pulsante \"Avanti\".</p>"); strBody += wxT("<p>Si puo' procedere con l'installazione /aggiornamento del software <b><i>APPNAME</i></b>. Premere il pulsante \"Avanti\".</p>");
break; break;
case 2: case 2:
strBody += wxT("<p>E' stata rilevata una chiave tipo <b>Eutron</b>:</p>"); strBody += wxT("<p>E' stata rilevata una chiave tipo <b>Eutron</b>:</p>");
strBody += wxT("<p align=center><img src=\"../servers/eutron.gif\" /></p>"); strBody += wxT("<p align=center><img src=\"../../campo/servers/eutron.gif\" /></p>");
strBody += wxT("<p>Si puo' procedere con l'installazione /aggiornamento del software <b><i>APPNAME</i></b>. Premere il pulsante \"Avanti\".</p>"); strBody += wxT("<p>Si puo' procedere con l'installazione /aggiornamento del software <b><i>APPNAME</i></b>. Premere il pulsante \"Avanti\".</p>");
break; break;
case 3: case 3:
strBody += wxT("<p>E' stato rilevata una chiave remota condivisa in rete con il servizio di gestione autorizzazioni:</p>"); strBody += wxT("<p>E' stato rilevata una chiave remota condivisa in rete con il servizio di gestione autorizzazioni:</p>");
strBody += wxT("<p align=center><img src=\"../servers/autho.gif\" /></p>"); strBody += wxT("<p align=center><img src=\"../../campo/servers/autho.gif\" /></p>");
strBody += wxT("<p>Si puo' procedere con l'installazione /aggiornamento del software <b><i>APPNAME</i></b>. Premere il pulsante \"Avanti\".</p>"); strBody += wxT("<p>Si puo' procedere con l'installazione /aggiornamento del software <b><i>APPNAME</i></b>. Premere il pulsante \"Avanti\".</p>");
Set(404, GetWizard().GetSrvAuth()); Set(404, GetWizard().GetSrvAuth());
break; break;
@ -592,7 +592,7 @@ wxString CampoWizardPage4::DecodeString(const wxString& data)
int CampoWizardPage4::VersionYear() int CampoWizardPage4::VersionYear()
{ {
char ver[32]; char ver[32];
GetPrivateProfileString("ba", "Versione", "", ver, sizeof(ver), "../../program/install.ini"); GetPrivateProfileString("ba", "Versione", "", ver, sizeof(ver), "../install.ini");
ver[4] = '\0'; ver[4] = '\0';
return atoi(ver); return atoi(ver);
} }
@ -624,57 +624,7 @@ int CampoWizardPage4::DongleTest()
else else
dongle_type = 1; //chiave hardlock 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; return dongle_type;
} }
@ -691,7 +641,7 @@ CampoWizardPage4::CampoWizardPage4(wxWizard* parent) : CampoWizardPage(parent)
//Hardlock label //Hardlock label
AddLabel(gbsButtSizer, "Installa chiave locale di tipo Hardlock", 0, 0); AddLabel(gbsButtSizer, "Installa chiave locale di tipo Hardlock", 0, 0);
//Hardlock image //Hardlock image
wxBitmap bmp_HL("../servers/hardlock.gif", wxBITMAP_TYPE_GIF); wxBitmap bmp_HL("../../campo/servers/hardlock.gif", wxBITMAP_TYPE_GIF);
wxStaticBitmap* s_bmp_HL = new wxStaticBitmap(this, wxID_ANY, bmp_HL); wxStaticBitmap* s_bmp_HL = new wxStaticBitmap(this, wxID_ANY, bmp_HL);
gbsButtSizer->Add(s_bmp_HL, wxGBPosition(0, 1)); gbsButtSizer->Add(s_bmp_HL, wxGBPosition(0, 1));
//bottone Hardlock //bottone Hardlock
@ -702,7 +652,7 @@ CampoWizardPage4::CampoWizardPage4(wxWizard* parent) : CampoWizardPage(parent)
//Eutron label //Eutron label
AddLabel(gbsButtSizer, "Installa chiave locale di tipo Eutron", 1, 0); AddLabel(gbsButtSizer, "Installa chiave locale di tipo Eutron", 1, 0);
//Eutron image //Eutron image
wxBitmap bmp_EU("../servers/eutron.gif", wxBITMAP_TYPE_GIF); wxBitmap bmp_EU("../../campo/servers/eutron.gif", wxBITMAP_TYPE_GIF);
wxStaticBitmap* s_bmp_EU = new wxStaticBitmap(this, wxID_ANY, bmp_EU); wxStaticBitmap* s_bmp_EU = new wxStaticBitmap(this, wxID_ANY, bmp_EU);
gbsButtSizer->Add(s_bmp_EU, wxGBPosition(1, 1)); gbsButtSizer->Add(s_bmp_EU, wxGBPosition(1, 1));
//bottone Eutron //bottone Eutron
@ -738,15 +688,16 @@ public:
bool CampoWizardPage5::ForwardValidate() bool CampoWizardPage5::ForwardValidate()
{ {
// controlla il tipo di installazione! // controlla il tipo di installazione!
InstallationType nType = it_standalone;
const int nSessionId = GetSessionId(); const int nSessionId = GetSessionId();
int nType = 1;
//nessun SessionId -> installazione comune -> selection dal radiobutton //nessun SessionId -> installazione comune -> selection dal radiobutton
if (nSessionId == 0) if (nSessionId == 0)
nType = m_pRadioBox->GetSelection() + 1; nType = InstallationType(m_pRadioBox->GetSelection() + 1);
else //SessionId != 0 -> Terminal Server -> installazione di tipo Server obbligata!!! else //SessionId != 0 -> Terminal Server -> installazione di tipo Server obbligata!!!
nType = 2; nType = it_server;
GetWizard().SetInstallationType((InstallationType)nType); GetWizard().SetInstallationType(nType);
return true; return true;
} }
@ -1162,6 +1113,38 @@ void CampoWizardPage8::OnSrvClick(wxCommandEvent& e)
bool CampoWizardPage8::TransferDataToWindow() bool CampoWizardPage8::TransferDataToWindow()
{ {
bool bNoPrg = Get(803).IsEmpty();
bool bNoData = Get(805).IsEmpty();
if (bNoPrg || bNoData)
{
//cerca le unita' condivise in rete
wxArrayString asList;
const size_t nShared = ListNetworkDisks(asList);
//se ne trova controlla se sono valide come directory di programmi e dati
for (size_t i = 0; i < nShared; i++)
{
wxString strWrk = asList[i];
if (!wxEndsWithPathSeparator(strWrk))
strWrk << wxFILE_SEP_PATH;
UINT nDriveType = GetDriveType(strWrk);
if (nDriveType == DRIVE_REMOTE)
{
if (bNoPrg && CheckPrgDir(strWrk))
{
bNoPrg = false;
Set(803, strWrk);
}
if (bNoData && CheckDataDir(strWrk))
{
bNoData = false;
Set(805, strWrk);
}
}
} //for(size_t...
} //if(noPrg...
return true; return true;
} }
@ -1221,10 +1204,12 @@ 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 consigliato e' <i>C:\\APPNAME</i> </p>"); strBody += wxT("Il percorso consigliato e' <i>C:\\APPNAME</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("<p>Il campo <b>'Cartella remota origine programmi'</b> contiene 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("E' la cartella di programmi condivisa dal server precedentemente installato. Se condivisa e connessa correttamente viene rilevata automaticamente e proposta dal programma. ");
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("Se non viene proposta automaticamente, digitare il percorso completo (es. <i><b>Z:\\APPNAME</b></i>)</p>");
strBody += wxT("E' la cartella dei dati condivisa dal server precedentemente installato.</p>"); strBody += wxT("<p>Il campo <b>'Cartella remota dati da utilizzare'</b> contiene il percorso completo della cartella di rete dove sono i dati. ");
strBody += wxT("E' la cartella dei dati condivisa dal server precedentemente installato. Se condivisa e connessa correttamente viene rilevata automaticamente e proposta dal programma. ");
strBody += wxT("Se non viene proposta automaticamente, digitare il percorso completo (es. <i><b>Z:\\APPNAME\\Dati</b></i>)</p>");
strBody += wxT("<p><b>Gestore dizionari:</b> 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("<p><b>Gestore dizionari:</b> 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 <u>Cerca</u> per attivare la ricerca automatica di tale computer. Qualora tale ricerca fallisse digitare il nome del computer gestore dei dizionari</p>"); strBody += wxT("Premere il bottone <u>Cerca</u> per attivare la ricerca automatica di tale computer. Qualora tale ricerca fallisse digitare il nome del computer gestore dei dizionari</p>");
@ -1251,9 +1236,7 @@ CampoWizardPage8::CampoWizardPage8(wxWizard* parent) : CampoWizardPage(parent)
//prompt //prompt
AddLabel(gbsSizer, "Cartella remota origine programmi", 1, 0); AddLabel(gbsSizer, "Cartella remota origine programmi", 1, 0);
//campo testo //campo testo
strPath = "Z:\\"; wxTextCtrl* tcSrcPrgPath = new wxTextCtrl(this, 803, "", wxDefaultPosition, wxSize(256,-1));
strPath += APPNAME;
wxTextCtrl* tcSrcPrgPath = new wxTextCtrl(this, 803, strPath, wxDefaultPosition, wxSize(256,-1));
gbsSizer->Add(tcSrcPrgPath, wxGBPosition(1, 1)); gbsSizer->Add(tcSrcPrgPath, wxGBPosition(1, 1));
//bottone 'sfoglia' //bottone 'sfoglia'
wxButton* bSrcPrgButton = new wxButton(this, 804, wxT("Sfoglia"), wxDefaultPosition, wxSize(48, -1)); wxButton* bSrcPrgButton = new wxButton(this, 804, wxT("Sfoglia"), wxDefaultPosition, wxSize(48, -1));
@ -1263,8 +1246,7 @@ 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"; wxTextCtrl* tcDataPath = new wxTextCtrl(this, 805, "", wxDefaultPosition, wxSize(256,-1));
wxTextCtrl* tcDataPath = new wxTextCtrl(this, 805, strPath, wxDefaultPosition, wxSize(256,-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));