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
-
-
+
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