Reviewed by Kevin Ollivier.
[WebKit.git] / WebKit / wx / WebFrame.h
index 046a650cea88ae17c00987a66d6510cfcd731ac4..fb9526e5caf49f119ef451f06ba7e22391a0e87f 100644 (file)
     #include "wx/wx.h"
 #endif
 
-#include "WebView.h"
-#include <wx/srchctrl.h>
+class WebFramePrivate;
+class WebViewFrameData;
+class wxWebView;
 
-class WXDLLIMPEXP_WEBKIT wxWebFrame : public wxFrame
-{
-public:
-    // ctor(s)
-#if SWIG
-    %pythonAppend wxWebFrame "self._setOORInfo(self)"
-#endif
-    wxWebFrame(const wxString& title);
+namespace WebCore {
+    class ChromeClientWx;
+    class FrameLoaderClientWx;
+    class EditorClientWx;
+    class Frame;
+}
 
 #ifndef SWIG
-    ~wxWebFrame();
+
+#if WXMAKINGDLL_WEBKIT
+#define WXDLLIMPEXP_WEBKIT WXEXPORT
+#elif defined(WXUSINGDLL_WEBKIT)
+#define WXDLLIMPEXP_WEBKIT WXIMPORT
+#else
+#define WXDLLIMPEXP_WEBKIT
 #endif
 
-    void ShowDebugMenu(bool show = true);
-    wxWebView* webview;
-
-protected:
-
-    // event handlers (these functions should _not_ be virtual)
-    void OnQuit(wxCommandEvent& event);
-    void OnAbout(wxCommandEvent& event);
-    void OnLoadFile(wxCommandEvent& event);
-    void OnAddressBarEnter(wxCommandEvent& event);
-    void OnSearchCtrlEnter(wxCommandEvent& event);
-    void OnLoadEvent(wxWebViewLoadEvent& event);
-    void OnBeforeLoad(wxWebViewBeforeLoadEvent& event);
-    void OnBack(wxCommandEvent& event);
-    void OnForward(wxCommandEvent& event);
-    void OnStop(wxCommandEvent& event);
-    void OnReload(wxCommandEvent& event);
-    void OnBrowse(wxCommandEvent& event);
-    void OnEdit(wxCommandEvent& event);
-    
-    void OnMakeTextLarger(wxCommandEvent& event);
-    void OnMakeTextSmaller(wxCommandEvent& event);
-    void OnGetSource(wxCommandEvent& event);
-    
-    // debug menu items
-    void OnSetSource(wxCommandEvent& event);
-    void OnRunScript(wxCommandEvent& myEvent);
+#else 
+#define WXDLLIMPEXP_WEBKIT
+#endif // SWIG
 
-private:
-    wxTextCtrl* addressBar;
-    wxSearchCtrl* searchCtrl;
+class WXDLLIMPEXP_WEBKIT wxWebViewDOMElementInfo
+{
+public:
+    wxWebViewDOMElementInfo();
 
-    bool m_checkBeforeLoad;
-    wxMenu* m_debugMenu;
-    // any class wishing to process wxWindows events must use this macro
-#ifndef SWIG
-    DECLARE_EVENT_TABLE()
-#endif
+    ~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;
 };
 
-class WXDLLIMPEXP_WEBKIT wxPageSourceViewFrame : public wxFrame
+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:
-    wxPageSourceViewFrame(const wxString& source);
+    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 MakeEditable(bool enable);
+    bool IsEditable() const { return m_isEditable; }
+
+    wxString GetPageTitle() const { return m_title; }
+    void SetPageTitle(const wxString& title) { m_title = title; }
+    
+    WebCore::Frame* GetFrame();
+
+    wxWebViewDOMElementInfo HitTest(const wxPoint& post) const;
+    
+private:
+    float m_textMagnifier;
+    bool m_isEditable;
+    bool m_isInitialized;
+    bool m_beingDestroyed;
+    WebFramePrivate* m_impl;
+    wxString m_title;
+    
 };
 
 #endif // ifndef WXWEBFRAME_H