From 55ff9bfd50cad9f570c2263f9a81da06ce4bc94d Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Thu, 26 Dec 2013 09:51:56 -0800 Subject: [PATCH] Simplify HelpButton a little Switch to flat_map for trivially less memory usage and just use a global map rather than a heap-allocated map since it's not (de)initialization-order sensitive. --- aegisub/src/frame_main.cpp | 1 - aegisub/src/help_button.cpp | 61 ++++++++++++++++++------------------- aegisub/src/help_button.h | 1 - 3 files changed, 29 insertions(+), 34 deletions(-) diff --git a/aegisub/src/frame_main.cpp b/aegisub/src/frame_main.cpp index 3e8659ac6..84a53b7e7 100644 --- a/aegisub/src/frame_main.cpp +++ b/aegisub/src/frame_main.cpp @@ -332,7 +332,6 @@ FrameMain::~FrameMain () { delete_children(this, SubsGrid); delete context->ass; - HelpButton::ClearPages(); delete context->audioController; delete context->local_scripts; } diff --git a/aegisub/src/help_button.cpp b/aegisub/src/help_button.cpp index b5a9501f5..bd596d977 100644 --- a/aegisub/src/help_button.cpp +++ b/aegisub/src/help_button.cpp @@ -41,61 +41,58 @@ #include #include +#include #include #include -#include #include -static std::map *pages = nullptr; +namespace { +static boost::container::flat_map pages; -static void init_static() { - if (!pages) { - pages = new std::map; - std::map &page = *pages; - page["Attachment Manager"] = "Attachment_Manager"; - page["Automation Manager"] = "Automation/Manager"; - page["Colour Picker"] = "Colour_Picker"; - page["Dummy Video"] = "Video#dummyvideo"; - page["Export"] = "Exporting"; - page["Fonts Collector"] = "Fonts_Collector"; - page["Kanji Timer"] = "Kanji_Timer"; - page["Main"] = "Main_Page"; - page["Options"] = "Options"; - page["Paste Over"] = "Paste_Over"; - page["Properties"] = "Properties"; - page["Resample resolution"] = "Resolution_Resampler"; - page["Shift Times"] = "Shift_Times"; - page["Select Lines"] = "Select_Lines"; - page["Spell Checker"] = "Spell_Checker"; - page["Style Editor"] = "Styles"; - page["Styles Manager"] = "Styles"; - page["Styling Assistant"] = "Styling_Assistant"; - page["Timing Processor"] = "Timing_Post-Processor"; - page["Translation Assistant"] = "Translation_Assistant"; - page["Visual Typesetting"] = "Visual_Typesetting"; +void init_static() { + if (pages.empty()) { + pages["Attachment Manager"] = "Attachment_Manager"; + pages["Automation Manager"] = "Automation/Manager"; + pages["Colour Picker"] = "Colour_Picker"; + pages["Dummy Video"] = "Video#dummyvideo"; + pages["Export"] = "Exporting"; + pages["Fonts Collector"] = "Fonts_Collector"; + pages["Kanji Timer"] = "Kanji_Timer"; + pages["Main"] = "Main_Page"; + pages["Options"] = "Options"; + pages["Paste Over"] = "Paste_Over"; + pages["Properties"] = "Properties"; + pages["Resample resolution"] = "Resolution_Resampler"; + pages["Shift Times"] = "Shift_Times"; + pages["Select Lines"] = "Select_Lines"; + pages["Spell Checker"] = "Spell_Checker"; + pages["Style Editor"] = "Styles"; + pages["Styles Manager"] = "Styles"; + pages["Styling Assistant"] = "Styling_Assistant"; + pages["Timing Processor"] = "Timing_Post-Processor"; + pages["Translation Assistant"] = "Translation_Assistant"; + pages["Visual Typesetting"] = "Visual_Typesetting"; } } +} HelpButton::HelpButton(wxWindow *parent, wxString const& page, wxPoint position, wxSize size) : wxButton(parent, wxID_HELP, "", position, size) { Bind(wxEVT_BUTTON, std::bind(&HelpButton::OpenPage, page)); init_static(); - if (pages->find(page) == pages->end()) + if (pages.find(page) == pages.end()) throw agi::InternalError("Invalid help page", nullptr); } void HelpButton::OpenPage(wxString const& pageID) { init_static(); - wxString page = (*pages)[pageID]; + wxString page = pages[pageID]; wxString section; page = page.BeforeFirst('#', §ion); wxLaunchDefaultBrowser(wxString::Format("http://docs.aegisub.org/3.1/%s/#%s", page, section)); } -void HelpButton::ClearPages() { - delete pages; -} diff --git a/aegisub/src/help_button.h b/aegisub/src/help_button.h index bb07f9d63..e9323e1f5 100644 --- a/aegisub/src/help_button.h +++ b/aegisub/src/help_button.h @@ -39,5 +39,4 @@ public: HelpButton(wxWindow *parent, wxString const& page="", wxPoint position=wxDefaultPosition, wxSize size=wxDefaultSize); static void OpenPage(wxString const& page); - static void ClearPages(); };