mirror of https://github.com/odrling/Aegisub
Ensure that there is always at least one style catalog existing and selected so that the style manager doesn't have to check if there is one
Originally committed to SVN as r6543.
This commit is contained in:
parent
a0b4da90f7
commit
fa06033762
|
@ -68,18 +68,23 @@ void AssStyleStorage::Load(wxString const& name) {
|
||||||
if (name.empty()) return;
|
if (name.empty()) return;
|
||||||
Clear();
|
Clear();
|
||||||
|
|
||||||
TextFileReader file(StandardPaths::DecodePath("?user/catalog/" + name + ".sty"), "UTF-8");
|
try {
|
||||||
|
TextFileReader file(StandardPaths::DecodePath("?user/catalog/" + name + ".sty"), "UTF-8");
|
||||||
|
|
||||||
while (file.HasMoreLines()) {
|
while (file.HasMoreLines()) {
|
||||||
wxString data = file.ReadLineFromFile();
|
wxString data = file.ReadLineFromFile();
|
||||||
if (data.StartsWith("Style:")) {
|
if (data.StartsWith("Style:")) {
|
||||||
try {
|
try {
|
||||||
style.push_back(new AssStyle(data));
|
style.push_back(new AssStyle(data));
|
||||||
} catch(...) {
|
} catch(...) {
|
||||||
/* just ignore invalid lines for now */
|
/* just ignore invalid lines for now */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (agi::FileNotAccessibleError const&) {
|
||||||
|
// Just treat a missing file as an empty file
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssStyleStorage::Clear () {
|
void AssStyleStorage::Clear () {
|
||||||
|
|
|
@ -117,7 +117,7 @@ DialogStyleManager::DialogStyleManager(agi::Context *context)
|
||||||
wxSizer *CatalogBox = new wxStaticBoxSizer(wxHORIZONTAL,this,_("Catalog of available storages"));
|
wxSizer *CatalogBox = new wxStaticBoxSizer(wxHORIZONTAL,this,_("Catalog of available storages"));
|
||||||
CatalogList = new wxComboBox(this,-1, "", wxDefaultPosition, wxSize(-1,-1), 0, NULL, wxCB_READONLY | wxCB_READONLY, wxDefaultValidator, "Catalog List");
|
CatalogList = new wxComboBox(this,-1, "", wxDefaultPosition, wxSize(-1,-1), 0, NULL, wxCB_READONLY | wxCB_READONLY, wxDefaultValidator, "Catalog List");
|
||||||
wxButton *CatalogNew = new wxButton(this, -1, _("New"));
|
wxButton *CatalogNew = new wxButton(this, -1, _("New"));
|
||||||
wxButton *CatalogDelete = new wxButton(this, -1, _("Delete"));
|
CatalogDelete = new wxButton(this, -1, _("Delete"));
|
||||||
CatalogBox->Add(CatalogList,1,wxEXPAND | wxRIGHT | wxALIGN_RIGHT,5);
|
CatalogBox->Add(CatalogList,1,wxEXPAND | wxRIGHT | wxALIGN_RIGHT,5);
|
||||||
CatalogBox->Add(CatalogNew,0,wxRIGHT,5);
|
CatalogBox->Add(CatalogNew,0,wxRIGHT,5);
|
||||||
CatalogBox->Add(CatalogDelete,0,0,0);
|
CatalogBox->Add(CatalogDelete,0,0,0);
|
||||||
|
@ -230,9 +230,7 @@ DialogStyleManager::DialogStyleManager(agi::Context *context)
|
||||||
}
|
}
|
||||||
|
|
||||||
DialogStyleManager::~DialogStyleManager() {
|
DialogStyleManager::~DialogStyleManager() {
|
||||||
int sel = CatalogList->GetSelection();
|
c->ass->SetScriptInfo("Last Style Storage", CatalogList->GetStringSelection());
|
||||||
if (sel != wxNOT_FOUND)
|
|
||||||
c->ass->SetScriptInfo("Last Style Storage", CatalogList->GetString(sel));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogStyleManager::LoadCatalog() {
|
void DialogStyleManager::LoadCatalog() {
|
||||||
|
@ -244,24 +242,21 @@ void DialogStyleManager::LoadCatalog() {
|
||||||
CatalogList->Append(wxFileName(curfile).GetName());
|
CatalogList->Append(wxFileName(curfile).GetName());
|
||||||
|
|
||||||
// Create a default storage if there are none
|
// Create a default storage if there are none
|
||||||
if (CatalogList->IsListEmpty()) {
|
if (CatalogList->IsListEmpty())
|
||||||
Store.Clear();
|
|
||||||
Store.style.push_back(new AssStyle);
|
|
||||||
Store.Save("Default");
|
|
||||||
CatalogList->Append("Default");
|
CatalogList->Append("Default");
|
||||||
}
|
|
||||||
|
|
||||||
// Set to default if available
|
// Set to default if available
|
||||||
StorageActions(false);
|
|
||||||
wxString pickStyle = c->ass->GetScriptInfo("Last Style Storage");
|
wxString pickStyle = c->ass->GetScriptInfo("Last Style Storage");
|
||||||
if (pickStyle.empty())
|
if (pickStyle.empty())
|
||||||
pickStyle = "Default";
|
pickStyle = "Default";
|
||||||
|
|
||||||
int opt = CatalogList->FindString(pickStyle, false);
|
int opt = CatalogList->FindString(pickStyle, false);
|
||||||
if (opt != wxNOT_FOUND) {
|
if (opt != wxNOT_FOUND)
|
||||||
CatalogList->SetSelection(opt);
|
CatalogList->SetSelection(opt);
|
||||||
OnChangeCatalog();
|
else
|
||||||
}
|
CatalogList->SetSelection(0);
|
||||||
|
|
||||||
|
OnChangeCatalog();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogStyleManager::LoadCurrentStyles(AssFile *subs) {
|
void DialogStyleManager::LoadCurrentStyles(AssFile *subs) {
|
||||||
|
@ -290,28 +285,9 @@ void DialogStyleManager::LoadStorageStyles() {
|
||||||
UpdateButtons();
|
UpdateButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogStyleManager::StorageActions(bool state) {
|
|
||||||
StorageList->Enable(state);
|
|
||||||
MoveToLocal->Enable(state);
|
|
||||||
StorageNew->Enable(state);
|
|
||||||
StorageCopy->Enable(state);
|
|
||||||
StorageDelete->Enable(state);
|
|
||||||
|
|
||||||
UpdateButtons();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DialogStyleManager::OnChangeCatalog() {
|
void DialogStyleManager::OnChangeCatalog() {
|
||||||
int sel = CatalogList->GetSelection();
|
Store.Load(CatalogList->GetStringSelection());
|
||||||
if (sel != wxNOT_FOUND) {
|
LoadStorageStyles();
|
||||||
StorageActions(true);
|
|
||||||
Store.Load(CatalogList->GetString(sel));
|
|
||||||
LoadStorageStyles();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
StorageActions(false);
|
|
||||||
Store.Clear();
|
|
||||||
LoadStorageStyles();
|
|
||||||
}
|
|
||||||
UpdateButtons();
|
UpdateButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -346,7 +322,6 @@ void DialogStyleManager::OnCatalogNew() {
|
||||||
StorageList->Clear();
|
StorageList->Clear();
|
||||||
CatalogList->Append(name);
|
CatalogList->Append(name);
|
||||||
CatalogList->SetStringSelection(name);
|
CatalogList->SetStringSelection(name);
|
||||||
StorageActions(true);
|
|
||||||
|
|
||||||
Store.Save(name);
|
Store.Save(name);
|
||||||
}
|
}
|
||||||
|
@ -354,19 +329,17 @@ void DialogStyleManager::OnCatalogNew() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogStyleManager::OnCatalogDelete() {
|
void DialogStyleManager::OnCatalogDelete() {
|
||||||
int sel = CatalogList->GetSelection();
|
if (CatalogList->GetCount() == 1) return;
|
||||||
if (sel != wxNOT_FOUND) {
|
|
||||||
wxString name = CatalogList->GetString(sel);
|
wxString name = CatalogList->GetStringSelection();
|
||||||
wxString message = wxString::Format(_("Are you sure you want to delete the storage \"%s\" from the catalog?"), name);
|
wxString message = wxString::Format(_("Are you sure you want to delete the storage \"%s\" from the catalog?"), name);
|
||||||
int option = wxMessageBox(message, _("Confirm delete"), wxYES_NO | wxICON_EXCLAMATION , this);
|
int option = wxMessageBox(message, _("Confirm delete"), wxYES_NO | wxICON_EXCLAMATION , this);
|
||||||
if (option == wxYES) {
|
if (option == wxYES) {
|
||||||
wxRemoveFile(StandardPaths::DecodePath("?user/catalog/" + name + ".sty"));
|
wxRemoveFile(StandardPaths::DecodePath("?user/catalog/" + name + ".sty"));
|
||||||
CatalogList->Delete(sel);
|
CatalogList->Delete(CatalogList->GetSelection());
|
||||||
StorageList->Clear();
|
CatalogList->SetSelection(0);
|
||||||
StorageActions(false);
|
OnChangeCatalog();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
UpdateButtons();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogStyleManager::OnStorageEdit() {
|
void DialogStyleManager::OnStorageEdit() {
|
||||||
|
@ -376,7 +349,7 @@ void DialogStyleManager::OnStorageEdit() {
|
||||||
AssStyle *selStyle = styleStorageMap[selections[0]];
|
AssStyle *selStyle = styleStorageMap[selections[0]];
|
||||||
DialogStyleEditor(this, selStyle, c, &Store).ShowModal();
|
DialogStyleEditor(this, selStyle, c, &Store).ShowModal();
|
||||||
StorageList->SetString(selections[0],selStyle->name);
|
StorageList->SetString(selections[0],selStyle->name);
|
||||||
Store.Save(CatalogList->GetString(CatalogList->GetSelection()));
|
Store.Save(CatalogList->GetStringSelection());
|
||||||
}
|
}
|
||||||
UpdateButtons();
|
UpdateButtons();
|
||||||
}
|
}
|
||||||
|
@ -415,7 +388,7 @@ void DialogStyleManager::OnCopyToStorage() {
|
||||||
copied.push_back(styleName);
|
copied.push_back(styleName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Store.Save(CatalogList->GetString(CatalogList->GetSelection()));
|
Store.Save(CatalogList->GetStringSelection());
|
||||||
LoadStorageStyles();
|
LoadStorageStyles();
|
||||||
for (std::list<wxString>::iterator name = copied.begin(); name != copied.end(); ++name) {
|
for (std::list<wxString>::iterator name = copied.begin(); name != copied.end(); ++name) {
|
||||||
StorageList->SetStringSelection(*name, true);
|
StorageList->SetStringSelection(*name, true);
|
||||||
|
@ -475,7 +448,7 @@ void DialogStyleManager::OnStorageCopy() {
|
||||||
unique_name(bind(&AssStyleStorage::GetStyle, &Store, _1), s->name));
|
unique_name(bind(&AssStyleStorage::GetStyle, &Store, _1), s->name));
|
||||||
|
|
||||||
if (editor.ShowModal()) {
|
if (editor.ShowModal()) {
|
||||||
Store.Save(CatalogList->GetString(CatalogList->GetSelection()));
|
Store.Save(CatalogList->GetStringSelection());
|
||||||
LoadStorageStyles();
|
LoadStorageStyles();
|
||||||
StorageList->SetStringSelection(editor.GetStyleName());
|
StorageList->SetStringSelection(editor.GetStyleName());
|
||||||
UpdateButtons();
|
UpdateButtons();
|
||||||
|
@ -558,14 +531,14 @@ void DialogStyleManager::PasteToStorage() {
|
||||||
bind(&AssStyleStorage::GetStyle, &Store, _1),
|
bind(&AssStyleStorage::GetStyle, &Store, _1),
|
||||||
bind(&std::list<AssStyle*>::push_back, &Store.style, _1));
|
bind(&std::list<AssStyle*>::push_back, &Store.style, _1));
|
||||||
|
|
||||||
Store.Save(CatalogList->GetString(CatalogList->GetSelection()));
|
Store.Save(CatalogList->GetStringSelection());
|
||||||
LoadStorageStyles();
|
LoadStorageStyles();
|
||||||
StorageList->SetStringSelection(Store.style.back()->name);
|
StorageList->SetStringSelection(Store.style.back()->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogStyleManager::OnStorageNew() {
|
void DialogStyleManager::OnStorageNew() {
|
||||||
DialogStyleEditor(this, 0, c, &Store).ShowModal();
|
DialogStyleEditor(this, 0, c, &Store).ShowModal();
|
||||||
Store.Save(CatalogList->GetString(CatalogList->GetSelection()));
|
Store.Save(CatalogList->GetStringSelection());
|
||||||
LoadStorageStyles();
|
LoadStorageStyles();
|
||||||
UpdateButtons();
|
UpdateButtons();
|
||||||
}
|
}
|
||||||
|
@ -593,7 +566,7 @@ void DialogStyleManager::OnStorageDelete() {
|
||||||
Store.style.remove(temp);
|
Store.style.remove(temp);
|
||||||
delete temp;
|
delete temp;
|
||||||
}
|
}
|
||||||
Store.Save(CatalogList->GetString(CatalogList->GetSelection()));
|
Store.Save(CatalogList->GetStringSelection());
|
||||||
LoadStorageStyles();
|
LoadStorageStyles();
|
||||||
}
|
}
|
||||||
UpdateButtons();
|
UpdateButtons();
|
||||||
|
@ -680,6 +653,8 @@ void DialogStyleManager::OnCurrentImport() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogStyleManager::UpdateButtons() {
|
void DialogStyleManager::UpdateButtons() {
|
||||||
|
CatalogDelete->Enable(CatalogList->GetCount() > 1);
|
||||||
|
|
||||||
// Get storage selection
|
// Get storage selection
|
||||||
wxArrayInt sels;
|
wxArrayInt sels;
|
||||||
int n = StorageList->GetSelections(sels);
|
int n = StorageList->GetSelections(sels);
|
||||||
|
@ -813,7 +788,7 @@ void DialogStyleManager::MoveStyles(bool storage, int type) {
|
||||||
if (storage) {
|
if (storage) {
|
||||||
Store.style.clear();
|
Store.style.clear();
|
||||||
copy(styls.begin(), styls.end(), back_inserter(Store.style));
|
copy(styls.begin(), styls.end(), back_inserter(Store.style));
|
||||||
Store.Save(CatalogList->GetString(CatalogList->GetSelection()));
|
Store.Save(CatalogList->GetStringSelection());
|
||||||
}
|
}
|
||||||
// Current
|
// Current
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -73,6 +73,8 @@ class DialogStyleManager : public wxDialog {
|
||||||
wxListBox *StorageList;
|
wxListBox *StorageList;
|
||||||
wxListBox *CurrentList;
|
wxListBox *CurrentList;
|
||||||
|
|
||||||
|
wxButton *CatalogDelete;
|
||||||
|
|
||||||
wxButton *MoveToLocal;
|
wxButton *MoveToLocal;
|
||||||
wxButton *MoveToStorage;
|
wxButton *MoveToStorage;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue