blob: c5377483d696ae0e7082d7364e50c2131f94833b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
/* Copyright 2016 Jens Georg <mail@jensge.org>
*
* This software is licensed under the GNU LGPL (version 2.1 or later).
* See the COPYING file in this distribution.
*/
using Spit.Publishing;
namespace Shotwell.Plugins.Common {
public abstract class WebAuthenticationPane : Spit.Publishing.DialogPane, Object {
public DialogPane.GeometryOptions preferred_geometry {
get; construct; default = DialogPane.GeometryOptions.NONE;
}
public string login_uri { owned get; construct; }
private WebKit.WebView webview;
public override void constructed () {
base.constructed ();
this.webview = new WebKit.WebView ();
this.webview.get_settings ().enable_plugins = false;
this.webview.load_changed.connect (this.on_page_load_changed);
this.webview.context_menu.connect ( () => { return false; });
}
public abstract void on_page_load ();
protected void set_cursor (Gdk.CursorType type) {
var window = webview.get_window ();
var display = window.get_display ();
var cursor = new Gdk.Cursor.for_display (display, type);
window.set_cursor (cursor);
}
private void on_page_load_changed (WebKit.LoadEvent load_event) {
switch (load_event) {
case WebKit.LoadEvent.STARTED:
case WebKit.LoadEvent.REDIRECTED:
this.set_cursor (Gdk.CursorType.WATCH);
break;
case WebKit.LoadEvent.FINISHED:
this.set_cursor (Gdk.CursorType.LEFT_PTR);
this.on_page_load ();
break;
default:
break;
}
}
public WebKit.WebView get_view () {
return this.webview;
}
public DialogPane.GeometryOptions get_preferred_geometry() {
return this.preferred_geometry;
}
public Gtk.Widget get_widget() {
return this.webview;
}
public void on_pane_installed () {
this.get_view ().load_uri (this.login_uri);
}
public void on_pane_uninstalled() {
}
}
}
|