Help Browser: Support arbitrary initial topic

Hidden topics still untested.
This commit is contained in:
Celtic Minstrel 2017-04-11 07:17:15 +11:00 committed by Charles Dang
parent b5c0da9e37
commit 5d918cd5a5
3 changed files with 16 additions and 6 deletions

View file

@ -47,9 +47,15 @@ namespace dialogs
REGISTER_DIALOG(help_browser)
help_browser::help_browser()
: initial_topic_("introduction")
help_browser::help_browser(const help::section& toplevel, const std::string& initial)
: initial_topic_(initial.empty() ? help::default_show_topic : initial)
, toplevel_(toplevel)
{
if(initial_topic_.compare(0, 2, "..") == 0) {
initial_topic_.replace(0, 2, "+");
} else {
initial_topic_.insert(0, "-");
}
help::init_help();
}
@ -70,7 +76,10 @@ void help_browser::pre_show(window& window)
window.keyboard_capture(&topic_tree);
add_topics_for_section(help::default_toplevel, topic_tree.get_root_node());
add_topics_for_section(toplevel_, topic_tree.get_root_node());
tree_view_node& initial_node = find_widget<tree_view_node>(&topic_tree, initial_topic_, false);
initial_node.select_node(true);
on_topic_select(window);
}
@ -199,7 +208,7 @@ void help_browser::on_topic_select(window& window)
topic_id.erase(topic_id.begin());
}
help::section& sec = help::default_toplevel;
const help::section& sec = toplevel_;
auto iter = parsed_pages_.find(topic_id);
if(iter == parsed_pages_.end()) {

View file

@ -36,12 +36,13 @@ namespace dialogs
class help_browser : public modal_dialog
{
public:
help_browser();
help_browser(const help::section& toplevel, const std::string& initial = "");
DEFINE_SIMPLE_DISPLAY_WRAPPER(help_browser)
private:
std::string initial_topic_;
const help::section& toplevel_;
std::map<std::string, int> parsed_pages_;

View file

@ -179,7 +179,7 @@ void show_help(const section &toplevel_sec,
CVideo& video = CVideo::get_singleton();
if(gui2::new_widgets) {
gui2::dialogs::help_browser::display(video);
gui2::dialogs::help_browser::display(video, toplevel_sec, show_topic);
return;
}