[image]
pzurek (owner)

Revisions

b2fb4d pzurek July 10, 2009 4ad788 pzurek July 10, 2009 c4c2f2 pzurek July 10, 2009 6b56b7 pzurek July 10, 2009 4d6819 pzurek July 10, 2009 c91bd6 pzurek July 09, 2009
gist: 144209 Download_button fork
public
public
Public Clone URL: git://gist.github.com/144209.git
Give this clone URL to anyone.
git clone git://gist.github.com/144209.git gist-144209
Embed All Files: show embed
FebKit.fs #
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

(*
to compile use:
fsc FebKit.fs -r "/usr/lib/cli/webkit-sharp-1.0/webkit-sharp.dll" -r "/usr/lib/mono/gtk-sharp-2.0/gtk-sharp.dll" -r "/usr/lib/mono/gtk-sharp-2.0/gdk-sharp.dll" -r "/usr/lib/mono/gtk-sharp-2.0/atk-sharp.dll" -r "/usr/lib/mono/gtk-sharp-2.0/glib-sharp.dll"
*)

#light

open System
open WebKit
open Gtk

Gtk.Application.Init()

let url = "http://piotrzurek.net"
let window = new Window("FebKit")
let webViewContainer = new ScrolledWindow()
let webView = new WebView()
let toolbar = new Toolbar()
let urlToolItem = new ToolItem();
let urlEntry = new Entry(url)
let addressHBox = new HBox()
let statusbar = new Statusbar()
let vBox = new VBox()
let backAction = new Action("back", "Go Back", null, "gtk-go-back")
let forwardAction = new Action("forward", "Go Forward", null, "gtk-go-forward")
let stopAction = new Action("stop", "Stop", null, "gtk-stop")
let refreshAction = new Action("refresh", "Refresh", null, "gtk-refresh")

let openUrl address =
    webView.Open(address)
    urlEntry.Text <- address

let setWindowTitle title =
    if String.IsNullOrEmpty(title) then window.Title <- "FebKit"
    else window.Title <- title

let commitLoad uri =
    urlEntry.Text <- uri
    stopAction.Sensitive <- true
    refreshAction.Sensitive <- false
    //updateBackForwardButtons

(*
let disableButtons =
backAction.Sensitive <- false
forwardAction.Sensitive <- false
stopAction.Sensitive <- false
refreshAction.Sensitive <- false

let updateBackForwardButtons =
backAction.Sensitive <- webView.CanGoBack()
forwardAction.Sensitive <- webView.CanGoForward()
*)

let finishLoad wView =
    stopAction.Sensitive <- false
    refreshAction.Sensitive <- true
    //updateBackForwardButtons

webView.Editable <- false
webView.MaintainsBackForwardList <- true
webView.TitleChanged.Add(fun e -> setWindowTitle e.Title)
webView.LoadCommitted.Add(fun e -> commitLoad(e.Frame.Uri))
webView.LoadFinished.Add(fun _ -> finishLoad(webView))
webView.HoveringOverLink.Add(fun args -> if args.Link = null then ignore()
                                         else statusbar.Push((uint32)1, args.Link) |> ignore)

urlToolItem.Expand <- true
urlEntry.Activated.Add(fun _ -> webView.Open(urlEntry.Text))

backAction.Activated.Add(fun _ -> webView.GoBack())
forwardAction.Activated.Add(fun _ -> webView.GoForward())
stopAction.Activated.Add(fun _ -> webView.StopLoading())
refreshAction.Activated.Add(fun _ -> webView.Reload())

urlToolItem.Add(urlEntry)
toolbar.BorderWidth <- (uint32)6
toolbar.ToolbarStyle <- ToolbarStyle.Icons
toolbar.Add(backAction.CreateToolItem())
toolbar.Add(forwardAction.CreateToolItem())
toolbar.Add(stopAction.CreateToolItem())
toolbar.Add(refreshAction.CreateToolItem())
toolbar.Add(urlToolItem)
webViewContainer.ShadowType <- ShadowType.EtchedIn
webViewContainer.Add(webView)

vBox.PackStart(toolbar, false, false, (uint32)0)
vBox.PackStart(webViewContainer)
vBox.PackEnd(statusbar, false, false, (uint32)0)

window.Add(vBox)

window.WindowPosition <- Gtk.WindowPosition.Center
window.SetDefaultSize(1200, 800)
window.Destroyed.Add(fun _ -> Application.Quit())

webView.Open(url)
window.ShowAll()

Gtk.Application.Run()
Please log in to comment.


You are viewing a mobilized version of this site...
View original page here

Mobilized by Mowser Mowser