From 1ed40db56d95fee944a98c09464563ccd4fa5e12 Mon Sep 17 00:00:00 2001 From: eidheim Date: Fri, 25 Sep 2015 11:40:30 +0200 Subject: [PATCH] Source map should be working, added config items for source map. --- src/config.cc | 9 ++++++--- src/files.h | 2 ++ src/notebook.cc | 16 +++++++++++++--- src/notebook.h | 1 + src/source.h | 4 ++++ src/window.cc | 4 +++- 6 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/config.cc b/src/config.cc index 56e2115..eefce89 100644 --- a/src/config.cc +++ b/src/config.cc @@ -115,6 +115,12 @@ void MainConfig::GenerateSource() { auto source_cfg = Singleton::Config::source(); auto source_json = cfg.get_child("source"); + Singleton::Config::source()->style=source_json.get("style"); + source_cfg->font=source_json.get("font"); + + source_cfg->show_map = source_json.get("show_map"); + source_cfg->map_font_size = source_json.get("map_font_size"); + source_cfg->spellcheck_language = source_json.get("spellcheck_language"); source_cfg->default_tab_char = source_json.get("default_tab_char"); @@ -128,9 +134,6 @@ void MainConfig::GenerateSource() { for (auto &i : source_json.get_child("clang_types")) source_cfg->clang_types[i.first] = i.second.get_value(); - - Singleton::Config::source()->style=source_json.get("style"); - source_cfg->font=source_json.get("font"); } void MainConfig::GenerateDirectoryFilter() { diff --git a/src/files.h b/src/files.h index 317c84e..12de49e 100644 --- a/src/files.h +++ b/src/files.h @@ -26,6 +26,8 @@ const std::string configjson = #endif #endif "//Use \"\" for default font, and for instance \"Monospace 12\" to also set size.\n" +" \"show_map\": true,\n" +" \"map_font_size\": 1,\n" " \"spellcheck_language\": \"en_US\", //Use \"\" to set language from your locale settings\n" " \"clang_types\": {\n" " \"8\": \"def:function\",\n" diff --git a/src/notebook.cc b/src/notebook.cc index 0b01cfe..ab7cc4c 100644 --- a/src/notebook.cc +++ b/src/notebook.cc @@ -107,12 +107,11 @@ void Notebook::open(const boost::filesystem::path &file_path) { #if GTK_VERSION_GE(3, 18) source_maps.emplace_back(Glib::wrap(gtk_source_map_new())); - auto font_desc=Pango::FontDescription(Singleton::Config::source()->font); - font_desc.set_size(1); - source_maps.back()->override_font(font_desc); hboxes.back()->pack_end(*source_maps.back(), Gtk::PACK_SHRINK); gtk_source_map_set_view(GTK_SOURCE_MAP(source_maps.back()->gobj()), source_views.back()->gobj()); #endif + configure(source_views.size()-1); + std::string title=file_path.filename().string(); append_page(*hboxes.back(), title); @@ -142,6 +141,17 @@ void Notebook::open(const boost::filesystem::path &file_path) { DEBUG("end"); } +void Notebook::configure(int view_nr) { +#if GTK_VERSION_GE(3, 18) + auto font_desc=Pango::FontDescription("Monospace "+std::to_string(Singleton::Config::source()->map_font_size)); //Seems to only work with Monospace + source_maps.at(view_nr)->override_font(font_desc); + if(Singleton::Config::source()->show_map) + source_maps.at(view_nr)->show(); + else + source_maps.at(view_nr)->hide(); +#endif +} + bool Notebook::save(int page, bool reparse_needed) { DEBUG("start"); if(page>=size()) { diff --git a/src/notebook.h b/src/notebook.h index a97dec7..b8f6b69 100644 --- a/src/notebook.h +++ b/src/notebook.h @@ -21,6 +21,7 @@ public: void open(const boost::filesystem::path &file_path); bool save(int page, bool reparse_needed=false); bool save_current(); + void configure(int view_nr); private: bool save_modified_dialog(); diff --git a/src/source.h b/src/source.h index abb84ce..cae4539 100644 --- a/src/source.h +++ b/src/source.h @@ -26,6 +26,10 @@ namespace Source { std::string style; std::string font; std::string spellcheck_language; + + bool show_map; + unsigned map_font_size; + bool auto_tab_char_and_size; char default_tab_char; unsigned default_tab_size; diff --git a/src/window.cc b/src/window.cc index c4e3d7a..2a647cf 100644 --- a/src/window.cc +++ b/src/window.cc @@ -190,8 +190,10 @@ void Window::create_menu() { if(notebook.get_current_page()!=-1) { if(notebook.get_current_view()->file_path==Singleton::config_dir()+"config.json") { configure(); - for(int c=0;cconfigure(); + notebook.configure(c); + } } } }