diff --git a/manuskript/data/settings.py b/manuskript/data/settings.py index 7e14b8a..97821ef 100644 --- a/manuskript/data/settings.py +++ b/manuskript/data/settings.py @@ -16,13 +16,25 @@ class Settings: Settings.loadDefaultSettings(self) def get(self, key: str): - return self.properties.get(key) + props = self.properties + path = key.split(".") + + for part in path[:-1]: + props = props.get(part) + + return props.get(path[-1:][0]) def isEnabled(self, key: str) -> bool: return self.properties.get(key, False) is True def set(self, key: str, value): - self.properties[key] = value + props = self.properties + path = key.split(".") + + for part in path[:-1]: + props = props.get(part) + + props[path[-1:][0]] = value def __iter__(self): return self.properties.__iter__() diff --git a/manuskript/ui/abstractDialog.py b/manuskript/ui/abstractDialog.py index 56b0592..45fba9b 100644 --- a/manuskript/ui/abstractDialog.py +++ b/manuskript/ui/abstractDialog.py @@ -28,13 +28,13 @@ class AbstractDialog: builder.add_from_file(self.builderTemplatePath) self.window = builder.get_object(self.builderObjectId) - self.window.connect("destroy", self.__destroyWindow) + self.window.connect("destroy", self._destroyWindow) self.window.set_transient_for(self.mainWindow.window) self.window.set_modal(True) self.initWindow(builder, self.window) - def __destroyWindow(self, window: Gtk.Widget): + def _destroyWindow(self, window: Gtk.Widget): self.window = None def show(self): diff --git a/manuskript/ui/mainWindow.py b/manuskript/ui/mainWindow.py index c82c9dc..8a6fd19 100644 --- a/manuskript/ui/mainWindow.py +++ b/manuskript/ui/mainWindow.py @@ -73,6 +73,12 @@ class MainWindow: MainWindow.bindMenuItem(builder, "settings_menu_item", self.openSettings) MainWindow.bindMenuItem(builder, "about_menu_item", self.openAbout) + def getProject(self): + return self.project + + def getSettings(self): + return self.getProject().settings + def openSettings(self, menuItem: Gtk.MenuItem): self.settingsWindow.show() diff --git a/manuskript/ui/settingsWindow.py b/manuskript/ui/settingsWindow.py index 6ef9305..b5f2645 100644 --- a/manuskript/ui/settingsWindow.py +++ b/manuskript/ui/settingsWindow.py @@ -1,6 +1,11 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- +import gi + +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk + from manuskript.ui.abstractDialog import AbstractDialog @@ -8,3 +13,61 @@ class SettingsWindow(AbstractDialog): def __init__(self, mainWindow): AbstractDialog.__init__(self, mainWindow, "ui/settings.glade", "settings_window") + + def initWindow(self, builder, window): + self.autoSave = builder.get_object("auto_save") + self.autoSaveDelay = builder.get_object("auto_save_delay") + self.autoSaveNoChanges = builder.get_object("auto_save_nochanges") + self.autoSaveNoChangesDelay = builder.get_object("auto_save_nochanges_delay") + self.saveOnQuit = builder.get_object("save_on_quit") + self.saveToZip = builder.get_object("save_to_zip") + + self.revisionsKeep = builder.get_object("revisions_keep") + self.revisionsSmartremove = builder.get_object("revisions_smartremove") + + self.autoSave.set_active(self.getSettings().get("autoSave")) + self.autoSaveDelay.set_value(self.getSettings().get("autoSaveDelay")) + self.autoSaveNoChanges.set_active(self.getSettings().get("autoSaveNoChanges")) + self.autoSaveNoChangesDelay.set_value(self.getSettings().get("autoSaveNoChangesDelay")) + self.saveOnQuit.set_active(self.getSettings().get("saveOnQuit")) + self.saveToZip.set_active(self.getSettings().get("saveToZip")) + + self.revisionsKeep.set_active(self.getSettings().get("revisions.keep")) + self.revisionsSmartremove.set_active(self.getSettings().get("revisions.smartremove")) + + self.autoSave.connect("toggled", self._autoSaveToggled) + self.autoSaveDelay.connect("value-changed", self._autoSaveChanged) + self.autoSaveNoChanges.connect("toggled", self._autoSaveNoChangesToggled) + self.autoSaveNoChangesDelay.connect("value-changed", self._autoSaveNoChangesChanged) + self.saveOnQuit.connect("toggled", self._saveOnQuitToggled) + self.saveToZip.connect("toggled", self._saveToZipToggled) + + self.revisionsKeep.connect("toggled", self._revisionsKeepToggled) + self.revisionsSmartremove.connect("toggled", self._revisionsSmartremoveToggled) + + def _autoSaveToggled(self, button: Gtk.ToggleButton): + self.getSettings().set("autoSave", button.get_active()) + + def _autoSaveChanged(self, button: Gtk.SpinButton): + self.getSettings().set("autoSaveDelay", button.get_value()) + + def _autoSaveNoChangesToggled(self, button: Gtk.ToggleButton): + self.getSettings().set("autoSaveNoChanges", button.get_active()) + + def _autoSaveNoChangesChanged(self, button: Gtk.SpinButton): + self.getSettings().set("autoSaveNoChangesDelay", button.get_value()) + + def _saveOnQuitToggled(self, button: Gtk.ToggleButton): + self.getSettings().set("saveOnQuit", button.get_active()) + + def _saveToZipToggled(self, button: Gtk.ToggleButton): + self.getSettings().set("saveToZip", button.get_active()) + + def _revisionsKeepToggled(self, button: Gtk.ToggleButton): + self.getSettings().set("revisions.keep", button.get_active()) + + def _revisionsSmartremoveToggled(self, button: Gtk.ToggleButton): + self.getSettings().set("revisions.smartremove", button.get_active()) + + def getSettings(self): + return self.mainWindow.getSettings() diff --git a/ui/about.glade b/ui/about.glade index ec36e32..b96638e 100644 --- a/ui/about.glade +++ b/ui/about.glade @@ -21,7 +21,7 @@ along with Manuskript. If not, see . --> - + @@ -118,7 +118,7 @@ nicxxx obw peter88213 ssantos - icons/Manuskript/logo-400x104.png + ../icons/Manuskript/logo-400x104.png gpl-3-0 diff --git a/ui/settings.glade b/ui/settings.glade index 5d7bbde..b11117e 100644 --- a/ui/settings.glade +++ b/ui/settings.glade @@ -308,7 +308,7 @@ along with Manuskript. If not, see . - + True False languages_store @@ -359,7 +359,7 @@ along with Manuskript. If not, see . - + True True number @@ -394,7 +394,7 @@ along with Manuskript. If not, see . True Automatic loading - + Automatically load last project on startup True True @@ -434,7 +434,7 @@ along with Manuskript. If not, see . 12 12 - + Automatically save every True True @@ -448,7 +448,7 @@ along with Manuskript. If not, see . - + True True 0 @@ -494,7 +494,7 @@ along with Manuskript. If not, see . 12 12 - + If no changes during True True @@ -508,7 +508,7 @@ along with Manuskript. If not, see . - + True True 0 @@ -544,7 +544,7 @@ along with Manuskript. If not, see . True Save on closure - + Save on project close True True @@ -564,7 +564,7 @@ along with Manuskript. If not, see . True Single file mode - + Save to one single file True True @@ -603,7 +603,7 @@ along with Manuskript. If not, see . True Keep revisions - + Keep revisions True True @@ -623,7 +623,7 @@ along with Manuskript. If not, see . True Smart remove - + Smart remove True True @@ -2522,6 +2522,7 @@ along with Manuskript. If not, see . True False False + Sans 12 True