1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/richtext/richtexttabspage.cpp
4 // Author: Julian Smart
6 // Created: 10/4/2006 8:03:20 AM
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 // For compilers that support precompilation, includes "wx/wx.h".
13 #include "wx/wxprec.h"
21 #include "wx/richtext/richtexttabspage.h"
27 * wxRichTextTabsPage type definition
30 IMPLEMENT_DYNAMIC_CLASS( wxRichTextTabsPage
, wxPanel
)
33 * wxRichTextTabsPage event table definition
36 BEGIN_EVENT_TABLE( wxRichTextTabsPage
, wxPanel
)
38 ////@begin wxRichTextTabsPage event table entries
39 EVT_LISTBOX( ID_RICHTEXTTABSPAGE_TABLIST
, wxRichTextTabsPage::OnTablistSelected
)
41 EVT_BUTTON( ID_RICHTEXTTABSPAGE_NEW_TAB
, wxRichTextTabsPage::OnNewTabClick
)
42 EVT_UPDATE_UI( ID_RICHTEXTTABSPAGE_NEW_TAB
, wxRichTextTabsPage::OnNewTabUpdate
)
44 EVT_BUTTON( ID_RICHTEXTTABSPAGE_DELETE_TAB
, wxRichTextTabsPage::OnDeleteTabClick
)
45 EVT_UPDATE_UI( ID_RICHTEXTTABSPAGE_DELETE_TAB
, wxRichTextTabsPage::OnDeleteTabUpdate
)
47 EVT_BUTTON( ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
, wxRichTextTabsPage::OnDeleteAllTabsClick
)
48 EVT_UPDATE_UI( ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
, wxRichTextTabsPage::OnDeleteAllTabsUpdate
)
50 ////@end wxRichTextTabsPage event table entries
55 * wxRichTextTabsPage constructors
58 wxRichTextTabsPage::wxRichTextTabsPage( )
63 wxRichTextTabsPage::wxRichTextTabsPage( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
66 Create(parent
, id
, pos
, size
, style
);
73 void wxRichTextTabsPage::Init()
75 m_tabsPresent
= false;
77 ////@begin wxRichTextTabsPage member initialisation
80 ////@end wxRichTextTabsPage member initialisation
84 * wxRichTextTabsPage creator
87 bool wxRichTextTabsPage::Create( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
89 ////@begin wxRichTextTabsPage creation
90 wxPanel::Create( parent
, id
, pos
, size
, style
);
95 GetSizer()->SetSizeHints(this);
98 ////@end wxRichTextTabsPage creation
103 * Control creation for wxRichTextTabsPage
106 void wxRichTextTabsPage::CreateControls()
108 ////@begin wxRichTextTabsPage content construction
109 wxRichTextTabsPage
* itemPanel1
= this;
111 wxBoxSizer
* itemBoxSizer2
= new wxBoxSizer(wxVERTICAL
);
112 itemPanel1
->SetSizer(itemBoxSizer2
);
114 wxBoxSizer
* itemBoxSizer3
= new wxBoxSizer(wxVERTICAL
);
115 itemBoxSizer2
->Add(itemBoxSizer3
, 1, wxGROW
|wxALL
, 5);
117 wxBoxSizer
* itemBoxSizer4
= new wxBoxSizer(wxHORIZONTAL
);
118 itemBoxSizer3
->Add(itemBoxSizer4
, 1, wxGROW
, 5);
120 wxBoxSizer
* itemBoxSizer5
= new wxBoxSizer(wxVERTICAL
);
121 itemBoxSizer4
->Add(itemBoxSizer5
, 0, wxGROW
, 5);
123 wxStaticText
* itemStaticText6
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Position (tenths of a mm):"), wxDefaultPosition
, wxDefaultSize
, 0 );
124 itemBoxSizer5
->Add(itemStaticText6
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
|wxADJUST_MINSIZE
, 5);
126 m_tabEditCtrl
= new wxTextCtrl( itemPanel1
,
127 ID_RICHTEXTTABSPAGE_TABEDIT
,
132 itemBoxSizer5
->Add(m_tabEditCtrl
, 0, wxGROW
|wxALL
, 5);
134 wxString
* m_tabListCtrlStrings
= NULL
;
135 m_tabListCtrl
= new wxListBox( itemPanel1
, ID_RICHTEXTTABSPAGE_TABLIST
, wxDefaultPosition
, wxSize(80, 200), 0, m_tabListCtrlStrings
, wxLB_SINGLE
);
136 itemBoxSizer5
->Add(m_tabListCtrl
, 1, wxGROW
|wxLEFT
|wxRIGHT
|wxBOTTOM
, 5);
138 itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5);
140 wxBoxSizer
* itemBoxSizer10
= new wxBoxSizer(wxVERTICAL
);
141 itemBoxSizer4
->Add(itemBoxSizer10
, 0, wxGROW
, 5);
143 wxStaticText
* itemStaticText11
= new wxStaticText( itemPanel1
,
149 itemBoxSizer10
->Add(itemStaticText11
, 0, wxALIGN_CENTER_HORIZONTAL
|wxBOTTOM
|wxADJUST_MINSIZE
, 5);
151 wxButton
* itemButton12
= new wxButton( itemPanel1
, ID_RICHTEXTTABSPAGE_NEW_TAB
, _("&New"), wxDefaultPosition
, wxDefaultSize
, 0 );
152 itemBoxSizer10
->Add(itemButton12
, 0, wxALIGN_CENTER_HORIZONTAL
|wxALL
, 5);
154 wxButton
* itemButton13
= new wxButton( itemPanel1
, ID_RICHTEXTTABSPAGE_DELETE_TAB
, _("&Delete"), wxDefaultPosition
, wxDefaultSize
, 0 );
155 itemBoxSizer10
->Add(itemButton13
, 0, wxALIGN_CENTER_HORIZONTAL
|wxLEFT
|wxRIGHT
|wxBOTTOM
, 5);
157 wxButton
* itemButton14
= new wxButton( itemPanel1
, ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
, _("Delete A&ll"), wxDefaultPosition
, wxDefaultSize
, 0 );
158 itemBoxSizer10
->Add(itemButton14
, 0, wxALIGN_CENTER_HORIZONTAL
|wxLEFT
|wxRIGHT
|wxBOTTOM
, 5);
160 ////@end wxRichTextTabsPage content construction
163 /// Transfer data from/to window
164 bool wxRichTextTabsPage::TransferDataFromWindow()
166 wxPanel::TransferDataFromWindow();
168 wxTextAttrEx
* attr
= GetAttributes();
174 for (i
= 0; i
< m_tabListCtrl
->GetCount(); i
++)
176 tabs
.Add(wxAtoi(m_tabListCtrl
->GetString(i
)));
183 bool wxRichTextTabsPage::TransferDataToWindow()
185 wxPanel::TransferDataToWindow();
187 wxTextAttrEx
* attr
= GetAttributes();
189 m_tabListCtrl
->Clear();
190 m_tabEditCtrl
->SetValue(wxEmptyString
);
194 m_tabsPresent
= true;
196 for (i
= 0; i
< attr
->GetTabs().GetCount(); i
++)
198 wxString
s(wxString::Format(wxT("%d"), attr
->GetTabs()[i
]));
199 m_tabListCtrl
->Append(s
);
206 static int wxTabSortFunc(int* a
, int* b
)
210 else if ((*b
) < (*a
))
216 /// Sorts the tab array
217 void wxRichTextTabsPage::SortTabs()
221 for (i
= 0; i
< m_tabListCtrl
->GetCount(); i
++)
223 tabs
.Add(wxAtoi(m_tabListCtrl
->GetString(i
)));
225 tabs
.Sort(& wxTabSortFunc
);
227 m_tabListCtrl
->Clear();
228 for (i
= 0; i
< tabs
.GetCount(); i
++)
230 wxString
s(wxString::Format(wxT("%d"), tabs
[i
]));
231 m_tabListCtrl
->Append(s
);
235 wxTextAttrEx
* wxRichTextTabsPage::GetAttributes()
237 return wxRichTextFormattingDialog::GetDialogAttributes(this);
241 * Should we show tooltips?
244 bool wxRichTextTabsPage::ShowToolTips()
250 * Get bitmap resources
253 wxBitmap
wxRichTextTabsPage::GetBitmapResource( const wxString
& name
)
256 ////@begin wxRichTextTabsPage bitmap retrieval
259 ////@end wxRichTextTabsPage bitmap retrieval
266 wxIcon
wxRichTextTabsPage::GetIconResource( const wxString
& name
)
269 ////@begin wxRichTextTabsPage icon retrieval
272 ////@end wxRichTextTabsPage icon retrieval
276 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTTABSPAGE_NEW_TAB
279 void wxRichTextTabsPage::OnNewTabClick( wxCommandEvent
& WXUNUSED(event
) )
281 wxString str
= m_tabEditCtrl
->GetValue();
282 if (!str
.empty() && str
.IsNumber())
284 wxString
s(wxString::Format(wxT("%d"), wxAtoi(str
)));
286 m_tabListCtrl
->Append(s
);
287 m_tabsPresent
= true;
294 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_NEW_TAB
297 void wxRichTextTabsPage::OnNewTabUpdate( wxUpdateUIEvent
& event
)
299 // This may be a bit expensive - consider updating New button when text
300 // changes in edit control
301 wxString str
= m_tabEditCtrl
->GetValue();
302 if (!str
.empty() && str
.IsNumber())
304 wxString
s(wxString::Format(wxT("%d"), wxAtoi(str
)));
305 event
.Enable(m_tabListCtrl
->FindString(s
) == wxNOT_FOUND
);
313 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTTABSPAGE_DELETE_TAB
316 void wxRichTextTabsPage::OnDeleteTabClick( wxCommandEvent
& WXUNUSED(event
) )
318 if (m_tabsPresent
&& m_tabListCtrl
->GetCount() > 0 && m_tabListCtrl
->GetSelection() != wxNOT_FOUND
)
320 m_tabListCtrl
->Delete(m_tabListCtrl
->GetSelection());
325 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_DELETE_TAB
328 void wxRichTextTabsPage::OnDeleteTabUpdate( wxUpdateUIEvent
& event
)
330 event
.Enable( m_tabsPresent
&& m_tabListCtrl
->GetCount() > 0 && m_tabListCtrl
->GetSelection() != wxNOT_FOUND
);
335 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
338 void wxRichTextTabsPage::OnDeleteAllTabsClick( wxCommandEvent
& WXUNUSED(event
) )
340 if (m_tabsPresent
&& m_tabListCtrl
->GetCount() > 0)
342 m_tabListCtrl
->Clear();
343 m_tabEditCtrl
->SetValue(wxEmptyString
);
348 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
351 void wxRichTextTabsPage::OnDeleteAllTabsUpdate( wxUpdateUIEvent
& event
)
353 event
.Enable( m_tabsPresent
&& m_tabListCtrl
->GetCount() > 0 );
358 * wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTTABSPAGE_TABLIST
361 void wxRichTextTabsPage::OnTablistSelected( wxCommandEvent
& WXUNUSED(event
) )
363 wxString str
= m_tabListCtrl
->GetStringSelection();
365 m_tabEditCtrl
->SetValue(str
);
368 #endif // wxUSE_RICHTEXT