083043f69469b95dbb23b4e17c02d74daabad3be
[WebKit.git] / WebKit / wx / WebFrame.h
1 /*
2  * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
3  *
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27  
28 #ifndef WXWEBFRAME_H
29 #define WXWEBFRAME_H
30
31 #include "wx/wxprec.h"
32 #ifndef WX_PRECOMP
33     #include "wx/wx.h"
34 #endif
35
36 class WebFramePrivate;
37 class WebViewFrameData;
38 class wxWebView;
39
40 namespace WebCore {
41     class ChromeClientWx;
42     class FrameLoaderClientWx;
43     class EditorClientWx;
44     class Frame;
45 }
46
47 #ifndef SWIG
48
49 #if WXMAKINGDLL_WEBKIT
50 #define WXDLLIMPEXP_WEBKIT WXEXPORT
51 #elif defined(WXUSINGDLL_WEBKIT)
52 #define WXDLLIMPEXP_WEBKIT WXIMPORT
53 #else
54 #define WXDLLIMPEXP_WEBKIT
55 #endif
56
57 #else 
58 #define WXDLLIMPEXP_WEBKIT
59 #endif // SWIG
60
61 class WXDLLIMPEXP_WEBKIT wxWebFrame
62 {
63     // ChromeClientWx needs to get the Page* stored by the wxWebView
64     // for the createWindow function. 
65     friend class WebCore::ChromeClientWx;
66     friend class WebCore::FrameLoaderClientWx;
67     friend class WebCore::EditorClientWx;
68     friend class wxWebView;
69
70     wxWebFrame(wxWebView* container, wxWebFrame* parent = NULL, WebViewFrameData* data = NULL);
71     
72     ~wxWebFrame();
73     
74     void LoadURL(const wxString& url);
75     bool GoBack();
76     bool GoForward();
77     void Stop();
78     void Reload();
79     
80     bool CanGoBack();
81     bool CanGoForward();
82     
83     bool CanCut();
84     bool CanCopy();
85     bool CanPaste();
86     
87     void Cut();
88     void Copy();
89     void Paste();
90     
91     bool CanUndo();
92     bool CanRedo();
93     
94     void Undo();
95     void Redo();
96     
97     wxString GetPageSource();
98     void SetPageSource(const wxString& source, const wxString& baseUrl = wxEmptyString);
99     
100     wxString GetInnerText();
101     wxString GetAsMarkup();
102     wxString GetExternalRepresentation();
103     
104     wxString RunScript(const wxString& javascript);
105     
106     bool CanIncreaseTextSize() const;
107     void IncreaseTextSize();
108     bool CanDecreaseTextSize() const;
109     void DecreaseTextSize();
110     void MakeEditable(bool enable);
111     bool IsEditable() const { return m_isEditable; }
112
113     wxString GetPageTitle() const { return m_title; }
114     void SetPageTitle(const wxString& title) { m_title = title; }
115     
116     WebCore::Frame* GetFrame();
117     
118 private:
119     float m_textMagnifier;
120     bool m_isEditable;
121     bool m_isInitialized;
122     bool m_beingDestroyed;
123     WebFramePrivate* m_impl;
124     wxString m_title;
125     
126 };
127
128 #endif // ifndef WXWEBFRAME_H