void DialogAttachments::OnExtract(wxCommandEvent &) { int i = listView->GetFirstSelected(); if (i == -1) return; agi::fs::path path; bool fullPath = false; // Multiple or single? if (listView->GetNextSelected(i) != -1) path = wxDirSelector(_("Select the path to save the files to:"), to_wx(OPT_GET("Path/Fonts Collector Destination")->GetString())).c_str(); else { path = SaveFileSelector( _("Select the path to save the file to:"), "Path/Fonts Collector Destination", ass->Attachments[i].GetFileName(), ".ttf", "Font Files (*.ttf)|*.ttf", this); fullPath = true; } if (path.empty()) return; // Loop through items in list while (i != -1) { auto& attach = ass->Attachments[i]; attach.Extract(fullPath ? path : path/attach.GetFileName()); i = listView->GetNextSelected(i); } }
void DialogExport::OnProcess(wxCommandEvent &) { if (!TransferDataFromWindow()) return; auto filename = SaveFileSelector(_("Export subtitles file"), "", "", "", to_wx(SubtitleFormat::GetWildcards(1)), this); if (filename.empty()) return; for (size_t i = 0; i < filter_list->GetCount(); ++i) { if (filter_list->IsChecked(i)) exporter->AddFilter(from_wx(filter_list->GetString(i))); } try { wxBusyCursor busy; c->ass->SetScriptInfo("Export Encoding", from_wx(charset_list->GetStringSelection())); exporter->Export(filename, from_wx(charset_list->GetStringSelection()), this); } catch (agi::UserCancelException const&) { } catch (const char *error) { wxMessageBox(error, "Error exporting subtitles", wxOK | wxICON_ERROR | wxCENTER, this); } catch (wxString const& error) { wxMessageBox(error, "Error exporting subtitles", wxOK | wxICON_ERROR | wxCENTER, this); } catch (agi::Exception const& err) { wxMessageBox(to_wx(err.GetMessage()), "Error exporting subtitles", wxOK | wxICON_ERROR | wxCENTER, this); } catch (std::exception const& err) { wxMessageBox(to_wx(err.what()), "Error exporting subtitles", wxOK | wxICON_ERROR | wxCENTER, this); } catch (...) { wxMessageBox("Unknown error", "Error exporting subtitles", wxOK | wxICON_ERROR | wxCENTER, this); } EndModal(0); }