Separate UI state info from functional ASS info headers a bit

Prefix script info entries that are just storing Aegisub UI state with
"Aegisub ", and use a separate AssFile method to get/set them.
This commit is contained in:
Thomas Goyne 2013-10-07 17:42:09 -07:00
parent 62114d45f5
commit 1cdd461023
6 changed files with 30 additions and 12 deletions

View File

@ -136,6 +136,21 @@ int AssFile::GetScriptInfoAsInt(std::string const& key) const {
return atoi(GetScriptInfo(key).c_str());
}
std::string AssFile::GetUIState(std::string const& key) const {
auto value = GetScriptInfo("Aegisub " + key);
if (value.empty())
value = GetScriptInfo(key);
return value;
}
int AssFile::GetUIStateAsInt(std::string const& key) const {
return atoi(GetUIState(key).c_str());
}
void AssFile::SaveUIState(std::string const& key, std::string const& value) {
SetScriptInfo("Aegisub " + key, value);
}
void AssFile::SetScriptInfo(std::string const& key, std::string const& value) {
for (auto info : Line | agi::of_type<AssInfo>()) {
if (boost::iequals(key, info->Key())) {

View File

@ -95,6 +95,9 @@ public:
std::string GetScriptInfo(std::string const& key) const;
/// Set the value of a [Script Info] key. Adds it if it doesn't exist.
void SetScriptInfo(std::string const& key, std::string const& value);
std::string GetUIState(std::string const& key) const;
int GetUIStateAsInt(std::string const& key) const;
void SaveUIState(std::string const& key, std::string const& value);
/// Type of changes made in a commit
enum CommitType {

View File

@ -187,7 +187,7 @@ void BaseGrid::OnSubtitlesOpen() {
UpdateMaps();
if (GetRows()) {
int row = context->ass->GetScriptInfoAsInt("Active Line");
int row = context->ass->GetUIStateAsInt("Active Line");
if (row < 0 || row >= GetRows())
row = 0;
@ -195,15 +195,15 @@ void BaseGrid::OnSubtitlesOpen() {
SelectRow(row);
}
ScrollTo(context->ass->GetScriptInfoAsInt("Scroll Position"));
ScrollTo(context->ass->GetUIStateAsInt("Scroll Position"));
EndBatch();
SetColumnWidths();
}
void BaseGrid::OnSubtitlesSave() {
context->ass->SetScriptInfo("Scroll Position", std::to_string(yPos));
context->ass->SetScriptInfo("Active Line", std::to_string(GetDialogueIndex(active_line)));
context->ass->SaveUIState("Scroll Position", std::to_string(yPos));
context->ass->SaveUIState("Active Line", std::to_string(GetDialogueIndex(active_line)));
}
void BaseGrid::OnShowColMenu(wxCommandEvent &event) {

View File

@ -616,9 +616,9 @@ void FrameMain::OnSubtitlesOpen() {
if (videoChanged) {
context->videoController->SetVideo(video);
if (context->videoController->IsLoaded()) {
context->videoController->JumpToFrame(context->ass->GetScriptInfoAsInt("Video Position"));
context->videoController->JumpToFrame(context->ass->GetUIStateAsInt("Video Position"));
std::string arString = context->ass->GetScriptInfo("Video Aspect Ratio");
std::string arString = context->ass->GetUIState("Video Aspect Ratio");
if (boost::starts_with(arString, "c")) {
double ar = 0.;
agi::util::try_parse(arString.substr(1), &ar);
@ -631,7 +631,7 @@ void FrameMain::OnSubtitlesOpen() {
}
double videoZoom = 0.;
if (agi::util::try_parse(context->ass->GetScriptInfo("Video Zoom Percent"), &videoZoom))
if (agi::util::try_parse(context->ass->GetUIState("Video Zoom Percent"), &videoZoom))
context->videoDisplay->SetZoom(videoZoom);
}
}

View File

@ -248,8 +248,8 @@ void VideoContext::OnSubtitlesSave() {
if (!IsLoaded()) {
context->ass->SetScriptInfo("Video File", "");
context->ass->SetScriptInfo("Video Aspect Ratio", "");
context->ass->SetScriptInfo("Video Position", "");
context->ass->SaveUIState("Video Aspect Ratio", "");
context->ass->SaveUIState("Video Position", "");
return;
}
@ -261,8 +261,8 @@ void VideoContext::OnSubtitlesSave() {
context->ass->SetScriptInfo("Video File", config::path->MakeRelative(video_filename, "?script").generic_string());
context->ass->SetScriptInfo("YCbCr Matrix", video_provider->GetColorSpace());
context->ass->SetScriptInfo("Video Aspect Ratio", ar);
context->ass->SetScriptInfo("Video Position", std::to_string(frame_n));
context->ass->SaveUIState("Video Aspect Ratio", ar);
context->ass->SaveUIState("Video Position", std::to_string(frame_n));
}
void VideoContext::JumpToFrame(int n) {

View File

@ -435,5 +435,5 @@ void VideoDisplay::Unload() {
}
void VideoDisplay::OnSubtitlesSave() {
con->ass->SetScriptInfo("Video Zoom Percent", std::to_string(zoomValue));
con->ass->SaveUIState("Video Zoom Percent", std::to_string(zoomValue));
}