Finished merging of SSA mode with standard mode and fixed auto-commit to work with it.

Originally committed to SVN as r720.
This commit is contained in:
Rodrigo Braz Monteiro 2007-01-06 03:40:58 +00:00
parent b3ddefa5ee
commit 7bdcb03fba
2 changed files with 37 additions and 35 deletions

View file

@ -495,7 +495,7 @@ void AudioBox::OnPlayToEnd(wxCommandEvent &event) {
// Commit changes // Commit changes
void AudioBox::OnCommit(wxCommandEvent &event) { void AudioBox::OnCommit(wxCommandEvent &event) {
audioDisplay->SetFocus(); audioDisplay->SetFocus();
audioDisplay->CommitChanges(); audioDisplay->CommitChanges(true);
} }

View file

@ -1150,51 +1150,52 @@ void AudioDisplay::CommitChanges (bool nextLine) {
// Loaded? // Loaded?
if (!loaded) return; if (!loaded) return;
// Check validity
bool wasKaraSplitting = false;
bool validCommit = true;
if (!box->audioKaraoke->splitting) { if (!box->audioKaraoke->splitting) {
// Check if there's any need to commit if (!NeedCommit || curEndMS < curStartMS) validCommit = false;
if (!NeedCommit) return;
// Check if selection is valid
if (curEndMS < curStartMS) return;
} }
// Reset flags
diagUpdated = false;
NeedCommit = false;
// Update karaoke // Update karaoke
int karSyl = 0; int karSyl = 0;
bool wasKaraSplitting = false;
if (karaoke->enabled) { if (karaoke->enabled) {
wasKaraSplitting = box->audioKaraoke->splitting; wasKaraSplitting = box->audioKaraoke->splitting;
karaoke->Commit(); karaoke->Commit();
karSyl = karaoke->curSyllable; karSyl = karaoke->curSyllable;
} }
// Update dialogues // Commit ok?
blockUpdate = true; if (validCommit) {
wxArrayInt sel = grid->GetSelection(); // Reset flags
int sels = (int)sel.Count(); diagUpdated = false;
AssDialogue *curDiag; NeedCommit = false;
for (int i=-1;i<sels;i++) {
if (i == -1) curDiag = dialogue; // Update dialogues
else { blockUpdate = true;
curDiag = grid->GetDialogue(sel[i]); wxArrayInt sel = grid->GetSelection();
if (curDiag == dialogue) continue; int sels = (int)sel.Count();
AssDialogue *curDiag;
for (int i=-1;i<sels;i++) {
if (i == -1) curDiag = dialogue;
else {
curDiag = grid->GetDialogue(sel[i]);
if (curDiag == dialogue) continue;
}
curDiag->Start.SetMS(curStartMS);
curDiag->End.SetMS(curEndMS);
curDiag->UpdateData();
} }
curDiag->Start.SetMS(curStartMS); // Update grid
curDiag->End.SetMS(curEndMS); grid->editBox->Update(!karaoke->enabled);
curDiag->UpdateData(); grid->ass->FlagAsModified();
grid->CommitChanges();
karaoke->curSyllable = karSyl;
blockUpdate = false;
} }
// Update grid
grid->editBox->Update(!karaoke->enabled);
grid->ass->FlagAsModified();
grid->CommitChanges();
karaoke->curSyllable = karSyl;
blockUpdate = false;
// Next line // Next line
if (nextLine && Options.AsBool(_T("Audio Next Line on Commit")) && !wasKaraSplitting) { if (nextLine && Options.AsBool(_T("Audio Next Line on Commit")) && !wasKaraSplitting) {
// Insert a line if it doesn't exist // Insert a line if it doesn't exist
@ -1599,12 +1600,13 @@ void AudioDisplay::OnMouseEvent(wxMouseEvent& event) {
if (hold != 0) { if (hold != 0) {
// Dragging // Dragging
if (buttonIsDown) { if (buttonIsDown) {
// Drag from nothing // Drag from nothing or straight timing
if (hold == 3 && buttonIsDown) { if (hold == 3 && buttonIsDown) {
if (!karMode) { if (!karMode) {
if (leftIsDown) curStartMS = GetMSAtX(x); if (leftIsDown) curStartMS = GetMSAtX(x);
else curEndMS = GetMSAtX(x); else curEndMS = GetMSAtX(x);
updated = true; updated = true;
diagUpdated = true;
if (x != lastX) { if (x != lastX) {
selStart = x; selStart = x;
@ -1834,13 +1836,13 @@ void AudioDisplay::OnKeyDown(wxKeyEvent &event) {
// Accept // Accept
if (Hotkeys.IsPressed(_T("Audio Commit"))) { if (Hotkeys.IsPressed(_T("Audio Commit"))) {
CommitChanges(); CommitChanges(true);
ChangeLine(1); //ChangeLine(1);
} }
// Accept (SSA's "Grab times") // Accept (SSA's "Grab times")
if (Hotkeys.IsPressed(_T("Audio Commit Alt"))) { if (Hotkeys.IsPressed(_T("Audio Commit Alt"))) {
CommitChanges(); CommitChanges(true);
} }
// Accept (stay) // Accept (stay)