WebKit/wx/WebFrame.h
changeset 0 4f2f89ce4247
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WebKit/wx/WebFrame.h	Fri Sep 17 09:02:29 2010 +0300
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ 
+#ifndef WXWEBFRAME_H
+#define WXWEBFRAME_H
+
+#include "wx/wxprec.h"
+#ifndef WX_PRECOMP
+    #include "wx/wx.h"
+#endif
+
+#include "WebKitDefines.h"
+
+class WebFramePrivate;
+class WebViewFrameData;
+class wxWebView;
+
+namespace WebCore {
+    class ChromeClientWx;
+    class FrameLoaderClientWx;
+    class EditorClientWx;
+    class Frame;
+}
+
+class WXDLLIMPEXP_WEBKIT wxWebViewDOMElementInfo
+{
+public:
+    wxWebViewDOMElementInfo();
+
+    ~wxWebViewDOMElementInfo() { }
+
+    wxString GetTagName() const { return m_tagName; }
+    void SetTagName(const wxString& name) { m_tagName = name; }
+
+    bool IsSelected() const { return m_isSelected; }
+    void SetSelected(bool sel) { m_isSelected = sel; }
+
+    wxString GetText() const { return m_text; }
+    void SetText(const wxString& text) { m_text = text; }
+
+    wxString GetImageSrc() const { return m_imageSrc; }
+    void SetImageSrc(const wxString& src) { m_imageSrc = src; }
+
+    wxString GetLink() const { return m_link; }
+    void SetLink(const wxString& link) { m_link = link; }
+
+private:
+    void* m_domElement;
+    bool m_isSelected;
+    wxString m_tagName;
+    wxString m_text;
+    wxString m_imageSrc;
+    wxString m_link;
+};
+
+// based on enums in WebCore/dom/Document.h
+enum wxWebKitParseMode { Compat, AlmostStrict, Strict, NoDocument };
+
+class WXDLLIMPEXP_WEBKIT wxWebFrame
+{
+    // ChromeClientWx needs to get the Page* stored by the wxWebView
+    // for the createWindow function. 
+    friend class WebCore::ChromeClientWx;
+    friend class WebCore::FrameLoaderClientWx;
+    friend class WebCore::EditorClientWx;
+    friend class wxWebView;
+
+public:
+    wxWebFrame(wxWebView* container, wxWebFrame* parent = NULL, WebViewFrameData* data = NULL);
+    
+    ~wxWebFrame();
+    
+    void LoadURL(const wxString& url);
+    bool GoBack();
+    bool GoForward();
+    void Stop();
+    void Reload();
+    
+    bool CanGoBack();
+    bool CanGoForward();
+    
+    bool CanCut();
+    bool CanCopy();
+    bool CanPaste();
+    
+    void Cut();
+    void Copy();
+    void Paste();
+    
+    bool CanUndo();
+    bool CanRedo();
+    
+    void Undo();
+    void Redo();
+    
+    wxString GetPageSource();
+    void SetPageSource(const wxString& source, const wxString& baseUrl = wxEmptyString);
+    
+    wxString GetInnerText();
+    wxString GetAsMarkup();
+    wxString GetExternalRepresentation();
+    
+    wxString RunScript(const wxString& javascript);
+    
+    bool FindString(const wxString& string, bool forward = true,
+        bool caseSensitive = false, bool wrapSelection = true,
+        bool startInSelection = true);
+    
+    bool CanIncreaseTextSize() const;
+    void IncreaseTextSize();
+    bool CanDecreaseTextSize() const;
+    void DecreaseTextSize();
+    void ResetTextSize();
+    void MakeEditable(bool enable);
+    bool IsEditable() const { return m_isEditable; }
+    
+    WebCore::Frame* GetFrame();
+
+    wxWebViewDOMElementInfo HitTest(const wxPoint& post) const;
+    
+    bool ShouldClose() const;
+    
+    wxWebKitParseMode GetParseMode() const;
+    
+    void GrantUniversalAccess();
+    
+private:
+    float m_textMagnifier;
+    bool m_isEditable;
+    bool m_isInitialized;
+    bool m_beingDestroyed;
+    WebFramePrivate* m_impl;
+    
+};
+
+#endif // ifndef WXWEBFRAME_H