diff --git a/aegisub/auto4_base.cpp b/aegisub/auto4_base.cpp index 4d79ba2fd..f0fda7087 100644 --- a/aegisub/auto4_base.cpp +++ b/aegisub/auto4_base.cpp @@ -599,9 +599,11 @@ namespace Automation4 { void AutoloadScriptManager::Reload() { - wxDir dir(path); - if (!dir.IsOpened()) { - // crap + wxDir dir; + if (!dir.Exists(path)) { + return; + } + if (!dir.Open(path)) { return; } diff --git a/aegisub/frame_main.h b/aegisub/frame_main.h index fd73d87bc..3276a9fd7 100644 --- a/aegisub/frame_main.h +++ b/aegisub/frame_main.h @@ -101,7 +101,7 @@ private: Automation4::ScriptManager *local_scripts; std::vector activeMacroItems; - void AddMacroMenuItems(wxMenu *menu, const std::vector ¯os); + int AddMacroMenuItems(wxMenu *menu, const std::vector ¯os); void InitToolbar(); void InitContents(); diff --git a/aegisub/frame_main_events.cpp b/aegisub/frame_main_events.cpp index 5c2097c9f..2eead8bbc 100644 --- a/aegisub/frame_main_events.cpp +++ b/aegisub/frame_main_events.cpp @@ -246,15 +246,6 @@ void FrameMain::OnMenuOpen (wxMenuEvent &event) { //Freeze(); wxMenu *curMenu = event.GetMenu(); - // Start by cleaning up in macro menu items - for (unsigned int i = 0; i < activeMacroItems.size(); i++) { - wxMenu *p = 0; - wxMenuItem *it = MenuBar->FindItem(Menu_Automation_Macro + i, &p); - if (it) - p->Delete(it); - } - activeMacroItems.clear(); - // File menu if (curMenu == fileMenu) { // Wipe recent @@ -490,8 +481,25 @@ void FrameMain::OnMenuOpen (wxMenuEvent &event) { // Automation menu else if (curMenu == automationMenu) { - AddMacroMenuItems(automationMenu, wxGetApp().global_scripts->GetMacros()); - AddMacroMenuItems(automationMenu, local_scripts->GetMacros()); + // Remove old macro items + for (unsigned int i = 0; i < activeMacroItems.size(); i++) { + wxMenu *p = 0; + wxMenuItem *it = MenuBar->FindItem(Menu_Automation_Macro + i, &p); + if (it) + p->Delete(it); + } + activeMacroItems.clear(); + + // Add new ones + int added = 0; + added += AddMacroMenuItems(automationMenu, wxGetApp().global_scripts->GetMacros()); + added += AddMacroMenuItems(automationMenu, local_scripts->GetMacros()); + + // If none were added, show a ghosted notice + if (added == 0) { + automationMenu->Append(Menu_Automation_Macro, _("No Automation macros loaded"))->Enable(false); + activeMacroItems.push_back(0); + } } //Thaw(); @@ -500,9 +508,9 @@ void FrameMain::OnMenuOpen (wxMenuEvent &event) { ////////////////////////////// // Macro menu creation helper -void FrameMain::AddMacroMenuItems(wxMenu *menu, const std::vector ¯os) { +int FrameMain::AddMacroMenuItems(wxMenu *menu, const std::vector ¯os) { if (macros.empty()) { - return; + return 0; } int id = activeMacroItems.size();; @@ -512,6 +520,8 @@ void FrameMain::AddMacroMenuItems(wxMenu *menu, const std::vector