Browse Source

Use default system theme if none specified in preferences. Default system theme is now default in juCi++

merge-requests/365/head
eidheim 10 years ago
parent
commit
679bbf151a
  1. 2
      src/files.h
  2. 12
      src/window.cc
  3. 2
      src/window.h

2
src/files.h

@ -13,7 +13,7 @@ const std::string configjson =
" },\n" " },\n"
" \"gtk_theme\": {\n" " \"gtk_theme\": {\n"
" \"name_comment\": \"Use \\\"\\\" for default theme, At least these two exist on all systems: Adwaita, Raleigh\",\n" " \"name_comment\": \"Use \\\"\\\" for default theme, At least these two exist on all systems: Adwaita, Raleigh\",\n"
" \"name\": \"Adwaita\",\n" " \"name\": \"\",\n"
" \"variant_comment\": \"Use \\\"\\\" for default variant, and \\\"dark\\\" for dark theme variant\",\n" " \"variant_comment\": \"Use \\\"\\\" for default variant, and \\\"dark\\\" for dark theme variant\",\n"
" \"variant\": \"\"\n" " \"variant\": \"\"\n"
" },\n" " },\n"

12
src/window.cc

@ -139,11 +139,17 @@ Window::Window() : notebook(Notebook::get()) {
void Window::configure() { void Window::configure() {
Config::get().load(); Config::get().load();
auto style_context = Gtk::StyleContext::create();
auto screen = Gdk::Screen::get_default(); auto screen = Gdk::Screen::get_default();
auto css_provider = Gtk::CssProvider::get_named(Config::get().window.theme_name, Config::get().window.theme_variant); if(css_provider)
Gtk::StyleContext::remove_provider_for_screen(screen, css_provider);
if(Config::get().window.theme_name.empty()) {
css_provider=Gtk::CssProvider::create();
Gtk::Settings::get_default()->property_gtk_application_prefer_dark_theme()=(Config::get().window.theme_variant=="dark");
}
else
css_provider=Gtk::CssProvider::get_named(Config::get().window.theme_name, Config::get().window.theme_variant);
//TODO: add check if theme exists, or else write error to terminal //TODO: add check if theme exists, or else write error to terminal
style_context->add_provider_for_screen(screen, css_provider, GTK_STYLE_PROVIDER_PRIORITY_SETTINGS); Gtk::StyleContext::add_provider_for_screen(screen, css_provider, GTK_STYLE_PROVIDER_PRIORITY_SETTINGS);
Directories::get().update(); Directories::get().update();
Menu::get().set_keys(); Menu::get().set_keys();
Terminal::get().configure(); Terminal::get().configure();

2
src/window.h

@ -29,6 +29,8 @@ private:
Gtk::HBox info_and_status_hbox; Gtk::HBox info_and_status_hbox;
Gtk::AboutDialog about; Gtk::AboutDialog about;
Glib::RefPtr<Gtk::CssProvider> css_provider;
void configure(); void configure();
void set_menu_actions(); void set_menu_actions();
void activate_menu_items(bool activate=true); void activate_menu_items(bool activate=true);

Loading…
Cancel
Save