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 VHDDExplorer::OnDropFiles(wxDropFilesEvent& event) { int count = event.GetNumberOfFiles(); wxString* dropped = event.GetFiles(); wxBusyCursor busyCursor; wxWindowDisabler disabler; wxBusyInfo busyInfo("Adding files, wait please..."); for(int i=0; i<count; ++i) { LOG_NOTICE(HLE, "Importing '%s'", dropped[i].wx_str()); Import(fmt::ToUTF8(dropped[i]), fmt::ToUTF8(wxFileName(dropped[i]).GetFullName())); } UpdateList(); }
bool ExploreFrame::CreatePatch() { bool patchCreated; { wxBusyInfo busyInfo(_("Writing file...")); wxBusyCursor busyCursor; patchCreated = m_archive->CreatePatch(m_patchFileName); } if (patchCreated) { UpdateTitle(); wxMessageDialog msgDlg(this, _("The patch WAD has been saved\n\nDo you want to open the folder it was saved to?"), _("Information"), wxICON_INFORMATION | wxOK | wxCANCEL); msgDlg.SetOKCancelLabels(_("Open Folder"), wxID_CLOSE); if (msgDlg.ShowModal() == wxID_OK) { wxFileName patchFN(m_patchFileName); patchFN.SetFullName(""); wxLaunchDefaultApplication(patchFN.GetFullPath()); } } return patchCreated; }