diff --git a/src/activateApp.nim b/src/activateApp.nim index 7407407..4d44d8f 100644 --- a/src/activateApp.nim +++ b/src/activateApp.nim @@ -1,13 +1,17 @@ import gintro/[gtk, gdk, glib, gobject, gio] import os -import commonVars, clockTimer, resizeClock, loadCss +import commonVars, clockTimer, resizeClock, loadCss, settings +proc onDeleteEvent(w: ApplicationWindow; event: gdk.Event): bool = + saveSettings() + return EVENT_PROPAGATE proc appActivateWithBuilder*(app: Application) = discard builder.addFromFile(appdir & "main.glade") mainWindow = builder.getApplicationWindow("window") mainWindow.setApplication(app) + mainWindow.connect("delete_event", onDeleteEvent) if existsFile(appdir / "../../zegarek-icon.svg"): discard mainWindow.setIconFromFile(appdir / "../../zegarek-icon.svg") elif existsFile(appdir / "../res/zegarek-icon.svg"): @@ -18,7 +22,8 @@ proc appActivateWithBuilder*(app: Application) = var button = builder.getButton("pause") button.connect("clicked", pauseClock) - builder.getSpinButton("resolution").setSpinButton() + spinButton = builder.getSpinButton("resolution") + spinButton.setSpinButton() builder.getToggleButton("12Hours").connect12HoursButton() builder.getToggleButton("24Hours").connect24HoursButton() @@ -27,4 +32,6 @@ proc appActivateWithBuilder*(app: Application) = loadCss() + loadSettings() + showAll(mainWindow) \ No newline at end of file diff --git a/src/clockTimer.nim b/src/clockTimer.nim index 83e1631..6603947 100644 --- a/src/clockTimer.nim +++ b/src/clockTimer.nim @@ -9,6 +9,7 @@ var spinButton: SpinButton proc spinButtonValueChanged(button: SpinButton) = let value = button.getValue().toInt() + millisecondsResolutionValue = value case value: of 0: millisecondsResolution = 5 diff --git a/src/commonVars.nim b/src/commonVars.nim index bef520d..35bbf13 100644 --- a/src/commonVars.nim +++ b/src/commonVars.nim @@ -5,4 +5,5 @@ const gettextPackage* = "zegarek" let appdir* = os.getAppDir() / "/" let builder*: Builder = newBuilder() -var mainWindow*: ApplicationWindow \ No newline at end of file +var mainWindow*: ApplicationWindow +var spinButton*: SpinButton \ No newline at end of file diff --git a/src/settings.nim b/src/settings.nim index 7ea5b04..aa80eeb 100644 --- a/src/settings.nim +++ b/src/settings.nim @@ -1,6 +1,28 @@ +import gintro/[gtk, glib] +import os, json, marshal + +import commonVars + var millisecondsResolution* = 1 +var millisecondsResolutionValue*: int type timeFormat* = enum timeFormat12, timeFormat24 -var currentTimeFormat* = timeFormat24 \ No newline at end of file +var currentTimeFormat* = timeFormat24 + +proc loadSettings*() = + var j = parseFile(userConfigDir()/"Zegarek"/"settings.json") + currentTimeFormat = j["currentTimeFormat"].to(timeFormat) + millisecondsResolutionValue = j["millisecondsResolutionValue"].to(int) + spinButton.setValue(millisecondsResolutionValue.cdouble()) + +proc saveSettings*() = + var j = %* + { "currentTimeFormat": currentTimeFormat, + "millisecondsResolutionValue": millisecondsResolutionValue } + + echo j + echo userConfigDir() + createDir(userConfigDir()/"Zegarek") + writeFile(userConfigDir()/"Zegarek"/"settings.json", $j) \ No newline at end of file