diff --git a/po/POTFILES.in b/po/POTFILES.in index 92f7e71e..e68a30aa 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -14,6 +14,7 @@ src/client/accounts/accounts-editor-remove-pane.vala src/client/accounts/accounts-editor-row.vala src/client/accounts/accounts-editor-servers-pane.vala src/client/accounts/accounts-manager.vala +src/client/accounts/accounts-signature-web-view.vala src/client/application/application-avatar-store.vala src/client/application/application-certificate-manager.vala src/client/application/application-command.vala diff --git a/src/client/accounts/accounts-editor-edit-pane.vala b/src/client/accounts/accounts-editor-edit-pane.vala index 3576a53d..5cfcfdbb 100644 --- a/src/client/accounts/accounts-editor-edit-pane.vala +++ b/src/client/accounts/accounts-editor-edit-pane.vala @@ -55,7 +55,7 @@ internal class Accounts.EditorEditPane : [GtkChild] private Gtk.Frame signature_frame; - private ClientWebView signature_preview; + private SignatureWebView signature_preview; private bool signature_changed = false; [GtkChild] @@ -86,7 +86,7 @@ internal class Accounts.EditorEditPane : } this.senders_list.add(new AddMailboxRow()); - this.signature_preview = new ClientWebView( + this.signature_preview = new SignatureWebView( ((GearyApplication) editor.application).config ); this.signature_preview.events = ( diff --git a/src/client/accounts/accounts-signature-web-view.vala b/src/client/accounts/accounts-signature-web-view.vala new file mode 100644 index 00000000..4a7b5fbb --- /dev/null +++ b/src/client/accounts/accounts-signature-web-view.vala @@ -0,0 +1,29 @@ +/* + * Copyright 2019 Michael Gratton + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +/** + * A class for editing signatures in the accounts editor. + */ +public class Accounts.SignatureWebView : ClientWebView { + + + private static WebKit.UserScript? app_script = null; + + public static new void load_resources() + throws GLib.Error { + SignatureWebView.app_script = ClientWebView.load_app_script( + "signature-web-view.js" + ); + } + + + public SignatureWebView(Configuration config) { + base(config); + this.user_content_manager.add_script(SignatureWebView.app_script); + } + +} diff --git a/src/client/application/geary-controller.vala b/src/client/application/geary-controller.vala index a4fee38b..8220ed4d 100644 --- a/src/client/application/geary-controller.vala +++ b/src/client/application/geary-controller.vala @@ -255,6 +255,7 @@ public class GearyController : Geary.BaseObject { ); ComposerWebView.load_resources(); ConversationWebView.load_resources(); + Accounts.SignatureWebView.load_resources(); } catch (Error err) { error("Error loading web resources: %s", err.message); } diff --git a/src/client/components/client-web-view.vala b/src/client/components/client-web-view.vala index 3db73259..65d96f46 100644 --- a/src/client/components/client-web-view.vala +++ b/src/client/components/client-web-view.vala @@ -14,7 +14,7 @@ * integration, Inspector support, and remote and inline image * handling. */ -public class ClientWebView : WebKit.WebView, Geary.BaseInterface { +public abstract class ClientWebView : WebKit.WebView, Geary.BaseInterface { /** URI Scheme and delimiter for internal resource loads. */ diff --git a/src/client/meson.build b/src/client/meson.build index 3d6b9fb9..8ba7d8e7 100644 --- a/src/client/meson.build +++ b/src/client/meson.build @@ -18,6 +18,7 @@ geary_client_vala_sources = files( 'accounts/accounts-editor-remove-pane.vala', 'accounts/accounts-editor-row.vala', 'accounts/accounts-editor-servers-pane.vala', + 'accounts/accounts-signature-web-view.vala', 'accounts/accounts-manager.vala', 'components/client-web-view.vala', diff --git a/test/js/client-page-state-test.vala b/test/js/client-page-state-test.vala index 8616746e..01145916 100644 --- a/test/js/client-page-state-test.vala +++ b/test/js/client-page-state-test.vala @@ -8,6 +8,15 @@ class ClientPageStateTest : ClientWebViewTestCase { + private class TestClientWebView : ClientWebView { + + public TestClientWebView(Configuration config) { + base(config); + } + + } + + public ClientPageStateTest() { base("ClientPageStateTest"); add_test("content_loaded", content_loaded); @@ -46,7 +55,7 @@ class ClientPageStateTest : ClientWebViewTestCase { null ); - ClientWebView view = new ClientWebView(this.config); + ClientWebView view = new TestClientWebView(this.config); view.get_user_content_manager().add_script(test_script); return view; } diff --git a/ui/client-web-view.js b/ui/client-web-view.js index ac2abe9e..7b70093e 100644 --- a/ui/client-web-view.js +++ b/ui/client-web-view.js @@ -177,5 +177,3 @@ PageState.prototype = { } } }; - -var geary = new PageState(); diff --git a/ui/org.gnome.Geary.gresource.xml b/ui/org.gnome.Geary.gresource.xml index 7d950892..45c0e4f6 100644 --- a/ui/org.gnome.Geary.gresource.xml +++ b/ui/org.gnome.Geary.gresource.xml @@ -36,6 +36,7 @@ password-dialog.glade preferences-dialog.ui problem-details-dialog.ui + signature-web-view.js upgrade_dialog.glade geary.css diff --git a/ui/signature-web-view.js b/ui/signature-web-view.js new file mode 100644 index 00000000..aae44fab --- /dev/null +++ b/ui/signature-web-view.js @@ -0,0 +1,12 @@ +/* + * Copyright 2019 Michael Gratton + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +/** + * Application logic for SignatureWebView. + */ + +var geary = new PageState();