diff --git a/xvaga/agasys.cpp b/xvaga/agasys.cpp index 62059171b..5294e89b8 100755 --- a/xvaga/agasys.cpp +++ b/xvaga/agasys.cpp @@ -26,29 +26,6 @@ static unsigned int aga_getziplist(const char* zipfile, wxArrayString& aFiles) return aFiles.GetCount(); } -/* -static int aga_find_slash(const wxString& path, int from) -{ - for (int i = from; path[i]; i++) - if (wxIsPathSeparator(path[i])) - return i; - - return -1; -} -*/ - -static bool aga_create_dir(wxString strPath) -{ - bool ok = wxFileName::Mkdir(strPath, 0x777, wxPATH_MKDIR_FULL); - if (!ok) - { - wxString strMsg; - strMsg << "Impossibile creare la cartella " << strPath; - xvt_dm_post_error(strMsg); - } - return ok; -} - bool aga_unzip(const char* zipfile, const char* destdir) { wxArrayString aFiles; @@ -70,7 +47,7 @@ bool aga_unzip(const char* zipfile, const char* destdir) if (!wxEndsWithPathSeparator(strOutDir)) strOutDir += wxFILE_SEP_PATH; strOutDir += strFileName; - aga_create_dir(strOutDir); + xvt_fsys_mkdir(strOutDir); } else { @@ -90,7 +67,7 @@ bool aga_unzip(const char* zipfile, const char* destdir) wxString strPath; ::wxSplitPath(strOutFile, &strPath, NULL, NULL); - aga_create_dir(strPath); + xvt_fsys_mkdir(strPath); wxFileOutputStream fout(strOutFile); fout.Write(fin); @@ -238,6 +215,108 @@ bool aga_dde_terminate(unsigned long connection) return ok; } +/////////////////////////////////////////////////////////// +// Multi file operations +/////////////////////////////////////////////////////////// + +/* Solo da Vista in poi... +#include +#include + +static IFileOperation* CreatePFO() +{ + return NULL; + HRESULT hr = ::CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE); + if (!SUCCEEDED(hr)) + return NULL; + + IFileOperation *pfo = NULL; + hr = ::CoCreateInstance(CLSID_FileOperation, NULL, CLSCTX_ALL, IID_PPV_ARGS(&pfo)); + if (!SUCCEEDED(hr)) + return NULL; + + pfo->SetOperationFlags(FOF_NOCONFIRMATION); + + return pfo; +} + +static void DeleteIUnknown(IUnknown* iu) +{ + if (iu) + { + iu->Release(); + iu = NULL; + } +} +*/ + +int xvt_fsys_files_remove(const char* src, SLIST names) +{ +/* + int nDone = 0; + IFileOperation *pfo = CreatePFO(); + if (!pfo) + return -1; + + HRESULT hr = 0; + + if (xvt_slist_count(names) == 0) + { + wxString n = src; + wxWritableWCharBuffer wcb = n.wchar_str(); + IShellItem* psiFolder = NULL; + hr = ::SHCreateItemFromParsingName(wcb, NULL, IID_PPV_ARGS(&psiFolder)); + if (SUCCEEDED(hr)) + { + IEnumShellItems* pEnum = NULL; + hr = psiFolder->BindToHandler(NULL, BHID_EnumItems, IID_IEnumShellItems, (void**)&pEnum); + if (SUCCEEDED(hr)) + { + hr = pfo->DeleteItems(pEnum); + if (SUCCEEDED(hr)) + nDone++; + DeleteIUnknown(pEnum); + } + DeleteIUnknown(psiFolder); + } + } + else + { + for (SLIST_ELT e = xvt_slist_get_first(names); e; e = xvt_slist_get_next(names, e)) + { + wxFileName n = xvt_slist_get(names, e, NULL); + if (!n.IsAbsolute()) + n.PrependDir(src); + wxWritableWCharBuffer wcb = n.GetFullPath().wchar_str(); + IShellItem* psiItem = NULL; + hr = ::SHCreateItemFromParsingName(wcb, NULL, IID_PPV_ARGS(&psiItem)); + if (SUCCEEDED(hr)) + { + hr = pfo->DeleteItem(psiItem, NULL); + if (SUCCEEDED(hr)) + nDone++; + DeleteIUnknown(psiItem); + } + } + } + + hr = pfo->PerformOperations(); + DeleteIUnknown(pfo); + return SUCCEEDED(hr) ? nDone : -1; + */ + return -1; // Not implemented yet +} + +int xvt_fsys_files_copy(const char* src, SLIST names, const char* dst) +{ + return -1; +} + +int xvt_fsys_files_move(const char* src, SLIST names, const char* dst) +{ + return -1; +} + /////////////////////////////////////////////////////////// // TProgressIndicator /////////////////////////////////////////////////////////// diff --git a/xvaga/xvaga.cpp b/xvaga/xvaga.cpp index 4f5631ceb..53ddc2970 100755 --- a/xvaga/xvaga.cpp +++ b/xvaga/xvaga.cpp @@ -3004,6 +3004,10 @@ void xvt_sbar_set_range(WINDOW win, SCROLL_TYPE t, int min, int max) { CAST_GAUGE(win, g); g.SetRange(max); + if (max > 1) + g.SetDeterminateMode(); + else + g.SetIndeterminateMode(); } break; case HVSLIDER: diff --git a/xvaga/xvt.h b/xvaga/xvt.h index 5792a997f..75a448050 100755 --- a/xvaga/xvt.h +++ b/xvaga/xvt.h @@ -212,6 +212,10 @@ XVTDLL const char* xvt_fsys_get_campo_ini(); XVTDLL long xvt_fsys_file_attr(const char* pathname, long attr); XVTDLL BOOLEAN xvt_fsys_file_md5(const char* path, char* outstr32); +XVTDLL int xvt_fsys_files_copy (const char* src, SLIST names, const char* dst); +XVTDLL int xvt_fsys_files_move (const char* src, SLIST names, const char* dst); +XVTDLL int xvt_fsys_files_remove(const char* src, SLIST names); + XVTDLL void xvt_help_close_helpfile(XVT_HELP_INFO hi); XVTDLL XVT_HELP_INFO xvt_help_open_helpfile(FILE_SPEC *fs, unsigned long flags); XVTDLL BOOLEAN xvt_help_process_event(XVT_HELP_INFO hi, WINDOW win, EVENT *ev);