/[pcsx2_0.9.7]/branch/r3113_0.9.7_beta/3rdparty/wxWidgets/src/generic/propdlg.cpp
ViewVC logotype

Annotation of /branch/r3113_0.9.7_beta/3rdparty/wxWidgets/src/generic/propdlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 31 - (hide annotations) (download)
Tue Sep 7 03:24:11 2010 UTC (10 years ago) by william
Original Path: trunk/3rdparty/wxWidgets/src/generic/propdlg.cpp
File size: 6683 byte(s)
committing r3113 initial commit again...
1 william 31 /////////////////////////////////////////////////////////////////////////////
2     // Name: src/generic/propdlg.cpp
3     // Purpose: wxPropertySheetDialog
4     // Author: Julian Smart
5     // Modified by:
6     // Created: 2005-03-12
7     // RCS-ID: $Id: propdlg.cpp 41838 2006-10-09 21:08:45Z VZ $
8     // Copyright: (c) Julian Smart
9     // Licence: wxWindows licence
10     /////////////////////////////////////////////////////////////////////////////
11    
12     // For compilers that support precompilation, includes "wx.h".
13     #include "wx/wxprec.h"
14    
15     #ifdef __BORLANDC__
16     #pragma hdrstop
17     #endif
18    
19     #if wxUSE_BOOKCTRL
20    
21     #ifndef WX_PRECOMP
22     #include "wx/button.h"
23     #include "wx/sizer.h"
24     #include "wx/intl.h"
25     #include "wx/log.h"
26     #include "wx/msgdlg.h"
27     #endif
28    
29     #include "wx/bookctrl.h"
30    
31     #if wxUSE_NOTEBOOK
32     #include "wx/notebook.h"
33     #endif
34     #if wxUSE_CHOICEBOOK
35     #include "wx/choicebk.h"
36     #endif
37     #if wxUSE_TOOLBOOK
38     #include "wx/toolbook.h"
39     #endif
40     #if wxUSE_LISTBOOK
41     #include "wx/listbook.h"
42     #endif
43     #if wxUSE_TREEBOOK
44     #include "wx/treebook.h"
45     #endif
46    
47     #include "wx/generic/propdlg.h"
48     #include "wx/sysopt.h"
49    
50     //-----------------------------------------------------------------------------
51     // wxPropertySheetDialog
52     //-----------------------------------------------------------------------------
53    
54     IMPLEMENT_DYNAMIC_CLASS(wxPropertySheetDialog, wxDialog)
55    
56     BEGIN_EVENT_TABLE(wxPropertySheetDialog, wxDialog)
57     EVT_ACTIVATE(wxPropertySheetDialog::OnActivate)
58     EVT_IDLE(wxPropertySheetDialog::OnIdle)
59     END_EVENT_TABLE()
60    
61     bool wxPropertySheetDialog::Create(wxWindow* parent, wxWindowID id, const wxString& title,
62     const wxPoint& pos, const wxSize& sz, long style,
63     const wxString& name)
64     {
65     if (!wxDialog::Create(parent, id, title, pos, sz, style|wxCLIP_CHILDREN, name))
66     return false;
67    
68     wxBoxSizer *topSizer = new wxBoxSizer( wxVERTICAL );
69     SetSizer(topSizer);
70    
71     // This gives more space around the edges
72     m_innerSizer = new wxBoxSizer( wxVERTICAL );
73    
74     #if defined(__SMARTPHONE__) || defined(__POCKETPC__)
75     m_sheetOuterBorder = 0;
76     #endif
77     topSizer->Add(m_innerSizer, 1, wxGROW|wxALL, m_sheetOuterBorder);
78    
79     m_bookCtrl = CreateBookCtrl();
80     AddBookCtrl(m_innerSizer);
81    
82     return true;
83     }
84    
85     void wxPropertySheetDialog::Init()
86     {
87     m_sheetStyle = wxPROPSHEET_DEFAULT;
88     m_innerSizer = NULL;
89     m_bookCtrl = NULL;
90     m_sheetOuterBorder = 2;
91     m_sheetInnerBorder = 5;
92     }
93    
94     // Layout the dialog, to be called after pages have been created
95     void wxPropertySheetDialog::LayoutDialog(int centreFlags)
96     {
97     #if !defined(__SMARTPHONE__) && !defined(__POCKETPC__)
98     GetSizer()->Fit(this);
99     GetSizer()->SetSizeHints(this);
100     if (centreFlags)
101     Centre(centreFlags);
102     #else
103     wxUnusedVar(centreFlags);
104     #endif
105     #if defined(__SMARTPHONE__)
106     if (m_bookCtrl)
107     m_bookCtrl->SetFocus();
108     #endif
109     }
110    
111     // Creates the buttons, if any
112     void wxPropertySheetDialog::CreateButtons(int flags)
113     {
114     #ifdef __POCKETPC__
115     // keep system option status
116     const wxChar *optionName = wxT("wince.dialog.real-ok-cancel");
117     const int status = wxSystemOptions::GetOptionInt(optionName);
118     wxSystemOptions::SetOption(optionName,0);
119     #endif
120    
121     wxSizer *buttonSizer = CreateButtonSizer( flags & ButtonSizerFlags );
122     if( buttonSizer )
123     {
124     m_innerSizer->Add( buttonSizer, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT|wxRIGHT, 2);
125     m_innerSizer->AddSpacer(2);
126     }
127    
128     #ifdef __POCKETPC__
129     // restore system option
130     wxSystemOptions::SetOption(optionName,status);
131     #endif
132     }
133    
134     // Creates the book control
135     wxBookCtrlBase* wxPropertySheetDialog::CreateBookCtrl()
136     {
137     int style = wxCLIP_CHILDREN | wxBK_DEFAULT;
138    
139     wxBookCtrlBase* bookCtrl = NULL;
140    
141     #if wxUSE_NOTEBOOK
142     if (GetSheetStyle() & wxPROPSHEET_NOTEBOOK)
143     bookCtrl = new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style );
144     #endif
145     #if wxUSE_CHOICEBOOK
146     if (GetSheetStyle() & wxPROPSHEET_CHOICEBOOK)
147     bookCtrl = new wxChoicebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style );
148     #endif
149     #if wxUSE_TOOLBOOK
150     #if defined(__WXMAC__) && wxUSE_TOOLBAR && wxUSE_BMPBUTTON
151     if (GetSheetStyle() & wxPROPSHEET_BUTTONTOOLBOOK)
152     bookCtrl = new wxToolbook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style|wxBK_BUTTONBAR );
153     else
154     #endif
155     if ((GetSheetStyle() & wxPROPSHEET_TOOLBOOK) || (GetSheetStyle() & wxPROPSHEET_BUTTONTOOLBOOK))
156     bookCtrl = new wxToolbook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style );
157     #endif
158     #if wxUSE_LISTBOOK
159     if (GetSheetStyle() & wxPROPSHEET_LISTBOOK)
160     bookCtrl = new wxListbook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style );
161     #endif
162     #if wxUSE_TREEBOOK
163     if (GetSheetStyle() & wxPROPSHEET_TREEBOOK)
164     bookCtrl = new wxTreebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style );
165     #endif
166     if (!bookCtrl)
167     bookCtrl = new wxBookCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style );
168    
169     if (GetSheetStyle() & wxPROPSHEET_SHRINKTOFIT)
170     bookCtrl->SetFitToCurrentPage(true);
171    
172     return bookCtrl;
173     }
174    
175     // Adds the book control to the inner sizer.
176     void wxPropertySheetDialog::AddBookCtrl(wxSizer* sizer)
177     {
178     #if defined(__POCKETPC__) && wxUSE_NOTEBOOK
179     // The book control has to be sized larger than the dialog because of a border bug
180     // in WinCE
181     int borderSize = -2;
182     sizer->Add( m_bookCtrl, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxRIGHT, borderSize );
183     #else
184     sizer->Add( m_bookCtrl, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, m_sheetInnerBorder );
185     #endif
186     }
187    
188     void wxPropertySheetDialog::OnActivate(wxActivateEvent& event)
189     {
190     #if defined(__SMARTPHONE__)
191     // Attempt to focus the choice control: not yet working, but might
192     // be a step in the right direction. OnActivate overrides the default
193     // handler in toplevel.cpp that sets the focus for the first child of
194     // of the dialog (the choicebook).
195     if (event.GetActive())
196     {
197     wxChoicebook* choiceBook = wxDynamicCast(GetBookCtrl(), wxChoicebook);
198     if (choiceBook)
199     choiceBook->SetFocus();
200     }
201     else
202     #endif
203     event.Skip();
204     }
205    
206     // Resize dialog if necessary
207     void wxPropertySheetDialog::OnIdle(wxIdleEvent& event)
208     {
209     event.Skip();
210    
211     if ((GetSheetStyle() & wxPROPSHEET_SHRINKTOFIT) && GetBookCtrl())
212     {
213     int sel = GetBookCtrl()->GetSelection();
214     if (sel != -1 && sel != m_selectedPage)
215     {
216     GetBookCtrl()->InvalidateBestSize();
217     InvalidateBestSize();
218     SetSizeHints(-1, -1, -1, -1);
219    
220     m_selectedPage = sel;
221     LayoutDialog(0);
222     }
223     }
224     }
225    
226     #endif // wxUSE_BOOKCTRL

  ViewVC Help
Powered by ViewVC 1.1.22