From 6eea60849411643532979d35430ec50f3acb2eae Mon Sep 17 00:00:00 2001 From: Vivien Kraus Date: Mon, 27 Sep 2021 19:20:02 +0200 Subject: gui: listen for settings changes --- src/scm/webid-oidc/client/gui.scm | 14 ++++++++++++-- src/scm/webid-oidc/client/gui/settings.scm | 26 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) (limited to 'src/scm/webid-oidc') diff --git a/src/scm/webid-oidc/client/gui.scm b/src/scm/webid-oidc/client/gui.scm index c446fc7..45910e3 100644 --- a/src/scm/webid-oidc/client/gui.scm +++ b/src/scm/webid-oidc/client/gui.scm @@ -33,8 +33,9 @@ #:use-module ((webid-oidc oidc-id-token) #:prefix id:) #:use-module ((webid-oidc jwk) #:prefix jwk:) #:use-module ((webid-oidc dpop-proof) #:prefix dpop:) - #:use-module ((webid-oidc client client) #:prefix client:) - #:use-module ((webid-oidc client gui settings) #:prefix settings) + #:use-module (webid-oidc client) + #:use-module (webid-oidc client accounts) + #:use-module ((webid-oidc client gui settings) #:prefix settings:) #:use-module (web uri) #:use-module (web response) #:use-module (rnrs bytevectors) @@ -54,6 +55,15 @@ (use-typelibs (("Gio" "2.0") #:renamer (protect 'application:new)) ("Gtk" "3.0")) +(add-hook! settings:client-changed-hook + (lambda (client) + (format #t (G_ "The client changed: it is now ~a.\n") client))) + +(add-hook! settings:accounts-changed-hook + (lambda (main other) + (format #t (G_ "The accounts changed: the main account is ~a, and the others are ~a.\n") + main other))) + (define (print-hello button) (format #t (G_ "Hello, world!\n"))) diff --git a/src/scm/webid-oidc/client/gui/settings.scm b/src/scm/webid-oidc/client/gui/settings.scm index 5ce62b0..57ebbfb 100644 --- a/src/scm/webid-oidc/client/gui/settings.scm +++ b/src/scm/webid-oidc/client/gui/settings.scm @@ -45,6 +45,9 @@ client main-account other-accounts + + client-changed-hook + accounts-changed-hook )) (push-duplicate-handler! 'merge-generics) @@ -208,3 +211,26 @@ (match-lambda* (() (get-other-accounts)) ((value) (set-other-accounts! value)))) + +(define client-changed-hook + (make-hook 1)) + +(define accounts-changed-hook + (make-hook 2)) + +(connect client-settings change-event + (lambda _ + (run-hook client-changed-hook (client)) + #f)) + +(define (run-accounts-changed-hook . _) + (run-hook accounts-changed-hook + (main-account) + (other-accounts)) + #f) + +(connect main-account-settings change-event run-accounts-changed-hook) +(for-each + (lambda (settings) + (connect settings change-event run-accounts-changed-hook)) + other-accounts-settings) -- cgit v1.2.3