1#!/usr/bin/env python3 2# coding: utf-8 3 4# Copyright (C) 2017, 2018 Robert Griesel 5# This program is free software: you can redistribute it and/or modify 6# it under the terms of the GNU General Public License as published by 7# the Free Software Foundation, either version 3 of the License, or 8# (at your option) any later version. 9# 10# This program is distributed in the hope that it will be useful, 11# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# GNU General Public License for more details. 14# 15# You should have received a copy of the GNU General Public License 16# along with this program. If not, see <http://www.gnu.org/licenses/> 17 18import gi 19gi.require_version('Gtk', '3.0') 20from gi.repository import Gtk 21 22from setzer.dialogs.dialog import Dialog 23import setzer.dialogs.preferences.preferences_viewgtk as view 24import setzer.dialogs.preferences.pages.page_build_system as page_build_system 25import setzer.dialogs.preferences.pages.page_editor as page_editor 26import setzer.dialogs.preferences.pages.page_font_color as page_font_color 27from setzer.app.service_locator import ServiceLocator 28 29 30class PreferencesDialog(Dialog): 31 32 def __init__(self, main_window): 33 self.main_window = main_window 34 self.settings = ServiceLocator.get_settings() 35 36 def run(self): 37 self.setup() 38 self.view.run() 39 del(self.view) 40 del(self.page_build_system) 41 del(self.page_editor) 42 del(self.page_font_color) 43 44 def setup(self): 45 self.view = view.Preferences(self.main_window) 46 47 self.page_build_system = page_build_system.PageBuildSystem(self, self.settings) 48 self.page_editor = page_editor.PageEditor(self, self.settings) 49 self.page_font_color = page_font_color.PageFontColor(self, self.settings, self.main_window) 50 51 self.view.notebook.append_page(self.page_build_system.view, Gtk.Label(_('Build System'))) 52 self.view.notebook.append_page(self.page_editor.view, Gtk.Label(_('Editor'))) 53 self.view.notebook.append_page(self.page_font_color.view, Gtk.Label(_('Font & Colors'))) 54 55 self.view.dialog.show_all() 56 57 self.page_build_system.init() 58 self.page_editor.init() 59 self.page_font_color.init() 60 61 def on_check_button_toggle(self, button, preference_name): 62 self.settings.set_value('preferences', preference_name, button.get_active()) 63 64 def on_radio_button_toggle(self, button, preference_name, value): 65 self.settings.set_value('preferences', preference_name, value) 66 67 def spin_button_changed(self, button, preference_name): 68 self.settings.set_value('preferences', preference_name, button.get_value_as_int()) 69 70 def text_deleted(self, buffer, position, n_chars, preference_name): 71 self.settings.set_value('preferences', preference_name, buffer.get_text()) 72 73 def text_inserted(self, buffer, position, chars, n_chars, preference_name): 74 self.settings.set_value('preferences', preference_name, buffer.get_text()) 75 76 def on_interpreter_changed(self, button, preference_name, value): 77 self.settings.set_value('preferences', preference_name, value) 78 79 80