mirror of https://github.com/odrling/Aegisub
Visual typesetting new strips relevant tags before applying changes.
Originally committed to SVN as r787.
This commit is contained in:
parent
956d1d0842
commit
40e113d368
|
@ -579,6 +579,37 @@ void AssDialogue::StripTags () {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////
|
||||||
|
// Strip a specific tag
|
||||||
|
void AssDialogue::StripTag (wxString tagName) {
|
||||||
|
// Parse
|
||||||
|
using std::list;
|
||||||
|
using std::vector;
|
||||||
|
ParseASSTags();
|
||||||
|
wxString final;
|
||||||
|
|
||||||
|
// Look for blocks
|
||||||
|
for (vector<AssDialogueBlock*>::iterator cur=Blocks.begin();cur!=Blocks.end();cur++) {
|
||||||
|
if ((*cur)->type == BLOCK_OVERRIDE) {
|
||||||
|
AssDialogueBlockOverride *over = AssDialogueBlock::GetAsOverride(*cur);
|
||||||
|
wxString temp;
|
||||||
|
for (size_t i=0;i<over->Tags.size();i++) {
|
||||||
|
if (over->Tags[i]->Name != tagName) temp += over->Tags[i]->ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert
|
||||||
|
if (!temp.IsEmpty()) final += _T("{") + temp + _T("}");
|
||||||
|
}
|
||||||
|
else final += (*cur)->GetText();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update
|
||||||
|
ClearBlocks();
|
||||||
|
Text = final;
|
||||||
|
UpdateData();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////
|
///////////////////////
|
||||||
// Convert tags to SRT
|
// Convert tags to SRT
|
||||||
// -------------------
|
// -------------------
|
||||||
|
|
|
@ -181,22 +181,23 @@ public:
|
||||||
bool Parse(wxString data,int version=1); // Parses raw ASS data into everything else
|
bool Parse(wxString data,int version=1); // Parses raw ASS data into everything else
|
||||||
void ParseASSTags(); // Parses text to generate block information (doesn't update data)
|
void ParseASSTags(); // Parses text to generate block information (doesn't update data)
|
||||||
void ParseSRTTags(); // Converts tags to ass format and calls ParseASSTags+UpdateData
|
void ParseSRTTags(); // Converts tags to ass format and calls ParseASSTags+UpdateData
|
||||||
|
void ConvertTagsToSRT(); // Converts tags to SRT format
|
||||||
|
void StripTags(); // Strips all tags from the text
|
||||||
|
void StripTag(wxString tagName);// Strips a specific tag from the text
|
||||||
|
void ClearBlocks(); // Clear all blocks, ALWAYS call this after you're done processing tags
|
||||||
|
void ProcessParameters(void (*callback)(wxString,int,AssOverrideParameter*,void *userData),void *userData=NULL); // Callback to process parameters
|
||||||
|
wxString GetStrippedText(); // Gets text without tags
|
||||||
|
|
||||||
void UpdateData(); // Updates raw data from current values + text
|
void UpdateData(); // Updates raw data from current values + text
|
||||||
void UpdateText(); // Generates text from the override tags
|
void UpdateText(); // Generates text from the override tags
|
||||||
const wxString GetEntryData();
|
const wxString GetEntryData();
|
||||||
void SetEntryData(wxString newData);
|
void SetEntryData(wxString newData);
|
||||||
|
|
||||||
void ConvertTagsToSRT(); // Converts tags to SRT format
|
|
||||||
void StripTags(); // Strips all tags from the text
|
|
||||||
void Clear(); // Wipes all data
|
void Clear(); // Wipes all data
|
||||||
|
|
||||||
void SetMarginString(const wxString value,int which); // Set string to a margin value (0 = left, 1 = right, 2 = vertical/top, 3 = bottom)
|
void SetMarginString(const wxString value,int which); // Set string to a margin value (0 = left, 1 = right, 2 = vertical/top, 3 = bottom)
|
||||||
wxString GetMarginString(int which,bool pad=true); // Returns the string of a margin value (0 = left, 1 = right, 2 = vertical/top, 3 = bottom)
|
wxString GetMarginString(int which,bool pad=true); // Returns the string of a margin value (0 = left, 1 = right, 2 = vertical/top, 3 = bottom)
|
||||||
void ProcessParameters(void (*callback)(wxString,int,AssOverrideParameter*,void *userData),void *userData=NULL); // Callback to process parameters
|
|
||||||
wxString GetSSAText();
|
wxString GetSSAText();
|
||||||
bool CollidesWith(AssDialogue *target); // Checks if two lines collide
|
bool CollidesWith(AssDialogue *target); // Checks if two lines collide
|
||||||
void ClearBlocks();
|
|
||||||
wxString GetStrippedText();
|
|
||||||
|
|
||||||
AssEntry *Clone();
|
AssEntry *Clone();
|
||||||
|
|
||||||
|
|
|
@ -913,6 +913,8 @@ void VideoDisplayVisual::OnMouseEvent (wxMouseEvent &event) {
|
||||||
if (mode == 1) {
|
if (mode == 1) {
|
||||||
startX = x;
|
startX = x;
|
||||||
startY = y;
|
startY = y;
|
||||||
|
curSelection->StripTag(_T("\\pos"));
|
||||||
|
curSelection->StripTag(_T("\\move"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rotate Z
|
// Rotate Z
|
||||||
|
@ -921,6 +923,8 @@ void VideoDisplayVisual::OnMouseEvent (wxMouseEvent &event) {
|
||||||
GetLineRotation(curSelection,rx,ry,rz);
|
GetLineRotation(curSelection,rx,ry,rz);
|
||||||
origAngle = rz;
|
origAngle = rz;
|
||||||
curAngle = rz;
|
curAngle = rz;
|
||||||
|
curSelection->StripTag(_T("\\frz"));
|
||||||
|
curSelection->StripTag(_T("\\fr"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rotate XY
|
// Rotate XY
|
||||||
|
@ -932,6 +936,8 @@ void VideoDisplayVisual::OnMouseEvent (wxMouseEvent &event) {
|
||||||
origAngle2 = ry;
|
origAngle2 = ry;
|
||||||
curAngle = rx;
|
curAngle = rx;
|
||||||
curAngle2 = ry;
|
curAngle2 = ry;
|
||||||
|
curSelection->StripTag(_T("\\frx"));
|
||||||
|
curSelection->StripTag(_T("\\fry"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scale
|
// Scale
|
||||||
|
@ -945,14 +951,21 @@ void VideoDisplayVisual::OnMouseEvent (wxMouseEvent &event) {
|
||||||
origScaleY = scalY;
|
origScaleY = scalY;
|
||||||
curScaleX = scalX;
|
curScaleX = scalX;
|
||||||
curScaleY = scalY;
|
curScaleY = scalY;
|
||||||
|
curSelection->StripTag(_T("\\fscx"));
|
||||||
|
curSelection->StripTag(_T("\\fscy"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clip
|
// Clip
|
||||||
if (mode == 5) {
|
if (mode == 5) {
|
||||||
startX = x;
|
startX = x;
|
||||||
startY = y;
|
startY = y;
|
||||||
|
curSelection->StripTag(_T("\\clip"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Commit changes to edit box
|
||||||
|
grid->editBox->TextEdit->SetTextTo(curSelection->Text);
|
||||||
|
grid->editBox->CommitText(true);
|
||||||
|
|
||||||
// Hold it
|
// Hold it
|
||||||
holding = true;
|
holding = true;
|
||||||
hold = mode;
|
hold = mode;
|
||||||
|
|
Loading…
Reference in New Issue