forked from mia/Aegisub
Wildcards in file open dialogs are now generated from the subtitle formats themselves.
Originally committed to SVN as r626.
This commit is contained in:
parent
95059b79bf
commit
a14ab15c94
13 changed files with 202 additions and 9 deletions
|
@ -773,9 +773,14 @@ void AssFile::AddToRecent(wxString file) {
|
||||||
///////////////////////////////
|
///////////////////////////////
|
||||||
// List of supported wildcards
|
// List of supported wildcards
|
||||||
wxString AssFile::GetWildcardList(int mode) {
|
wxString AssFile::GetWildcardList(int mode) {
|
||||||
if (mode == 0) return _T("All Supported Types (*.ass,*.ssa,*.srt,*.txt,*.mkv,*.mks,*.mka)|*.ass;*.ssa;*.srt;*.txt;*.mkv;*.mks;*.mka|Advanced Substation Alpha (*.ass)|*.ass|Substation Alpha (*.ssa)|*.ssa|SubRip (*.srt)|*.srt|Plain-text (*.txt)|*.txt|Matroska (*.mkv,*.mks,*.mka)|*.mkv;*.mks;*.mka");
|
//if (mode == 0) return _T("All Supported Types (*.ass,*.ssa,*.srt,*.txt,*.mkv,*.mks,*.mka)|*.ass;*.ssa;*.srt;*.txt;*.mkv;*.mks;*.mka|Advanced Substation Alpha (*.ass)|*.ass|Substation Alpha (*.ssa)|*.ssa|SubRip (*.srt)|*.srt|Plain-text (*.txt)|*.txt|Matroska (*.mkv,*.mks,*.mka)|*.mkv;*.mks;*.mka");
|
||||||
|
//else if (mode == 1) return _T("Advanced Substation Alpha (*.ass)|*.ass");
|
||||||
|
//else if (mode == 2) return _T("All Supported Types (*.ass,*.ssa,*.srt,*.txt,*.mkv,*.mks,*.mka)|*.ass;*.ssa;*.srt;*.txt|Advanced Substation Alpha (*.ass)|*.ass|Substation Alpha (*.ssa)|*.ssa|SubRip (*.srt)|*.srt|Plain-text (*.txt)|*.txt");
|
||||||
|
//else return _T("");
|
||||||
|
|
||||||
|
if (mode == 0) return SubtitleFormat::GetWildcards(0);
|
||||||
else if (mode == 1) return _T("Advanced Substation Alpha (*.ass)|*.ass");
|
else if (mode == 1) return _T("Advanced Substation Alpha (*.ass)|*.ass");
|
||||||
else if (mode == 2) return _T("All Supported Types (*.ass,*.ssa,*.srt,*.txt,*.mkv,*.mks,*.mka)|*.ass;*.ssa;*.srt;*.txt|Advanced Substation Alpha (*.ass)|*.ass|Substation Alpha (*.ssa)|*.ssa|SubRip (*.srt)|*.srt|Plain-text (*.txt)|*.txt");
|
else if (mode == 2) return SubtitleFormat::GetWildcards(1);
|
||||||
else return _T("");
|
else return _T("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -197,3 +197,60 @@ void SubtitleFormat::Remove() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////
|
||||||
|
// Get read wildcards
|
||||||
|
wxArrayString SubtitleFormat::GetReadWildcards() {
|
||||||
|
return wxArrayString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////
|
||||||
|
// Get write wildcards
|
||||||
|
wxArrayString SubtitleFormat::GetWriteWildcards() {
|
||||||
|
return wxArrayString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////
|
||||||
|
// Get wildcard list
|
||||||
|
wxString SubtitleFormat::GetWildcards(int mode) {
|
||||||
|
// Ensure it's loaded
|
||||||
|
LoadFormats();
|
||||||
|
|
||||||
|
// Variables
|
||||||
|
wxArrayString all;
|
||||||
|
wxArrayString cur;
|
||||||
|
wxString wild;
|
||||||
|
wxString final;
|
||||||
|
|
||||||
|
// For each format
|
||||||
|
std::list<SubtitleFormat*>::iterator curIter;
|
||||||
|
SubtitleFormat *format;
|
||||||
|
for (curIter=formats.begin();curIter!=formats.end();curIter++) {
|
||||||
|
// Get list
|
||||||
|
format = *curIter;
|
||||||
|
if (mode == 0) cur = format->GetReadWildcards();
|
||||||
|
else if (mode == 1) cur = format->GetWriteWildcards();
|
||||||
|
wxString temp1;
|
||||||
|
wxString temp2;
|
||||||
|
|
||||||
|
// Has wildcards
|
||||||
|
if (cur.Count()) {
|
||||||
|
// Process entries
|
||||||
|
for (unsigned int i=0;i<cur.Count();i++) {
|
||||||
|
wild = _T("*.") + cur[i];
|
||||||
|
all.Add(wild);
|
||||||
|
temp1 += wild + _T(",");
|
||||||
|
temp2 += wild + _T(";");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assemble final name
|
||||||
|
final += format->GetName() + _T(" (") + temp1.Left(temp1.Length()-1) + _T(")|") + temp2.Left(temp2.Length()-1) + _T("|");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return final list
|
||||||
|
return final.Left(final.Length()-1);
|
||||||
|
}
|
||||||
|
|
|
@ -72,11 +72,17 @@ protected:
|
||||||
AssFile *GetAssFile() { return assFile; }
|
AssFile *GetAssFile() { return assFile; }
|
||||||
int AddLine(wxString data,wxString group,int lasttime,bool &IsSSA,wxString *outgroup=NULL);
|
int AddLine(wxString data,wxString group,int lasttime,bool &IsSSA,wxString *outgroup=NULL);
|
||||||
|
|
||||||
|
virtual wxString GetName()=0;
|
||||||
|
virtual wxArrayString GetReadWildcards();
|
||||||
|
virtual wxArrayString GetWriteWildcards();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SubtitleFormat();
|
SubtitleFormat();
|
||||||
virtual ~SubtitleFormat();
|
virtual ~SubtitleFormat();
|
||||||
void SetTarget(AssFile *file);
|
void SetTarget(AssFile *file);
|
||||||
|
|
||||||
|
static wxString GetWildcards(int mode);
|
||||||
|
|
||||||
virtual bool CanReadFile(wxString filename) { return false; };
|
virtual bool CanReadFile(wxString filename) { return false; };
|
||||||
virtual bool CanWriteFile(wxString filename) { return false; };
|
virtual bool CanWriteFile(wxString filename) { return false; };
|
||||||
virtual void ReadFile(wxString filename,wxString forceEncoding=_T("")) { };
|
virtual void ReadFile(wxString filename,wxString forceEncoding=_T("")) { };
|
||||||
|
|
|
@ -49,6 +49,33 @@ bool ASSSubtitleFormat::CanReadFile(wxString filename) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////
|
||||||
|
// Get name
|
||||||
|
wxString ASSSubtitleFormat::GetName() {
|
||||||
|
return _T("Advanced Substation Alpha");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////
|
||||||
|
// Get read wildcards
|
||||||
|
wxArrayString ASSSubtitleFormat::GetReadWildcards() {
|
||||||
|
wxArrayString formats;
|
||||||
|
formats.Add(_T("ass"));
|
||||||
|
formats.Add(_T("ssa"));
|
||||||
|
return formats;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////
|
||||||
|
// Get write wildcards
|
||||||
|
wxArrayString ASSSubtitleFormat::GetWriteWildcards() {
|
||||||
|
wxArrayString formats;
|
||||||
|
formats.Add(_T("ass"));
|
||||||
|
formats.Add(_T("ssa"));
|
||||||
|
return formats;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////
|
/////////////
|
||||||
// Read file
|
// Read file
|
||||||
void ASSSubtitleFormat::ReadFile(wxString filename,wxString encoding) {
|
void ASSSubtitleFormat::ReadFile(wxString filename,wxString encoding) {
|
||||||
|
|
|
@ -51,6 +51,10 @@ class AssDialogue;
|
||||||
// ASS reader/writer
|
// ASS reader/writer
|
||||||
class ASSSubtitleFormat : public SubtitleFormat {
|
class ASSSubtitleFormat : public SubtitleFormat {
|
||||||
public:
|
public:
|
||||||
|
wxString GetName();
|
||||||
|
wxArrayString GetReadWildcards();
|
||||||
|
wxArrayString GetWriteWildcards();
|
||||||
|
|
||||||
bool CanReadFile(wxString filename);
|
bool CanReadFile(wxString filename);
|
||||||
void ReadFile(wxString filename,wxString forceEncoding);
|
void ReadFile(wxString filename,wxString forceEncoding);
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,24 @@ bool MKVSubtitleFormat::CanReadFile(wxString filename) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////
|
||||||
|
// Get name
|
||||||
|
wxString MKVSubtitleFormat::GetName() {
|
||||||
|
return _T("Matroska");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////
|
||||||
|
// Get read wildcards
|
||||||
|
wxArrayString MKVSubtitleFormat::GetReadWildcards() {
|
||||||
|
wxArrayString formats;
|
||||||
|
formats.Add(_T("mkv"));
|
||||||
|
formats.Add(_T("mka"));
|
||||||
|
formats.Add(_T("mks"));
|
||||||
|
return formats;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////
|
/////////////
|
||||||
// Read file
|
// Read file
|
||||||
void MKVSubtitleFormat::ReadFile(wxString filename,wxString encoding) {
|
void MKVSubtitleFormat::ReadFile(wxString filename,wxString encoding) {
|
||||||
|
|
|
@ -51,6 +51,9 @@ class AssDialogue;
|
||||||
// ASS reader/writer
|
// ASS reader/writer
|
||||||
class MKVSubtitleFormat : public SubtitleFormat {
|
class MKVSubtitleFormat : public SubtitleFormat {
|
||||||
public:
|
public:
|
||||||
|
wxString GetName();
|
||||||
|
wxArrayString GetReadWildcards();
|
||||||
|
|
||||||
bool CanReadFile(wxString filename);
|
bool CanReadFile(wxString filename);
|
||||||
void ReadFile(wxString filename,wxString forceEncoding);
|
void ReadFile(wxString filename,wxString forceEncoding);
|
||||||
|
|
||||||
|
|
|
@ -71,6 +71,22 @@ bool PRSSubtitleFormat::CanWriteFile(wxString filename) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////
|
||||||
|
// Get name
|
||||||
|
wxString PRSSubtitleFormat::GetName() {
|
||||||
|
return _T("Pre-Rendered Subtitles");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////
|
||||||
|
// Get write wildcards
|
||||||
|
wxArrayString PRSSubtitleFormat::GetWriteWildcards() {
|
||||||
|
wxArrayString formats;
|
||||||
|
formats.Add(_T("prs"));
|
||||||
|
return formats;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//////////////
|
//////////////
|
||||||
// Write file
|
// Write file
|
||||||
void PRSSubtitleFormat::WriteFile(wxString filename,wxString encoding) {
|
void PRSSubtitleFormat::WriteFile(wxString filename,wxString encoding) {
|
||||||
|
|
|
@ -68,6 +68,9 @@ private:
|
||||||
void OptimizeImage(wxImage &image);
|
void OptimizeImage(wxImage &image);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
wxString GetName();
|
||||||
|
wxArrayString GetWriteWildcards();
|
||||||
|
|
||||||
bool CanWriteFile(wxString filename);
|
bool CanWriteFile(wxString filename);
|
||||||
void WriteFile(wxString filename,wxString encoding);
|
void WriteFile(wxString filename,wxString encoding);
|
||||||
};
|
};
|
||||||
|
|
|
@ -50,6 +50,36 @@ bool SRTSubtitleFormat::CanReadFile(wxString filename) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//////////////
|
||||||
|
// Can write?
|
||||||
|
bool SRTSubtitleFormat::CanWriteFile(wxString filename) {
|
||||||
|
return (filename.Right(4).Lower() == _T(".srt"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////
|
||||||
|
// Get name
|
||||||
|
wxString SRTSubtitleFormat::GetName() {
|
||||||
|
return _T("SubRip");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////
|
||||||
|
// Get read wildcards
|
||||||
|
wxArrayString SRTSubtitleFormat::GetReadWildcards() {
|
||||||
|
wxArrayString formats;
|
||||||
|
formats.Add(_T("srt"));
|
||||||
|
return formats;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////
|
||||||
|
// Get write wildcards
|
||||||
|
wxArrayString SRTSubtitleFormat::GetWriteWildcards() {
|
||||||
|
return GetReadWildcards();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////
|
/////////////
|
||||||
// Read file
|
// Read file
|
||||||
void SRTSubtitleFormat::ReadFile(wxString filename,wxString encoding) {
|
void SRTSubtitleFormat::ReadFile(wxString filename,wxString encoding) {
|
||||||
|
@ -126,13 +156,6 @@ void SRTSubtitleFormat::ReadFile(wxString filename,wxString encoding) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//////////////
|
|
||||||
// Can write?
|
|
||||||
bool SRTSubtitleFormat::CanWriteFile(wxString filename) {
|
|
||||||
return (filename.Right(4).Lower() == _T(".srt"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//////////////
|
//////////////
|
||||||
// Write file
|
// Write file
|
||||||
void SRTSubtitleFormat::WriteFile(wxString _filename,wxString encoding) {
|
void SRTSubtitleFormat::WriteFile(wxString _filename,wxString encoding) {
|
||||||
|
|
|
@ -55,6 +55,10 @@ private:
|
||||||
void DialogueToSRT(AssDialogue *current,std::list<AssEntry*>::iterator prev);
|
void DialogueToSRT(AssDialogue *current,std::list<AssEntry*>::iterator prev);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
wxString GetName();
|
||||||
|
wxArrayString GetReadWildcards();
|
||||||
|
wxArrayString GetWriteWildcards();
|
||||||
|
|
||||||
bool CanReadFile(wxString filename);
|
bool CanReadFile(wxString filename);
|
||||||
void ReadFile(wxString filename,wxString forceEncoding);
|
void ReadFile(wxString filename,wxString forceEncoding);
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,29 @@ bool TXTSubtitleFormat::CanWriteFile(wxString filename) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////
|
||||||
|
// Get name
|
||||||
|
wxString TXTSubtitleFormat::GetName() {
|
||||||
|
return _T("Plain-Text");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////
|
||||||
|
// Get read wildcards
|
||||||
|
wxArrayString TXTSubtitleFormat::GetReadWildcards() {
|
||||||
|
wxArrayString formats;
|
||||||
|
formats.Add(_T("txt"));
|
||||||
|
return formats;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////
|
||||||
|
// Get write wildcards
|
||||||
|
wxArrayString TXTSubtitleFormat::GetWriteWildcards() {
|
||||||
|
return GetReadWildcards();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////
|
/////////////
|
||||||
// Read file
|
// Read file
|
||||||
void TXTSubtitleFormat::ReadFile(wxString filename,wxString encoding) { using namespace std;
|
void TXTSubtitleFormat::ReadFile(wxString filename,wxString encoding) { using namespace std;
|
||||||
|
|
|
@ -53,6 +53,10 @@ class TXTSubtitleFormat : public SubtitleFormat {
|
||||||
private:
|
private:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
wxString GetName();
|
||||||
|
wxArrayString GetReadWildcards();
|
||||||
|
wxArrayString GetWriteWildcards();
|
||||||
|
|
||||||
bool CanReadFile(wxString filename);
|
bool CanReadFile(wxString filename);
|
||||||
bool CanWriteFile(wxString filename);
|
bool CanWriteFile(wxString filename);
|
||||||
void ReadFile(wxString filename,wxString forceEncoding);
|
void ReadFile(wxString filename,wxString forceEncoding);
|
||||||
|
|
Loading…
Reference in a new issue