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