diff --git a/aegisub/src/ass_dialogue.cpp b/aegisub/src/ass_dialogue.cpp index a52b55f9f..28d40fb7c 100644 --- a/aegisub/src/ass_dialogue.cpp +++ b/aegisub/src/ass_dialogue.cpp @@ -59,7 +59,6 @@ AssDialogue::AssDialogue() , Text("") { group = "[Events]"; - Valid = true; for (int i=0;i<4;i++) Margin[i] = 0; } @@ -75,7 +74,6 @@ AssDialogue::AssDialogue(AssDialogue const& that) , Text(that.Text) { group = that.group; - Valid = that.Valid; for (int i=0;i<4;i++) Margin[i] = that.Margin[i]; } @@ -93,20 +91,19 @@ AssDialogue::AssDialogue(wxString _data,int version) , Text("") { group = "[Events]"; - Valid = false; + bool valid = false; // Try parsing in different ways int count = 0; - while (!Valid && count < 3) { - Valid = Parse(_data,version); + while (!valid && count < 3) { + valid = Parse(_data,version); count++; version++; if (version > 2) version = 0; } // Not valid - if (!Valid) { + if (!valid) throw "Failed parsing line."; - } } AssDialogue::~AssDialogue () { diff --git a/aegisub/src/ass_entry.cpp b/aegisub/src/ass_entry.cpp index 4e351d309..adb4688f3 100644 --- a/aegisub/src/ass_entry.cpp +++ b/aegisub/src/ass_entry.cpp @@ -34,60 +34,25 @@ /// @ingroup subs_storage /// - -/////////// -// Headers #include "config.h" -#include "ass_attachment.h" -#include "ass_dialogue.h" #include "ass_entry.h" -#include "ass_style.h" - -/// @brief Constructs AssEntry -AssEntry::AssEntry() { - Valid = true; -} - -/// @brief DOCME -/// @param _data -/// -AssEntry::AssEntry(wxString _data) { - data = _data; - Valid = true; -} - -/// @brief Destructor for AssEntry -/// -AssEntry::~AssEntry() { -} - -/// @brief Get SSA conversion -/// @return -/// wxString AssEntry::GetSSAText() const { + wxString lower = data.Lower(); + // Special cases - if (data.Lower() == "[v4+ styles]") return wxString("[V4 Styles]"); - if (data.Lower() == "scripttype: v4.00+") return wxString("ScriptType: v4.00"); - if (data.Lower().Left(7) == "format:") { - if (group.Lower() == "[events]") return wxString("Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text"); - if (group.Lower() == "[v4+ styles]") return wxString("Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding"); + if (lower == "[v4+ styles]") return "[V4 Styles]"; + if (lower == "scripttype: v4.00+") return "ScriptType: v4.00"; + if (lower.Left(7) == "format:") { + if (group.Lower() == "[events]") return "Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text"; + if (group.Lower() == "[v4+ styles]") return "Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding"; } return GetEntryData(); } -/// @brief Clone -/// AssEntry *AssEntry::Clone() const { - // Create clone - AssEntry *final = new AssEntry(); - - // Copy data - final->data = data; + AssEntry *final = new AssEntry(data); final->group = group; - final->Valid = Valid; - - // Return return final; } diff --git a/aegisub/src/ass_entry.h b/aegisub/src/ass_entry.h index f92b5b05a..871b6e56e 100644 --- a/aegisub/src/ass_entry.h +++ b/aegisub/src/ass_entry.h @@ -37,41 +37,23 @@ #pragma once - -/////////// -// Headers #ifndef AGI_PRE #include #endif #include -////////////// -// Prototypes class AssDialogue; class AssStyle; class AssAttachment; - - -/// DOCME enum ASS_EntryType { - - /// DOCME ENTRY_BASE, - - /// DOCME ENTRY_DIALOGUE, - - /// DOCME ENTRY_STYLE, - - /// DOCME ENTRY_ATTACHMENT }; - - /// @see aegisub.h namespace Aegisub { @@ -82,60 +64,40 @@ namespace Aegisub { /// DOCME class InvalidMarginIdError : public agi::InternalError { public: - - /// @brief DOCME - /// @return - /// InvalidMarginIdError() : InternalError("Invalid margin id", 0) { } - - /// @brief DOCME - /// @return - /// const char *GetName() const { return "internal_error/invalid_margin_id"; } }; } - - /// DOCME /// @class AssEntry /// @brief DOCME /// /// DOCME class AssEntry { -private: - - /// DOCME - wxString data; // Raw data, exactly the same line that appears on the .ass (note that this will be in ass even if source wasn't) + /// Raw data, exactly the same line that appears on the .ass (note that this will be in ass even if source wasn't) + wxString data; public: + /// Group it belongs to, e.g. "[Events]" + wxString group; - /// DOCME - bool Valid; // Flags as valid or not - - /// DOCME - wxString group; // Group it belongs to, e.g. "[Events]" - - AssEntry(); - AssEntry(wxString data); - virtual ~AssEntry(); + AssEntry(wxString const& data = "") : data(data) { } + virtual ~AssEntry() { } + /// Create a copy of this entry virtual AssEntry *Clone() const; - /// @brief DOCME - /// @return - /// + /// Get this entry's fully-derived type virtual ASS_EntryType GetType() const { return ENTRY_BASE; } - /// @brief DOCME - /// @return - /// + /// @brief Get this line's raw entry data in ASS format virtual const wxString GetEntryData() const { return data; } - /// @brief DOCME - /// @param newData - /// - virtual void SetEntryData(wxString newData) { data = newData; } + /// @brief Set this line's raw entry data + /// @param newData New raw entry data + virtual void SetEntryData(wxString const& newData) { data = newData; } + /// Get this line in SSA format virtual wxString GetSSAText() const; }; diff --git a/aegisub/src/ass_style.cpp b/aegisub/src/ass_style.cpp index 1305c7ed7..2be702bfb 100644 --- a/aegisub/src/ass_style.cpp +++ b/aegisub/src/ass_style.cpp @@ -203,10 +203,8 @@ AssStyle::AssStyle(const AssStyle& s) } AssStyle::AssStyle(wxString _data,int version) { - Valid = Parse(_data,version); - if (!Valid) { + if (!Parse(_data,version)) throw "[Error] Failed parsing line."; - } UpdateData(); } diff --git a/aegisub/src/dialog_style_manager.cpp b/aegisub/src/dialog_style_manager.cpp index 2496460a9..904eb4bb8 100644 --- a/aegisub/src/dialog_style_manager.cpp +++ b/aegisub/src/dialog_style_manager.cpp @@ -301,15 +301,11 @@ void DialogStyleManager::LoadCatalog () { /// @brief Load the list of styles from a subtitle file void DialogStyleManager::LoadCurrentStyles (AssFile *subs) { - using std::list; - AssStyle *style; - CurrentList->Clear(); styleMap.clear(); - for (list::iterator cur=subs->Line.begin();cur!=subs->Line.end();cur++) { - style = dynamic_cast(*cur); - if (style && style->Valid) { + for (std::list::iterator cur=subs->Line.begin();cur!=subs->Line.end();cur++) { + if (AssStyle *style = dynamic_cast(*cur)) { CurrentList->Append(style->name); styleMap.push_back(style); } @@ -319,14 +315,11 @@ void DialogStyleManager::LoadCurrentStyles (AssFile *subs) { /// @brief Load the list of styles from the currently active storage void DialogStyleManager::LoadStorageStyles () { - using std::list; - StorageList->Clear(); styleStorageMap.clear(); - for (list::iterator cur=Store.style.begin();cur!=Store.style.end();cur++) { - AssStyle *style = *cur; - if (style && style->Valid) { + for (std::list::iterator cur=Store.style.begin();cur!=Store.style.end();cur++) { + if (AssStyle *style = *cur) { StorageList->Append(style->name); styleStorageMap.push_back(style); } @@ -657,24 +650,17 @@ void DialogStyleManager::PasteToCurrent() { wxStringTokenizer st(data,'\n'); while (st.HasMoreTokens()) { - AssStyle *s = NULL; try { - s = new AssStyle(st.GetNextToken().Trim(true)); - if (s->Valid) { - while (c->ass->GetStyle(s->name) != NULL) - s->name = "Copy of " + s->name; + AssStyle *s = new AssStyle(st.GetNextToken().Trim(true)); + while (c->ass->GetStyle(s->name) != NULL) + s->name = "Copy of " + s->name; - s->UpdateData(); - c->ass->InsertStyle(s); - LoadCurrentStyles(c->ass); + c->ass->InsertStyle(s); + LoadCurrentStyles(c->ass); - c->ass->Commit(_("style paste"), AssFile::COMMIT_STYLES); - } - else - wxMessageBox(_("Could not parse style"), _("Could not parse style"), wxOK | wxICON_EXCLAMATION , this); + c->ass->Commit(_("style paste"), AssFile::COMMIT_STYLES); } catch (...) { - delete s; wxMessageBox(_("Could not parse style"), _("Could not parse style"), wxOK | wxICON_EXCLAMATION , this); } @@ -696,25 +682,18 @@ void DialogStyleManager::PasteToStorage() { wxStringTokenizer st(data,'\n'); while (st.HasMoreTokens()) { - AssStyle *s = NULL; try { - s = new AssStyle(st.GetNextToken().Trim(true)); - if (s->Valid) { - while (Store.GetStyle(s->name) != NULL) - s->name = "Copy of " + s->name; + AssStyle *s = new AssStyle(st.GetNextToken().Trim(true)); + while (Store.GetStyle(s->name) != NULL) + s->name = "Copy of " + s->name; - s->UpdateData(); - Store.style.push_back(s); - Store.Save(CatalogList->GetString(CatalogList->GetSelection())); + Store.style.push_back(s); + Store.Save(CatalogList->GetString(CatalogList->GetSelection())); - LoadStorageStyles(); - StorageList->SetStringSelection(s->name); - } - else - wxMessageBox(_("Could not parse style"), _("Could not parse style"), wxOK | wxICON_EXCLAMATION , this); + LoadStorageStyles(); + StorageList->SetStringSelection(s->name); } catch(...) { - delete s; wxMessageBox(_("Could not parse style"), _("Could not parse style"), wxOK | wxICON_EXCLAMATION , this); } } diff --git a/aegisub/src/subs_edit_box.cpp b/aegisub/src/subs_edit_box.cpp index 0ea4cead2..f6a3a594e 100644 --- a/aegisub/src/subs_edit_box.cpp +++ b/aegisub/src/subs_edit_box.cpp @@ -691,7 +691,6 @@ int SubsEditBox::BlockAtPos(wxString const& text, int pos) const { void SubsEditBox::SetTag(wxString tag, wxString value, bool atEnd) { assert(line); - assert(line->Valid); if (line->Blocks.empty()) line->ParseASSTags();