+void wxWebViewWebKit::SetEditable(bool enable)
+{
+ webkit_web_view_set_editable(WEBKIT_WEB_VIEW(web_view), enable);
+}
+
+bool wxWebViewWebKit::IsEditable()
+{
+ return webkit_web_view_get_editable(WEBKIT_WEB_VIEW(web_view));
+}
+
+void wxWebViewWebKit::DeleteSelection()
+{
+ webkit_web_view_delete_selection(WEBKIT_WEB_VIEW(web_view));
+}
+
+bool wxWebViewWebKit::HasSelection()
+{
+ return webkit_web_view_has_selection(WEBKIT_WEB_VIEW(web_view));
+}
+
+void wxWebViewWebKit::SelectAll()
+{
+ webkit_web_view_select_all(WEBKIT_WEB_VIEW(web_view));
+}
+
+wxString wxWebViewWebKit::GetSelectedText()
+{
+ WebKitDOMDocument* doc;
+ WebKitDOMDOMWindow* win;
+ WebKitDOMDOMSelection* sel;
+ WebKitDOMRange* range;
+
+ doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(web_view));
+ win = webkit_dom_document_get_default_view(WEBKIT_DOM_DOCUMENT(doc));
+ sel = webkit_dom_dom_window_get_selection(WEBKIT_DOM_DOM_WINDOW(win));
+ range = webkit_dom_dom_selection_get_range_at(WEBKIT_DOM_DOM_SELECTION(sel),
+ 0, NULL);
+ return wxString(webkit_dom_range_get_text(WEBKIT_DOM_RANGE(range)),
+ wxConvUTF8);
+}
+
+wxString wxWebViewWebKit::GetSelectedSource()
+{
+ WebKitDOMDocument* doc;
+ WebKitDOMDOMWindow* win;
+ WebKitDOMDOMSelection* sel;
+ WebKitDOMRange* range;
+ WebKitDOMElement* div;
+ WebKitDOMDocumentFragment* clone;
+ WebKitDOMHTMLElement* html;
+
+ doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(web_view));
+ win = webkit_dom_document_get_default_view(WEBKIT_DOM_DOCUMENT(doc));
+ sel = webkit_dom_dom_window_get_selection(WEBKIT_DOM_DOM_WINDOW(win));
+ range = webkit_dom_dom_selection_get_range_at(WEBKIT_DOM_DOM_SELECTION(sel),
+ 0, NULL);
+ div = webkit_dom_document_create_element(WEBKIT_DOM_DOCUMENT(doc), "div", NULL);
+
+ clone = webkit_dom_range_clone_contents(WEBKIT_DOM_RANGE(range), NULL);
+ webkit_dom_node_append_child(&div->parent_instance, &clone->parent_instance, NULL);
+ html = (WebKitDOMHTMLElement*)div;
+
+ return wxString(webkit_dom_html_element_get_inner_html(WEBKIT_DOM_HTML_ELEMENT(html)),
+ wxConvUTF8);
+}
+
+void wxWebViewWebKit::ClearSelection()
+{
+ WebKitDOMDocument* doc;
+ WebKitDOMDOMWindow* win;
+ WebKitDOMDOMSelection* sel;
+
+ doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(web_view));
+ win = webkit_dom_document_get_default_view(WEBKIT_DOM_DOCUMENT(doc));
+ sel = webkit_dom_dom_window_get_selection(WEBKIT_DOM_DOM_WINDOW(win));
+ webkit_dom_dom_selection_remove_all_ranges(WEBKIT_DOM_DOM_SELECTION(sel));
+
+}
+
+wxString wxWebViewWebKit::GetPageText()
+{
+ WebKitDOMDocument* doc;
+ WebKitDOMHTMLElement* body;
+
+ doc = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(web_view));
+ body = webkit_dom_document_get_body(WEBKIT_DOM_DOCUMENT(doc));
+ return wxString(webkit_dom_html_element_get_inner_text(WEBKIT_DOM_HTML_ELEMENT(body)),
+ wxConvUTF8);
+}
+
+void wxWebViewWebKit::RunScript(const wxString& javascript)
+{
+ webkit_web_view_execute_script(WEBKIT_WEB_VIEW(web_view),
+ javascript.mb_str(wxConvUTF8));
+}
+