/* ディレクトリダイアログ用汎用ルーチン */ void BrowseDirDlg(TWin *parentWin, UINT editCtl, char *title) { IMalloc *iMalloc = NULL; BROWSEINFO brInfo; LPITEMIDLIST pidlBrowse; char fileBuf[MAX_PATH]; parentWin->GetDlgItemText(editCtl, fileBuf, sizeof(fileBuf)); if (!SUCCEEDED(SHGetMalloc(&iMalloc))) return; TBrowseDirDlg dirDlg(fileBuf); brInfo.hwndOwner = parentWin->hWnd; brInfo.pidlRoot = 0; brInfo.pszDisplayName = fileBuf; brInfo.lpszTitle = title; brInfo.ulFlags = BIF_RETURNONLYFSDIRS; brInfo.lpfn = BrowseDirDlg_Proc; brInfo.lParam = (LPARAM)&dirDlg; brInfo.iImage = 0; do { if ((pidlBrowse = ::SHBrowseForFolder(&brInfo)) != NULL) { if (::SHGetPathFromIDList(pidlBrowse, fileBuf)) ::SetDlgItemText(parentWin->hWnd, editCtl, fileBuf); iMalloc->Free(pidlBrowse); break; } } while (dirDlg.IsDirty()); iMalloc->Release(); }
void SaveMgrWindow::OnAddClicked(wxCommandEvent& event) { wxDirDialog dirDlg (this, "Choose a world to add.", wxEmptyString); if (dirDlg.ShowModal() == wxID_OK) { saveList->AddSaveFromPath(dirDlg.GetPath()); } }
void ExploreFrame::OnExtractClicked( wxCommandEvent& event ) { if (m_fileListCtrl->GetSelectedItemsCount() == 0) { wxLogError(_("Select file(s) to extract")); return; } wxString extractFolder = wxStandardPaths::Get().GetDocumentsDir(); if (m_fileListCtrl->GetSelectedItemsCount() > 1) { wxDirDialog dirDlg(this, _("Select folder to extract files to"), extractFolder, wxDD_DEFAULT_STYLE); if (dirDlg.ShowModal() == wxID_OK) { wxBusyInfo busyInfo(_("Extracting data...")); wxBusyCursor busyCursor; wxDataViewItemArray selectedItems; m_fileListCtrl->GetSelections(selectedItems); for (auto it = selectedItems.begin(); it != selectedItems.end(); ++it) { const WADArchiveEntry& entry = m_archive->GetFilteredEntry((size_t) it->GetID() - 1); wxFileName targetFileName(entry.GetFileName(), wxPATH_UNIX); targetFileName.Normalize(wxPATH_NORM_ALL, dirDlg.GetPath()); wxLogDebug("Extracting to: %s", targetFileName.GetFullPath()); if (!targetFileName.Mkdir(wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL)) break; m_archive->Extract(entry, targetFileName.GetFullPath()); } } wxLogInfo(_("Files extracted to %s"), dirDlg.GetPath()); } else { const WADArchiveEntry& entry = GetSelectedEntry(); wxFileName fn(entry.GetFileName(), wxPATH_UNIX); wxString fileName = fn.GetFullName(); wxFileDialog fileDlg(this, _("Select target for file extraction"), extractFolder, fileName, wxFileSelectorDefaultWildcardStr, wxFD_OVERWRITE_PROMPT | wxFD_SAVE); if (fileDlg.ShowModal() == wxID_OK) { wxBusyInfo busyInfo(_("Extracting data...")); wxBusyCursor busyCursor; m_archive->Extract(entry, fileDlg.GetPath()); } wxLogInfo(_("File extracted to %s"), fileDlg.GetPath()); } }
void KICAD_MANAGER_FRAME::OnUnarchiveFiles( wxCommandEvent& event ) { wxFileName fn = m_ProjectFileName; fn.SetExt( ZipFileExtension ); wxFileDialog dlg( this, _( "Unzip Project" ), fn.GetPath(), fn.GetFullName(), ZipFileWildcard, wxFD_OPEN | wxFD_FILE_MUST_EXIST ); if( dlg.ShowModal() == wxID_CANCEL ) return; PrintMsg( _( "\nOpen " ) + dlg.GetPath() + wxT( "\n" ) ); wxDirDialog dirDlg( this, _( "Target Directory" ), fn.GetPath(), wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST ); if( dirDlg.ShowModal() == wxID_CANCEL ) return; wxSetWorkingDirectory( dirDlg.GetPath() ); PrintMsg( _( "Unzipping project in " ) + dirDlg.GetPath() + wxT( "\n" ) ); wxFileSystem zipfilesys; zipfilesys.AddHandler( new wxZipFSHandler ); zipfilesys.ChangePathTo( dlg.GetPath() + wxT( "#zip:" ) ); wxFSFile* zipfile = NULL; wxString localfilename = zipfilesys.FindFirst( wxT( "*.*" ) ); while( !localfilename.IsEmpty() ) { zipfile = zipfilesys.OpenFile( localfilename ); if( zipfile == NULL ) { DisplayError( this, wxT( "Zip file read error" ) ); break; } wxString unzipfilename = localfilename.AfterLast( ':' ); PrintMsg( _( "Extract file " ) + unzipfilename ); wxInputStream* stream = zipfile->GetStream(); wxFFileOutputStream* ofile = new wxFFileOutputStream( unzipfilename ); if( ofile->Ok() ) { ofile->Write( *stream ); PrintMsg( _( " OK\n" ) ); } else PrintMsg( _( " *ERROR*\n" ) ); delete ofile; delete zipfile; localfilename = zipfilesys.FindNext(); } PrintMsg( wxT( "** end **\n" ) ); wxSetWorkingDirectory( fn.GetPath() ); }
void KICAD_MANAGER_FRAME::OnUnarchiveFiles( wxCommandEvent& event ) { wxFileName fn = GetProjectFileName(); fn.SetExt( ZipFileExtension ); wxFileDialog zipfiledlg( this, _( "Unzip Project" ), fn.GetPath(), fn.GetFullName(), ZipFileWildcard(), wxFD_OPEN | wxFD_FILE_MUST_EXIST ); if( zipfiledlg.ShowModal() == wxID_CANCEL ) return; wxString msg = wxString::Format( _( "\nOpen \"%s\"\n" ), GetChars( zipfiledlg.GetPath() ) ); PrintMsg( msg ); wxDirDialog dirDlg( this, _( "Target Directory" ), fn.GetPath(), wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST ); if( dirDlg.ShowModal() == wxID_CANCEL ) return; wxString unzipDir = dirDlg.GetPath() + wxT( "/" ); msg.Printf( _( "Unzipping project in \"%s\"\n" ), GetChars( unzipDir ) ); PrintMsg( msg ); wxFileSystem zipfilesys; zipfilesys.AddHandler( new wxZipFSHandler ); auto path = wxURI( zipfiledlg.GetPath() + wxT( "#zip:" ) ).BuildURI(); zipfilesys.ChangePathTo( path, true ); wxFSFile* zipfile = NULL; wxString localfilename = zipfilesys.FindFirst( wxFileSelectorDefaultWildcardStr, wxFILE ); while( !localfilename.IsEmpty() ) { zipfile = zipfilesys.OpenFile( localfilename ); if( !zipfile ) { DisplayError( this, wxT( "Zip file read error" ) ); break; } wxFileName uzfn = localfilename.AfterLast( ':' ); uzfn.MakeAbsolute( unzipDir ); wxString unzipfilename = uzfn.GetFullPath(); msg.Printf( _( "Extract file \"%s\"" ), GetChars( unzipfilename ) ); PrintMsg( msg ); wxInputStream* stream = zipfile->GetStream(); wxFFileOutputStream* ofile = new wxFFileOutputStream( unzipfilename ); if( ofile->Ok() ) { ofile->Write( *stream ); PrintMsg( _( " OK\n" ) ); } else PrintMsg( _( " *ERROR*\n" ) ); delete ofile; delete zipfile; localfilename = zipfilesys.FindNext(); } PrintMsg( wxT( "** end **\n" ) ); if( unzipDir == Prj().GetProjectPath() ) { wxCommandEvent dummy; OnRefresh( dummy ); } }