Replaced all references to absolute paths with ?user, ?data or ?temp. Some bugs might have resulted, but it seems to work-ish.

Originally committed to SVN as r1277.
This commit is contained in:
Rodrigo Braz Monteiro 2007-06-21 00:46:50 +00:00
parent c4d94d4dfa
commit d0fc49ca67
17 changed files with 76 additions and 158 deletions

View File

@ -43,7 +43,7 @@
#include <wx/filename.h>
#include <wx/choicdlg.h>
#include "aegisublocale.h"
#include "main.h"
#include "standard_paths.h"
///////////////
@ -65,7 +65,7 @@ void AegisubLocale::Init(int language) {
curCode = language;
locale = new wxLocale(language);
#ifdef __WINDOWS__
locale->AddCatalogLookupPathPrefix(AegisubApp::folderName + _T("locale/"));
locale->AddCatalogLookupPathPrefix(StandardPaths::DecodePath(_T("?data/locale/")));
#endif
locale->AddCatalog(_T("aegisub"));
locale->AddCatalog(_T("wxstd"));
@ -115,7 +115,7 @@ wxArrayInt AegisubLocale::GetAvailableLanguages() {
wxString temp1;
// Open directory
wxString folder = AegisubApp::folderName + _T("/locale/");
wxString folder = StandardPaths::DecodePath(_T("?data/locale/"));
wxDir dir;
if (!dir.Exists(folder)) return final;
if (!dir.Open(folder)) return final;

View File

@ -36,13 +36,13 @@
////////////
// Includes
#include <fstream>
#include "ass_style_storage.h"
#include "ass_style.h"
#include "ass_file.h"
#include "main.h"
#include "text_file_reader.h"
#include "text_file_writer.h"
#include <fstream>
#include "standard_paths.h"
///////////////////////
@ -50,12 +50,7 @@
void AssStyleStorage::Save(wxString name) {
if (name.IsEmpty()) return;
wxString filename = AegisubApp::folderName;
filename += _T("/catalog/");
filename += name;
filename += _T(".sty");
TextFileWriter file(filename, _T("UTF-8"));
TextFileWriter file(StandardPaths::DecodePath(_T("?data/catalog/")+name+_T(".sty")), _T("UTF-8"));
for (std::list<AssStyle*>::iterator cur=style.begin();cur!=style.end();cur++) {
file.WriteLineToFile((*cur)->GetEntryData());
@ -67,15 +62,9 @@ void AssStyleStorage::Save(wxString name) {
// Load styles from disk
void AssStyleStorage::Load(wxString name) {
if (name.IsEmpty()) return;
wxString filename = AegisubApp::folderName;
filename += _T("/catalog/");
filename += name;
filename += _T(".sty");
Clear();
TextFileReader file(filename, _T("UTF-8"));
TextFileReader file(StandardPaths::DecodePath(_T("?data/catalog/")+name+_T(".sty")), _T("UTF-8"));
AssStyle *curStyle;
while (file.HasMoreLines()) {

View File

@ -41,7 +41,7 @@
#include <wx/filefn.h>
#include "dialog_progress.h"
#include "audio_provider_hd.h"
#include "main.h"
#include "standard_paths.h"
#include "options.h"
#include "utils.h"
@ -142,10 +142,10 @@ void HDAudioProvider::GetAudio(void *buf, __int64 start, __int64 count) {
wxString HDAudioProvider::DiskCachePath() {
// Default
wxString path = Options.AsText(_T("Audio HD Cache Location"));
if (path == _T("default")) return AegisubApp::folderName;
if (path == _T("default")) return StandardPaths::DecodePath(_T("?temp/"));
// Specified
return DecodeRelativePath(path,AegisubApp::folderName);
return DecodeRelativePath(path,StandardPaths::DecodePath(_T("?user/")));
}

View File

@ -38,6 +38,7 @@
#include "options.h"
#include "string_codec.h"
#include "ass_file.h"
#include "standard_paths.h"
#include <wx/filename.h>
#include <wx/dir.h>
#include <wx/dialog.h>
@ -515,7 +516,7 @@ namespace Automation4 {
wxStringTokenizer toker(Options.AsText(_T("Automation Include Path")), _T("|"), wxTOKEN_STRTOK);
while (toker.HasMoreTokens()) {
// todo? make some error reporting here
wxFileName path(toker.GetNextToken());
wxFileName path(StandardPaths::DecodePath(toker.GetNextToken()));
if (!path.IsOk()) continue;
if (path.IsRelative()) continue;
if (!path.DirExists()) continue;
@ -648,18 +649,18 @@ namespace Automation4 {
wxStringTokenizer tok(path, _T("|"), wxTOKEN_STRTOK);
while (tok.HasMoreTokens()) {
wxDir dir;
wxString dirname = tok.GetNextToken();
wxString dirname = StandardPaths::DecodePath(tok.GetNextToken());
if (!dir.Exists(dirname)) {
wxLogWarning(_T("A directory was specified in the Automation autoload path, but it doesn't exist: %s"), dirname.c_str());
//wxLogWarning(_T("A directory was specified in the Automation autoload path, but it doesn't exist: %s"), dirname.c_str());
continue;
}
if (!dir.Open(dirname)) {
wxLogWarning(_T("Failed to open a directory in the Automation autoload path: %s"), dirname.c_str());
//wxLogWarning(_T("Failed to open a directory in the Automation autoload path: %s"), dirname.c_str());
continue;
}
wxString fn;
wxFileName script_path(path, _T(""));
wxFileName script_path(dirname + _T("/"), _T(""));
bool more = dir.GetFirst(&fn, wxEmptyString, wxDIR_FILES);
while (more) {
script_path.SetName(fn);

View File

@ -41,7 +41,7 @@
#include <wx/fontdlg.h>
#include "browse_button.h"
#include "utils.h"
#include "main.h"
#include "standard_paths.h"
///////////////
@ -68,8 +68,8 @@ void BrowseButton::Bind(wxTextCtrl *control,int pos) {
void BrowseButton::OnPressed(wxCommandEvent &event) {
// Folder
if (type == BROWSE_FOLDER) {
wxString def = DecodeRelativePath(ctrl[0]->GetValue(),AegisubApp::folderName);
wxString dir = MakeRelativePath(wxDirSelector(_("Please choose the folder:"),def),AegisubApp::folderName);
wxString def = DecodeRelativePath(ctrl[0]->GetValue(),StandardPaths::DecodePath(_T("?user/")));
wxString dir = MakeRelativePath(wxDirSelector(_("Please choose the folder:"),def),StandardPaths::DecodePath(_T("?user/")));
if (dir != _T("")) ctrl[0]->SetValue(dir);
}

View File

@ -44,8 +44,9 @@
#endif
#include "options.h"
#include <wx/spinctrl.h>
#include <wx/stdpaths.h>
#include "frame_main.h"
#include "main.h"
#include "standard_paths.h"
#include "validators.h"
#include "colour_button.h"
#include "subs_edit_box.h"
@ -709,7 +710,10 @@ void DialogOptions::OnOK(wxCommandEvent &event) {
int answer = wxMessageBox(_("Aegisub must restart for the changes to take effect. Restart now?"),_("Restart Aegisub"),wxYES_NO);
if (answer == wxYES) {
FrameMain *frame = (FrameMain*) GetParent();
if (frame->Close()) wxExecute(AegisubApp::fullPath);
if (frame->Close()) {
wxStandardPaths stand;
wxExecute(stand.GetExecutablePath());
}
}
}
}
@ -739,7 +743,10 @@ void DialogOptions::OnCancel(wxCommandEvent &event) {
int answer = wxMessageBox(_("Aegisub must restart for the changes to take effect. Restart now?"),_("Restart Aegisub"),wxYES_NO);
if (answer == wxYES) {
FrameMain *frame = (FrameMain*) GetParent();
if (frame->Close()) wxExecute(AegisubApp::fullPath);
if (frame->Close()) {
wxStandardPaths stand;
wxExecute(stand.GetExecutablePath());
}
}
}
}
@ -871,7 +878,10 @@ void DialogOptions::WriteToOptions(bool justApply) {
int answer = wxMessageBox(_("Aegisub must restart for the changes to take effect. Restart now?"),_("Restart Aegisub"),wxYES_NO);
if (answer == wxYES) {
FrameMain *frame = (FrameMain*) GetParent();
if (frame->Close()) wxExecute(AegisubApp::fullPath);
if (frame->Close()) {
wxStandardPaths stand;
wxExecute(stand.GetExecutablePath());
}
}
}
}

View File

@ -40,21 +40,19 @@
#include <algorithm>
#include <string>
#include <wx/filename.h>
#include <wx/filefn.h>
#include "dialog_shift_times.h"
#include "video_display.h"
#include "vfr.h"
#include "subs_grid.h"
#include "options.h"
#include "main.h"
#include "standard_paths.h"
#include "ass_file.h"
#include "ass_time.h"
#include "ass_dialogue.h"
#include "subs_edit_box.h"
#define SHIFT_HISTORY_FILE (AegisubApp::folderName + _T("shift_history.txt"))
///////////////
// Constructor
DialogShiftTimes::DialogShiftTimes (wxWindow *parent,SubtitlesGrid *_grid)
@ -172,7 +170,7 @@ DialogShiftTimes::DialogShiftTimes (wxWindow *parent,SubtitlesGrid *_grid)
}
// Load history
LoadHistory(SHIFT_HISTORY_FILE);
LoadHistory(StandardPaths::DecodePath(_T("?user/shift_history.txt")));
}
@ -190,7 +188,7 @@ END_EVENT_TABLE()
/////////////////
// Clear History
void DialogShiftTimes::OnClear(wxCommandEvent &event) {
remove(SHIFT_HISTORY_FILE.mb_str(wxConvLocal));
wxRemoveFile(StandardPaths::DecodePath(_T("?user/shift_history.txt")));
History->Clear();
}

View File

@ -44,7 +44,7 @@
#include "ass_style.h"
#include "ass_file.h"
#include "ass_dialogue.h"
#include "main.h"
#include "standard_paths.h"
#include "options.h"
#include "subs_grid.h"
@ -203,8 +203,7 @@ void DialogStyleManager::LoadCatalog () {
CatalogList->Clear();
// Create catalog if it doesn't exist
wxString dirname = AegisubApp::folderName;
dirname += _T("/catalog/");
wxString dirname = StandardPaths::DecodePath(_T("?user/catalog/"));
if (!wxDirExists(dirname)) {
if (!wxMkdir(dirname)) {
throw _T("Error creating directory!");
@ -219,8 +218,7 @@ void DialogStyleManager::LoadCatalog () {
}
// Get dir
dirname = AegisubApp::folderName;
dirname += _T("/catalog/*.sty");
dirname = StandardPaths::DecodePath(_T("?user/catalog/*.sty"));
// Populate
wxString curfile = wxFindFirstFile(dirname,wxFILE);
@ -411,8 +409,7 @@ void DialogStyleManager::OnCatalogNew (wxCommandEvent &event) {
StorageActions(true);
// Save
wxString dirname = AegisubApp::folderName;
dirname += _T("/catalog/");
wxString dirname = StandardPaths::DecodePath(_T("?user/catalog/"));
if (!wxDirExists(dirname)) {
if (!wxMkdir(dirname)) {
throw _T("Error creating directory!");
@ -435,11 +432,7 @@ void DialogStyleManager::OnCatalogDelete (wxCommandEvent &event) {
message += _("\" from the catalog?");
int option = wxMessageBox(message, _("Confirm delete"), wxYES_NO | wxICON_EXCLAMATION , this);
if (option == wxYES) {
wxString filename = AegisubApp::folderName;
filename += _T("/catalog/");
filename += name;
filename += _T(".sty");
wxRemoveFile(filename);
wxRemoveFile(StandardPaths::DecodePath(_T("?user/catalog/") + name + _T(".sty")));
CatalogList->Delete(sel);
StorageList->Clear();
StorageActions(false);

View File

@ -596,7 +596,7 @@ void FrameMain::LoadSubtitles (wxString filename,wxString charset) {
wxString path = Options.AsText(_T("Auto backup path"));
if (path.IsEmpty()) path = origfile.GetPath();
wxFileName dstpath(path);
if (!dstpath.IsAbsolute()) path = AegisubApp::folderName + path;
if (!dstpath.IsAbsolute()) path = StandardPaths::DecodePath(_T("?user/") + path);
path += _T("/");
dstpath.Assign(path);
if (!dstpath.DirExists()) wxMkdir(path);
@ -1140,7 +1140,7 @@ void FrameMain::OpenHelp(wxString page) {
if (!page.IsEmpty()) page = _T("::") + page;
wxFileType *type = wxTheMimeTypesManager->GetFileTypeFromExtension(_T("chm"));
if (type) {
wxString command = type->GetOpenCommand(AegisubApp::folderName + _T("Aegisub.chm"));
wxString command = type->GetOpenCommand(StandardPaths::DecodePath(_T("?data/Aegisub.chm")));
if (!command.empty()) wxExecute(command + page);
}
}

View File

@ -41,6 +41,7 @@
#include <wx/filename.h>
#include <wx/tglbtn.h>
#include <wx/rawbmp.h>
#include <wx/stdpaths.h>
#include "subs_grid.h"
#include "frame_main.h"
#include "video_display.h"
@ -80,6 +81,7 @@
#include "dialog_dummy_video.h"
#include "dialog_spellchecker.h"
#include "dialog_associations.h"
#include "standard_paths.h"
////////////////////
@ -1352,7 +1354,7 @@ void FrameMain::OnAutoSave(wxTimerEvent &event) {
wxString path = Options.AsText(_T("Auto save path"));
if (path.IsEmpty()) path = origfile.GetPath();
wxFileName dstpath(path);
if (!dstpath.IsAbsolute()) path = AegisubApp::folderName + path;
if (!dstpath.IsAbsolute()) path = StandardPaths::DecodePath(_T("?user/") + path);
path += _T("/");
dstpath.Assign(path);
if (!dstpath.DirExists()) wxMkdir(path);
@ -1517,7 +1519,10 @@ void FrameMain::OnChooseLanguage (wxCommandEvent &event) {
int result = wxMessageBox(_T("Aegisub needs to be restarted so that the new language can be applied. Restart now?"),_T("Restart Aegisub?"),wxICON_QUESTION | wxYES_NO);
if (result == wxYES) {
// Restart Aegisub
if (Close()) wxExecute(AegisubApp::fullPath);
if (Close()) {
wxStandardPaths stand;
wxExecute(stand.GetExecutablePath());
}
}
}
}

View File

@ -42,6 +42,7 @@
#include <wx/msgdlg.h>
#include <wx/mimetype.h>
#include <wx/utils.h>
#include <wx/stdpaths.h>
#include "main.h"
#include "frame_main.h"
#include "options.h"
@ -58,6 +59,7 @@
#include "auto4_base.h"
#include "subtitle_format.h"
#include "video_context.h"
#include "standard_paths.h"
///////////////////
@ -85,14 +87,12 @@ bool AegisubApp::OnInit() {
#endif
// Set config file
GetFullPath(argv[0]);
GetFolderName();
Options.SetFile(folderName + _T("/config.dat"));
Options.SetFile(StandardPaths::DecodePath(_T("?user/config.dat")));
Options.Load();
AssTime::UseMSPrecision = Options.AsBool(_T("Use nonstandard Milisecond Times"));
// Set hotkeys file
Hotkeys.SetFile(folderName + _T("/hotkeys.dat"));
Hotkeys.SetFile(StandardPaths::DecodePath(_T("?user/hotkeys.dat")));
Hotkeys.Load();
#ifdef __WINDOWS__
@ -217,7 +217,7 @@ void StackWalker::OnStackFrame(const wxStackFrame &frame) {
}
StackWalker::StackWalker() {
file.open(wxString(AegisubApp::folderName + _T("/stack.txt")).mb_str(),std::ios::out | std::ios::app);
file.open(wxString(StandardPaths::DecodePath(_T("?user/stack.txt"))).mb_str(),std::ios::out | std::ios::app);
if (file.is_open()) {
file << std::endl << "Begining stack dump:\n";
}
@ -268,7 +268,9 @@ void AegisubApp::RegistryAssociate () {
#if defined(__WINDOWS__)
// Command to open with this
wxString command;
command << _T("\"") << fullPath << _T("\" \"%1\"");
wxStandardPaths stand;
wxString fullPath = stand.GetExecutablePath();
command = _T("\"") + fullPath + _T("\" \"%1\"");
// Main program association
wxRegKey *key = new wxRegKey(_T("HKEY_CURRENT_USER\\Software\\Classes\\Aegisub"));
@ -317,66 +319,6 @@ void AegisubApp::RegistryAssociate () {
}
/////////////////////////////
// Gets and stores full path
void AegisubApp::GetFullPath(wxString arg) {
if (wxIsAbsolutePath(arg)) {
fullPath = arg;
return;
}
// Is it a relative path?
wxString currentDir(wxFileName::GetCwd());
if (currentDir.Last() != wxFILE_SEP_PATH) currentDir += wxFILE_SEP_PATH;
wxString str = currentDir + arg;
if (wxFileExists(str)) {
fullPath = str;
return;
}
// OK, it's neither an absolute path nor a relative path.
// Search PATH.
wxPathList pathList;
pathList.AddEnvList(_T("PATH"));
str = pathList.FindAbsoluteValidPath(arg);
if (!str.IsEmpty()) {
fullPath = str;
return;
}
fullPath = _T("");
return;
}
///////////////////////////////////
// Gets folder name from full path
void AegisubApp::GetFolderName () {
#if defined(__WINDOWS__)
folderName = _T("");
wxFileName path(fullPath);
#elif defined(__APPLE__)
wxFileName path;
path.AssignHomeDir();
path.AppendDir(_T("Library"));
path.AppendDir(_T("Application Support"));
if (!path.DirExists())
path.Mkdir();
path.AppendDir(_T("Aegisub"));
if (!path.DirExists())
path.Mkdir();
#else
wxFileName path;
path.AssignHomeDir();
path.AppendDir(_T(".aegisub"));
if (!path.DirExists())
path.Mkdir();
#endif
folderName += path.GetPath(wxPATH_GET_VOLUME);
folderName += _T("/");
}
////////////
// Open URL
void AegisubApp::OpenURL(wxString url) {
@ -397,12 +339,6 @@ void AegisubApp::MacOpenFile(const wxString &filename) {
#endif
///////////
// Statics
wxString AegisubApp::fullPath;
wxString AegisubApp::folderName;
///////////////
// Event table
BEGIN_EVENT_TABLE(AegisubApp,wxApp)

View File

@ -64,13 +64,9 @@ public:
FrameMain *frame;
Automation4::AutoloadScriptManager *global_scripts;
static wxString fullPath;
static wxString folderName;
static AegisubApp* Get() { return (AegisubApp*) wxTheApp; }
static void OpenURL(wxString url);
void GetFullPath(wxString arg);
void GetFolderName();
void RegistryAssociate();
void AssociateType(wxString type);

View File

@ -42,7 +42,6 @@
#include <wx/intl.h>
#include <wx/settings.h>
#include "options.h"
#include "main.h"
#include "text_file_reader.h"
#include "text_file_writer.h"
#include "colorspace.h"
@ -190,10 +189,9 @@ void OptionsManager::LoadDefaults(bool onlyDefaults) {
// Automation
// The path changes only take effect when a script is (re)loaded but Automatic should be good enough, it certainly doesn't warrart a restart
SetModificationType(MOD_AUTOMATIC);
// TODO: these paths should be different on non-Windows systems
SetText(_T("Automation Base Path"), AegisubApp::folderName + _T("automation/"));
SetText(_T("Automation Include Path"), AegisubApp::folderName + _T("automation/include/"));
SetText(_T("Automation Autoload Path"), AegisubApp::folderName + _T("automation/autoload/"));
SetText(_T("Automation Base Path"), _T("?data/automation/"));
SetText(_T("Automation Include Path"), _T("?user/automation/include/|?data/automation/include/"));
SetText(_T("Automation Autoload Path"), _T("?user/automation/autoload/|?data/automation/include/"));
SetInt(_T("Automation Trace Level"), 3);
SetInt(_T("Automation Thread Priority"), 1); // "below normal"
SetInt(_T("Automation Autoreload Mode"), 0); // never

View File

@ -37,7 +37,7 @@
///////////
// Headers
#include "spellchecker.h"
#include "main.h"
#include "standard_paths.h"
#include "utils.h"
#include "options.h"
#include <hunspell/hunspell.hxx>
@ -228,7 +228,7 @@ wxArrayString HunspellSpellChecker::GetSuggestions(wxString word) {
// Get list of available dictionaries
wxArrayString HunspellSpellChecker::GetLanguageList() {
// Get dir name
wxString path = DecodeRelativePath(Options.AsText(_T("Dictionaries path")),AegisubApp::folderName) + _T("/");
wxString path = DecodeRelativePath(Options.AsText(_T("Dictionaries path")),StandardPaths::DecodePath(_T("?data/"))) + _T("/");
wxArrayString list;
wxFileName folder(path);
if (!folder.DirExists()) return list;
@ -265,7 +265,7 @@ void HunspellSpellChecker::SetLanguage(wxString language) {
if (language.IsEmpty()) return;
// Get dir name
wxString path = DecodeRelativePath(Options.AsText(_T("Dictionaries path")),AegisubApp::folderName) + _T("/");
wxString path = DecodeRelativePath(Options.AsText(_T("Dictionaries path")),StandardPaths::DecodePath(_T("?data/"))) + _T("/");
// Get affix and dictionary paths
affpath = path + language + _T(".aff");

View File

@ -41,7 +41,7 @@
#include <wx/filename.h>
#include "thesaurus_myspell.h"
#include "mythes.hxx"
#include "main.h"
#include "standard_paths.h"
#include "options.h"
#include "utils.h"
@ -94,7 +94,7 @@ void MySpellThesaurus::Lookup(wxString word,ThesaurusEntryArray &result) {
// Get language list
wxArrayString MySpellThesaurus::GetLanguageList() {
// Get dir name
wxString path = DecodeRelativePath(Options.AsText(_T("Dictionaries path")),AegisubApp::folderName) + _T("/");
wxString path = DecodeRelativePath(Options.AsText(_T("Dictionaries path")),StandardPaths::DecodePath(_T("?data/"))) + _T("/");
wxArrayString list;
wxFileName folder(path);
if (!folder.DirExists()) return list;
@ -138,7 +138,7 @@ void MySpellThesaurus::SetLanguage(wxString language) {
if (language.IsEmpty()) return;
// Get dir name
wxString path = DecodeRelativePath(Options.AsText(_T("Dictionaries path")),AegisubApp::folderName) + _T("/");
wxString path = DecodeRelativePath(Options.AsText(_T("Dictionaries path")),StandardPaths::DecodePath(_T("?data/"))) + _T("/");
// Get affix and dictionary paths
wxString idxpath = path + _T("th_") + language + _T(".idx");

View File

@ -65,7 +65,6 @@
#include "options.h"
#include "subs_edit_box.h"
#include "audio_display.h"
#include "main.h"
#include "video_slider.h"
#include "video_box.h"
#include "utils.h"
@ -591,17 +590,10 @@ void VideoContext::SaveSnapshot(bool raw) {
wxString option = Options.AsText(_("Video Screenshot Path"));
wxFileName videoFile(videoName);
wxString basepath;
if (option == _T("?video")) {
basepath = videoFile.GetPath();
if (option[0] == _T('?')) {
basepath = StandardPaths::DecodePath(option);
}
else if (option == _T("?script")) {
if (grid->ass->filename.IsEmpty()) basepath = videoFile.GetPath();
else {
wxFileName file2(grid->ass->filename);
basepath = file2.GetPath();
}
}
else basepath = DecodeRelativePath(option,((AegisubApp*)wxTheApp)->folderName);
else basepath = DecodeRelativePath(option,StandardPaths::DecodePath(_T("?user/")));
basepath += _T("/") + videoFile.GetName();
// Get full path

View File

@ -46,7 +46,7 @@
#include "subtitles_provider.h"
#include "video_context.h"
#include "options.h"
#include "main.h"
#include "standard_paths.h"
#include "vfr.h"
#include "ass_file.h"
#include "gl_wrap.h"
@ -231,7 +231,7 @@ PClip AvisynthVideoProvider::OpenVideo(wxString _filename, bool mpeg2dec3_priori
bool ffsource = false;
if (env->FunctionExists("ffmpegsource")) ffsource = true;
if (!ffsource) {
wxFileName ffsourcepath(AegisubApp::folderName + _T("ffmpegsource.dll"));
wxFileName ffsourcepath(StandardPaths::DecodePath(_T("?data/ffmpegsource.dll")));
if (ffsourcepath.FileExists()) {
AVSTRACE(_T("AvisynthVideoProvider::OpenVideo: Loading FFMpegSource"));
env->Invoke("LoadPlugin",env->SaveString(ffsourcepath.GetFullPath().mb_str(wxConvLocal)));
@ -257,7 +257,7 @@ PClip AvisynthVideoProvider::OpenVideo(wxString _filename, bool mpeg2dec3_priori
bool dss2 = false;
if (env->FunctionExists("dss2")) dss2 = true;
if (!dss2) {
wxFileName dss2path(AegisubApp::folderName + _T("avss.dll"));
wxFileName dss2path(StandardPaths::DecodePath(_T("?data/avss.dll")));
if (dss2path.FileExists()) {
AVSTRACE(_T("AvisynthVideoProvider::OpenVideo: Loading DirectShowSource2"));
env->Invoke("LoadPlugin",env->SaveString(dss2path.GetFullPath().mb_str(wxConvLocal)));
@ -480,7 +480,7 @@ void AvisynthVideoProvider::LoadVSFilter() {
AVSTRACE(_T("AvisynthVideoProvider::LoadVSFilter: Loading VSFilter"));
// Loading an avisynth plugin multiple times does almost nothing
wxFileName vsfilterPath(AegisubApp::folderName + _T("vsfilter.dll"));
wxFileName vsfilterPath(StandardPaths::DecodePath(_T("?data/vsfilter.dll")));
rendererCallString = _T("TextSub");
if (vsfilterPath.FileExists()) {
@ -525,7 +525,7 @@ void AvisynthVideoProvider::LoadASA() {
AVSTRACE(_T("AvisynthVideoProvider::LoadASA: Loading asa"));
// Loading an avisynth plugin multiple times does almost nothing
wxFileName asaPath(AegisubApp::folderName + _T("asa.dll"));
wxFileName asaPath(StandardPaths::DecodePath(_T("?data/asa.dll")));
rendererCallString = _T("asa");
if (asaPath.FileExists()) {