Font override on subs edit box now supports \fs

Originally committed to SVN as r101.
This commit is contained in:
Rodrigo Braz Monteiro 2006-02-21 22:32:51 +00:00
parent 87307940ca
commit 493ebbcbb1
1 changed files with 11 additions and 146 deletions

View File

@ -995,150 +995,6 @@ int SubsEditBox::BlockAtPos(int pos) {
} }
///////////////
// Set a color
//void SubsEditBox::SetOverride(wxString tagname,wxString preValue,int forcePos) {
// // Check if it's enabled
// if (!enabled) return;
//
// // Selection
// long selstart, selend;
// if (forcePos != -1) {
// selstart = forcePos;
// selend = forcePos;
// }
// else TextEdit->GetSelection(&selstart,&selend);
//
// // Get block at start
// size_t blockn = BlockAtPos(selstart);
// AssDialogue *line = new AssDialogue();
// line->Text = TextEdit->GetValue();
// line->ParseASSTags();
// AssDialogueBlock *block = line->Blocks.at(blockn);
//
// // Current tag name
// wxString alttagname = tagname;
// if (tagname == _T("\\1c")) tagname = _T("\\c");
//
// // Prepare defaults
// bool isColor = false;
// bool isFont = false;
// bool isPos = false;
// wxColour startcolor;
// wxString startfont;
// AssStyle *style = AssFile::top->GetStyle(grid->GetDialogue(linen)->Style);
// AssStyle defStyle;
// if (style == NULL) style = &defStyle;
//
// // Get default parameter from tag type
// if (tagname == _T("\\c")) {
// startcolor = style->primary.GetWXColor();
// isColor = true;
// }
// else if (tagname == _T("\\2c")) {
// startcolor = style->secondary.GetWXColor();
// isColor = true;
// }
// else if (tagname == _T("\\3c")) {
// startcolor = style->outline.GetWXColor();
// isColor = true;
// }
// else if (tagname == _T("\\4c")) {
// startcolor = style->shadow.GetWXColor();
// isColor = true;
// }
// else if (tagname == _T("\\fn")) {
// startfont = style->font;
// isFont = true;
// }
// else if (tagname == _T("\\pos")) {
// isPos = true;
// }
//
// // Find current value
// AssDialogueBlockOverride *override;
// AssOverrideTag *tag;
// if (isFont || isColor) {
// for (size_t i=0;i<=blockn;i++) {
// override = AssDialogueBlock::GetAsOverride(line->Blocks.at(i));
// if (override) {
// for (size_t j=0;j<override->Tags.size();j++) {
// tag = override->Tags.at(j);
// if (tag->Name == tagname || tag->Name == alttagname) {
// if (isColor) startcolor = tag->Params.at(0)->AsColour();
// if (isFont) startfont = tag->Params.at(0)->AsText();
// }
// }
// }
// }
// }
//
// // String to be insert
// wxString insert;
//
// // Choose color
// if (isColor) {
// // Pick from dialog
// //wxColour color = wxGetColourFromUser(this,startcolor);
// wxColour color = GetColorFromUser(this, startcolor);
// if (!color.Ok() || color == startcolor) return;
//
// // Generate insert string
// AssColor asscolor(color);
// insert = tagname + asscolor.GetASSFormatted(false);
// }
//
// // Choose font
// if (isFont) {
// // Pick from dialog
// wxFont origFont;
// origFont.SetFaceName(startfont);
// wxFont font = wxGetFontFromUser(this,origFont);
// if (!font.Ok()) return;
//
// // Generate insert string
// insert = tagname + font.GetFaceName();
// }
//
// // Pos
// if (isPos) {
// insert = tagname + preValue;
// }
//
// // Get current block as plain or override
// AssDialogueBlockPlain *plain = AssDialogueBlock::GetAsPlain(block);
// override = AssDialogueBlock::GetAsOverride(block);
//
// // Plain
// if (plain) {
// // Insert in text
// line->Text = line->Text.Left(selstart) + _T("{") + insert + _T("}") + line->Text.Mid(selstart);
// }
//
// // Override
// else if (override) {
// // Insert new tag
// override->text += insert;
// override->ParseTags();
//
// // Remove old of same
// for (size_t i=0;i<override->Tags.size()-1;i++) {
// if (override->Tags.at(i)->Name == tagname || override->Tags.at(i)->Name == alttagname) {
// override->Tags.erase(override->Tags.begin() + i);
// i--;
// }
// }
//
// // Update line
// line->UpdateText();
// }
//
// // Commit changes
// SetText(line->Text);
// TextEdit->SetFocus();
//}
//////////////// ////////////////
// Set override // Set override
void SubsEditBox::SetOverride (wxString tagname,wxString preValue,int forcePos) { void SubsEditBox::SetOverride (wxString tagname,wxString preValue,int forcePos) {
@ -1172,6 +1028,7 @@ void SubsEditBox::SetOverride (wxString tagname,wxString preValue,int forcePos)
// Default value // Default value
wxColour startcolor; wxColour startcolor;
wxString startfont; wxString startfont;
int startfontpoint;
bool isColor = false; bool isColor = false;
bool isFont = false; bool isFont = false;
bool isPos = false; bool isPos = false;
@ -1197,7 +1054,9 @@ void SubsEditBox::SetOverride (wxString tagname,wxString preValue,int forcePos)
isFlag = true; isFlag = true;
} }
else if (tagname == _T("\\fn")) { else if (tagname == _T("\\fn")) {
alttagname = _T("\\fs");
startfont = style->font; startfont = style->font;
startfontpoint = style->fontsize;
isFont = true; isFont = true;
} }
else if (tagname == _T("\\c")) { else if (tagname == _T("\\c")) {
@ -1229,7 +1088,10 @@ void SubsEditBox::SetOverride (wxString tagname,wxString preValue,int forcePos)
tag = override->Tags.at(j); tag = override->Tags.at(j);
if (tag->Name == tagname || tag->Name == alttagname) { if (tag->Name == tagname || tag->Name == alttagname) {
if (isColor) startcolor = tag->Params.at(0)->AsColour(); if (isColor) startcolor = tag->Params.at(0)->AsColour();
if (isFont) startfont = tag->Params.at(0)->AsText(); if (isFont) {
if (tag->Name == tagname) startfont = tag->Params.at(0)->AsText();
else startfontpoint = tag->Params.at(0)->AsInt();
}
if (isFlag) state = tag->Params.at(0)->AsBool(); if (isFlag) state = tag->Params.at(0)->AsBool();
} }
} }
@ -1265,11 +1127,14 @@ void SubsEditBox::SetOverride (wxString tagname,wxString preValue,int forcePos)
// Pick from dialog // Pick from dialog
wxFont origFont; wxFont origFont;
origFont.SetFaceName(startfont); origFont.SetFaceName(startfont);
origFont.SetPointSize(startfontpoint);
wxFont font = wxGetFontFromUser(this,origFont); wxFont font = wxGetFontFromUser(this,origFont);
if (!font.Ok()) return; if (!font.Ok()) return;
// Generate insert string // Generate insert string
insert = tagname + font.GetFaceName(); if (font.GetFaceName() != startfont) insert = tagname + font.GetFaceName();
if (font.GetPointSize() != startfontpoint) insert += alttagname + wxString::Format(_T("%i"),font.GetPointSize());
if (insert.IsEmpty()) return;
} }
// Pos // Pos