diff --git a/core/changelog.txt b/core/changelog.txt index 8e9c3eb9f..a6f0cef0f 100644 --- a/core/changelog.txt +++ b/core/changelog.txt @@ -29,6 +29,7 @@ Please visit http://aegisub.net to download latest version - Times can now be copy and pasted with ctrl+c and ctrl+v, as well as from context menu, in the time edit boxes. (AMZ) - Plain-text lines can now be pasted into the grid. They will be inserted as default lines with the text as their content. (AMZ) - Added Paste Over function, which allows you to paste subtitle lines over others, overwriting the fields of your choice. (AMZ) +- Renaming a style will now ask you if you want to rename all instances of it on the script. (AMZ) = 1.10 beta - 2006.08.07 =========================== diff --git a/core/dialog_style_editor.cpp b/core/dialog_style_editor.cpp index 2ad1aaf17..0243b5b64 100644 --- a/core/dialog_style_editor.cpp +++ b/core/dialog_style_editor.cpp @@ -39,8 +39,10 @@ #include #include #include "dialog_style_editor.h" +#include "ass_dialogue.h" #include "ass_style.h" #include "ass_file.h" +#include "ass_override.h" #include "validators.h" #include "subs_grid.h" #include "utils.h" @@ -356,11 +358,55 @@ void DialogStyleEditor::OnSetColor3 (wxCommandEvent &event) { OnSetColor(3); } void DialogStyleEditor::OnSetColor4 (wxCommandEvent &event) { OnSetColor(4); } +///////////////// +// Replace Style +void ReplaceStyle(wxString tag,int n,AssOverrideParameter* param,void *userData) { + wxArrayString strings = *((wxArrayString*)userData); + if (tag == _T("\\r")) { + if (param->GetType() == VARDATA_TEXT) { + if (param->AsText() == strings[0]) { + param->SetText(strings[1]); + } + } + } +} + + ////////// // Events void DialogStyleEditor::Apply (bool apply,bool close) { // Apply if (apply) { + // Style name + wxString newStyleName = StyleName->GetValue(); + if (work->name != newStyleName) { + // See if user wants to update style name through script + int answer = wxMessageBox(_T("Do you want to change all instances of this style in the script to this new name?"),_T("Update script?"),wxYES_NO | wxCANCEL); + + // Cancel + if (answer == wxCANCEL) return; + + // Update + if (answer == wxYES) { + int n = grid->GetRows(); + wxArrayString strings; + strings.Add(work->name); + strings.Add(newStyleName); + for (int i=0;iGetDialogue(i); + if (curDiag->Style == work->name) curDiag->Style = newStyleName; + curDiag->ParseASSTags(); + curDiag->ProcessParameters(ReplaceStyle,&strings); + curDiag->UpdateText(); + curDiag->UpdateData(); + curDiag->ClearBlocks(); + } + } + + // Change name + work->name = newStyleName; + } + // Update scale ScaleX->GetValue().ToDouble(&(work->scalex)); ScaleY->GetValue().ToDouble(&(work->scaley)); @@ -411,9 +457,6 @@ void DialogStyleEditor::Apply (bool apply,bool close) { work->font = FontName->GetValue(); FontSize->GetValue().ToDouble(&(work->fontsize)); - // Style name - work->name = StyleName->GetValue(); - // Copy *style = *work; style->UpdateData();