gtkhtml-sharp0.0.0.0neutralGtk# is thread aware, but not thread safe; See the Gtk# Thread Programming for details.Lightweight HTML rendering widget. is a lightweight HTML rendering widget, as well as as
simple graphical HTML editor.
Developers can also use it as a widget container (). It is an easy way for viewing HTML
documents in your application and for layout UI of your
application throught HTML.
does not have support for CSS or JavaScript.
The following sample is a very minimal web browser.
using System;
using System.Net;
using System.IO;
using Gtk;
namespace HtmlTest
{
class HtmlTest
{
HTML html;
Entry entry;
string currentUrl;
static void Main (string[] args)
{
new HtmlTest();
}
HtmlTest()
{
Application.Init ();
Window win = new Window ("HtmlTest");
win.SetDefaultSize (800, 600);
win.DeleteEvent += new DeleteEventHandler (OnWindowDelete);
VBox vbox = new VBox (false, 1);
win.Add (vbox);
HBox hbox = new HBox (false, 1);
Label label = new Label ("Address:");
entry = new Entry ("");
entry.Activated += new EventHandler (OnEntryActivated);
Button button = new Button ("Go!");
button.Clicked += new EventHandler (OnButtonClicked);
hbox.PackStart (label, false, false, 1);
hbox.PackStart (entry, true, true, 1);
hbox.PackStart (button, false, false, 1);
vbox.PackStart (hbox, false, false, 1);
ScrolledWindow sw = new ScrolledWindow ();
sw.VscrollbarPolicy = PolicyType.Always;
sw.HscrollbarPolicy = PolicyType.Always;
vbox.PackStart(sw, true, true, 1);
html = new HTML ();
html.LinkClicked += new LinkClickedHandler (OnLinkClicked);
sw.Add (html);
win.ShowAll();
Application.Run ();
}
void OnWindowDelete (object obj, DeleteEventArgs args)
{
Application.Quit();
}
void OnButtonClicked (object obj, EventArgs args)
{
currentUrl = entry.Text.Trim();
LoadHtml (currentUrl);
}
void OnEntryActivated (object obj, EventArgs args)
{
OnButtonClicked (obj, args);
}
void OnLinkClicked (object obj, LinkClickedArgs args)
{
string newUrl;
// decide absolute or relative
if (args.Url.StartsWith("http://"))
newUrl = args.Url;
else
newUrl = currentUrl + args.Url;
try {
LoadHtml (newUrl);
} catch { }
currentUrl = newUrl;
}
void LoadHtml (string URL)
{
HttpWebRequest web_request = (HttpWebRequest) WebRequest.Create (URL);
HttpWebResponse web_response = (HttpWebResponse) web_request.GetResponse ();
Stream stream = web_response.GetResponseStream ();
byte [] buffer = new byte [8192];
HTMLStream html_stream = html.Begin ();
int count;
while ((count = stream.Read (buffer, 0, 8192)) != 0){
html_stream.Write (buffer, count);
}
html.End (html_stream, HTMLStreamStatus.Ok);
}
}
}
Gtk.LayoutAtk.ImplementorGLib.IWrapperGLib.IWrapperSystem.IDisposableMethodSystem.VoidConstructs an instance of a Gtk.HTML widget
A derivative object.
This is a low-level routine, and should only be used
to initialize an instance of a derivative class.MethodSystem.IntPtrLocates an object whose id is provided
The id assigned to an object in the HTML stream
An IntPtr to the internal HTMLObjectMethodSystem.BooleanSends HTML out from the widget.
a , a content type.
an object of type a , true if the export happened successfully, false if otherwise.MethodSystem.VoidCopies the selection to the clipboard.Copies the selection into the clipboard.MethodSystem.VoidSelects the word under the cursor.This routine selects the word under the cursor.MethodSystem.VoidChanges the font style by adjusting flags from bold to regular or vice-versa. For a full list of possible flags, see .
a MethodSystem.VoidSelects a paragraph.MethodSystem.VoidResets the magnification of the text to 100% (normal).MethodSystem.VoidWrites bytes of content from to .
a
a
a MethodSystem.VoidUndoes the last operation.If the widget is Editable, this undoes the last operation.MethodSystem.VoidCuts the selection into the clipboard.If the widget is editable, this cuts the selection
into the clipboard; Otherwise it just copies the selection
into the clipboard.MethodSystem.StringComputes url from widget base url.
The new component of the url.
The new base-relative url.MethodSystem.VoidThis method is designed to be called after the style, indentation, or other font attributes of an editable HTML widget have changed.When this is called, it will trigger the emission of signals for paragraphs whose indentation or style has changed.MethodGtk.HTMLStreamStarts incremental content updating.A handle to push content.
Use the Begin method to push new HTML content into the
widget. The content type is expected to be in the format
defined by ,
which by default is "html/text; charset=utf-8".
using System;
using Gtk;
class X {
static void Main ()
{
Application.Init ();
Window w = new Window ("Sample");
HTML html = new HTML ();
w.Add (html);
w.ShowAll ();
HTMLStream s = html.Begin ();
string line;
while ((line = Console.ReadLine ()) != null)
s.Write (line);
html.End (s, HTMLStreamStatus.Ok);
Application.Run ();
}
}
Compile and run:
mcs sample.cs -pkg:gtkhtml-sharp
echo "<html>
<body>Hello <b>World</b></body>
</html>" | mono sample.exe
MethodSystem.VoidSets up internal references to all images.FIXME: verify this.MethodSystem.VoidPaste clipboard contents into editor
Whether to paste as a citation.
If the widget is in editing mode (see ), the contents of the clipboard
are pasted into the HTML editor. If the value of is true, then the contents are pasted
as a citation.
MethodSystem.VoidSet up an empty widget.MethodSystem.VoidEnds incremental updating
The to close.
The representing the state of the stream when closed.
Closes the represented
by and notifies the HTML widget that
it should not expect any more content from that stream.
using System;
using Gtk;
class X {
static void Main ()
{
Application.Init ();
Window w = new Window ("Sample");
HTML html = new HTML ();
w.Add (html);
w.ShowAll ();
HTMLStream s = html.Begin ();
string line;
while ((line = Console.ReadLine ()) != null)
s.Write (line);
html.End (s, HTMLStreamStatus.Ok);
Application.Run ();
}
}
Compile and run:
mcs sample.cs -pkg:gtkhtml-sharp
echo "<html>
<body>Hello <b>World</b></body>
</html>" | mono sample.exe
MethodSystem.VoidRedoes the last Undone operationIf the widget is editable, this redoes the last
undone operation.MethodSystem.VoidAdds HTML to the end of the HTML currently being rendered by the widget.
an object of type MethodSystem.VoidSelects the line the cursor is currently on.MethodSystem.VoidRemoves an indent level.MethodSystem.VoidSelects all the contents.Selects all of the contents of the HTML widget.MethodGtk.HTMLStreamBegins processing HTML.
an object of type
an object of type
an object of type an object of type MethodSystem.VoidEnables or disables debugging features.
an object of type , true for enabled, false for disabled
MethodSystem.BooleanMakes the edit cursor visible.a , true if the operation was a success.MethodSystem.VoidUnsupported in Gtk#. Installs hooks for the editor.
an object of type
an object of type This API is currently not supported.MethodSystem.VoidTo be added.
an object of type MethodSystem.VoidZooms in.Zooms in the view.MethodSystem.VoidInserts HTML into the existing HTML of the widget.
an object of type MethodSystem.VoidSets the font style for the widget.
an object of type
an object of type MethodSystem.VoidUnrefs an image.
an object of type (TODO: explain refcounting for images.)MethodSystem.VoidRefs an image.
an object of type MethodSystem.BooleanJumps to an anchor by name, making it visible.
The anchor to locate.
if the anchor is found.Scroll the document display to show the HTML anchor requested.MethodSystem.VoidPreloads the image at the URL
a , an image URL.
MethodSystem.Int32To be added
an object of type
an object of type
an object of type
an object of type an object of type MethodSystem.VoidUnrefs images.MethodSystem.BooleanInvokes a delegate function to save the HTML.
a an object of type , whether the operation succeeded.MethodGtk.HTMLStreamStarts incremental content updating. With a specific
content type.
The content type for the data to be
streamed.
A handle to push content.
Use the Begin method to push new HTML content into the
widget. The content type has to be specified (like this
for example: "html/text; charset=utf-8").
using System;
using Gtk;
class X {
static void Main ()
{
Application.Init ();
Window w = new Window ("Sample");
HTML html = new HTML ();
w.Add (html);
w.ShowAll ();
HTMLStream s = html.Begin ("text/html; charset=utf-8");
string line;
while ((line = Console.ReadLine ()) != null)
s.Write (line);
html.End (s, HTMLStreamStatus.Ok);
Application.Run ();
}
}
Compile and run:
mcs sample.cs -pkg:gtkhtml-sharp
echo "<html>
<body>Hello <b>World</b></body>
</html>" | mono sample.exe
MethodSystem.VoidSet whether selection is allowed in this widget.
an object of type , true if selection is allowed.
MethodSystem.VoidDrops all the undo information.Drops all the Undo and Redo information from the widget.MethodSystem.VoidTo be addedMethodSystem.VoidZooms out.Zooms out the view.MethodSystem.BooleanExecute a command on the widget.
an object of type , one of the values named in .
an object of type for whether the command succeeded.MethodSystem.VoidDisposes the resources associated with the object.ConstructorInternal constructor
Pointer to the C object.
An instance of HTML, wrapping the C object.This is an internal constructor, and should not be used by user code.ConstructorCreates an empty widget.The new constructed widget.
It creates an empty widget. The
returned widget is empty, and defaults to not be editable.
PropertySystem.BooleanWhether the contents can be edited.
Editing state.
if the contents are editable,
otherwise.
Whether this instance can be used as an HTML
editor. Note: must be called before this can be set = .
PropertySystem.UInt32The indentation level of a paragraph.an object of type PropertySystem.StringThe base URL of this document.
an object of type an object of type PropertySystem.StringThe title of this HTML document.
an object of type an object of type PropertySystem.StringThe default content type.
an object of type an object of type PropertyGtk.HTMLParagraphStyleThe style of a paragraph.
an object of type an object of type PropertySystem.BooleanTo be added
an object of type an object of type PropertySystem.DoubleThe current widget magnification level.
an object of type an object of type PropertyGtk.HTMLParagraphAlignmentThe alignment of text (right, left, center)
an object of type an object of type PropertySystem.BooleanWhether to allow framesets in this widget.
an object of type an object of type EventGtk.InsertionFontStyleChangedHandlerFired when the font style under the cursor is changed.EventGtk.TitleChangedHandlerOccurs when the title changes in HTML
This event is raised when the HTML parser encounters the
<title> tag on the HTML stream. To get the title, use
the property.
EventGtk.SetBaseHandlerFired when the base URL of the document is changed.EventSystem.EventHandlerFired when the size of text is changed.EventGtk.CurrentParagraphStyleChangedHandlerFired when the text style of this paragraph is changed.EventSystem.EventHandlerFired after a webpage is finished loading.EventGtk.CursorMoveHandlerOccurs when the cursor moves.
This event is raised when the widget is in editing mode and
the cursor has moved.
EventGtk.OnCommandHandlerFired when a command is issued to the widget.EventGtk.UrlRequestedHandlerOccurs when a url is Requested
This event is raised when an URL is requested (typically
an image).
The following example shows how a simple HTML source that
requests an image (hello.png). If the file is found, then
it will be streamed into the HTML widget. The model
allows for data to be delivered as it comes, and when the
data has all arrived, the End method can be invoked on the
html stream provided by the .
using System;
using System.IO;
using Gtk;
class X {
static void Main ()
{
Application.Init ();
Window w = new Window ("Sample");
HTML html = new HTML ();
html.UrlRequested += new UrlRequestedHandler (LoadFromDisk);
w.Add (html);
w.ShowAll ();
HTMLStream s = html.Begin ();
s.Write ("<html><body>My image: <img src=\"hello.png\"></body></html>");
html.End (s, HTMLStreamStatus.Ok);
Application.Run ();
}
static void LoadFromDisk (object sender, UrlRequestedArgs args)
{
try {
FileStream s = File.OpenRead (args.Url);
byte [] buffer = new byte [8192];
int n;
while ((n = s.Read (buffer, 0, 8192)) != 0) {
args.Handle.Write (buffer, n);
}
args.Handle.Close (HTMLStreamStatus.Ok);
} catch {
// Ignore errors.
}
}
}
Make sure there is a "hello.png" file in your directory to
see it, otherwise the sample will show the "broken image
link" image.
mcs sample.cs -pkg:gtkhtml-sharp
mono sample.exe
EventGtk.IframeCreatedHandlerFired after an IFRAME is created.EventGtk.ScrollHandlerFired when the widget is scrolled.EventGtk.CurrentParagraphIndentationChangedHandlerFired when the indent level of the current paragraph is changed.EventGtk.CurrentParagraphAlignmentChangedHandlerFired when the alignment of the current paragraph is changed.EventGtk.InsertionColorChangedHandlerFired when the text color to insert is changed.EventGtk.LinkClickedHandlerOccurs when the user clicks on a hyperlink
This event is raised when the user clicks on a hyperlink
in the HTML widget.
using System;
using System.IO;
using Gtk;
class X {
static void Main ()
{
Application.Init ();
Window w = new Window ("Sample");
HTML html = new HTML ("<html><body>Click <a href=\"http://www.go-mono.com\">me</a>");
html.LinkClicked += new LinkClickedHandler (OnLinkClicked);
w.Add (html);
w.ShowAll ();
Application.Run ();
}
static void OnLinkClicked (object o, LinkClickedArgs args)
{
Console.WriteLine ("The link clicked url is: " + args.Url);
}
}
mcs sample.cs -pkg:gtkhtml-sharp
mono sample.exe
Click on the "me" link to see the message on the console.
EventGtk.SubmitHandlerFired when a form submit button is clicked.EventGtk.RedirectHandlerFired when an HTTP redirect is received.EventGtk.OnUrlHandlerOccurs when the user hovers over a hyper-link.
This event is raised when the mouse pointer hovers over a
hyper link or leaves a link. In the former case the value
of is the link
target, and in the later the empty string.
using System;
using System.IO;
using Gtk;
class X {
static void Main ()
{
Application.Init ();
Window w = new Window ("Sample");
HTML html = new HTML ("<html><body>Click <a href=\"http://www.go-mono.com\">me</a>");
html.OnUrl += new OnUrlHandler (OnUrl);
w.Add (html);
w.ShowAll ();
Application.Run ();
}
static void OnUrl (object o, OnUrlArgs args)
{
Console.WriteLine ("The mouse is over: " + args.Url);
}
}
mcs sample.cs -pkg:gtkhtml-sharp
mono sample.exe
Hover in and out of the link to see the effects on the console.
EventGtk.SetBaseTargetHandlerFired when the base URL target is changed.MethodSystem.VoidLoad a string into the HTML viewing widget.
The string to load.
ConstructorA constructor.
an object of type (FIXME: check this)
an object of type PropertySystem.StringThe base URL of the document.
A containing the URL
A containing the URL.PropertySystem.StringTo be added
an object of type an object of type PropertySystem.BooleanWhether magic links (auto-recognizing URLs and making them clickable) is activated.
a a PropertySystem.BooleanWhether magic smileys (automatically recognizing smileys and turning them into small graphics) is activated.
a a PropertySystem.BooleanTo be added
a a PropertySystem.BooleanWhether or not to check spelling inline by indicating misspelled words.
a a MethodSystem.VoidAdds a header and footer to the HTML and prints it using .
a
a
a
a , a header generation routine
a , a footer generation routine
MethodSystem.VoidTo be added
a MethodSystem.VoidPrints this document using .
a MethodSystem.Int32Gets the number of pages this HTML would print to given a context with the given header and footer heights.
a
a
a a EventGtk.ObjectRequestedHandlerTo be addedPropertySystem.BooleanWhether the widget has an Undo option or not.a PropertyGLib.GTypeGType Property.a Returns the native value for .MethodSystem.VoidDefault handler for the event.
a Override this method in a subclass to provide a default handler for the event.MethodSystem.BooleanDefault handler for the event.
a a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a
a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a
a
a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a
a
a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a Override this method in a subclass to provide a default handler for the event.MethodSystem.BooleanDefault handler for the event.
a a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a
a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidDefault handler for the event.
a Override this method in a subclass to provide a default handler for the event.ConstructorProtected Constructor.
a a Chain to this constructor if you have manually registered a native value for your subclass.PropertySystem.IntPtrSets the indentation level for the widget.a MethodSystem.VoidDefault handler for the event.
a
a Override this method in a subclass to provide a default handler for the event.MethodSystem.VoidWrites bytes of content from to .
a
a
a Use the overload with ulong size for 64 bit deployments.