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 /////////////////////////////////////////////////////////////////////////////
14 #include "wx/richtext/richtexttabspage.h"
17 * wxRichTextTabsPage type definition
20 IMPLEMENT_DYNAMIC_CLASS( wxRichTextTabsPage
, wxPanel
)
23 * wxRichTextTabsPage event table definition
26 BEGIN_EVENT_TABLE( wxRichTextTabsPage
, wxPanel
)
28 ////@begin wxRichTextTabsPage event table entries
29 EVT_LISTBOX( ID_RICHTEXTTABSPAGE_TABLIST
, wxRichTextTabsPage::OnTablistSelected
)
31 EVT_BUTTON( ID_RICHTEXTTABSPAGE_NEW_TAB
, wxRichTextTabsPage::OnNewTabClick
)
32 EVT_UPDATE_UI( ID_RICHTEXTTABSPAGE_NEW_TAB
, wxRichTextTabsPage::OnNewTabUpdate
)
34 EVT_BUTTON( ID_RICHTEXTTABSPAGE_DELETE_TAB
, wxRichTextTabsPage::OnDeleteTabClick
)
35 EVT_UPDATE_UI( ID_RICHTEXTTABSPAGE_DELETE_TAB
, wxRichTextTabsPage::OnDeleteTabUpdate
)
37 EVT_BUTTON( ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
, wxRichTextTabsPage::OnDeleteAllTabsClick
)
38 EVT_UPDATE_UI( ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
, wxRichTextTabsPage::OnDeleteAllTabsUpdate
)
40 ////@end wxRichTextTabsPage event table entries
45 * wxRichTextTabsPage constructors
48 wxRichTextTabsPage::wxRichTextTabsPage( )
53 wxRichTextTabsPage::wxRichTextTabsPage( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
56 Create(parent
, id
, pos
, size
, style
);
63 void wxRichTextTabsPage::Init()
65 m_tabsPresent
= false;
67 ////@begin wxRichTextTabsPage member initialisation
70 ////@end wxRichTextTabsPage member initialisation
74 * wxRichTextTabsPage creator
77 bool wxRichTextTabsPage::Create( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
79 ////@begin wxRichTextTabsPage creation
80 wxPanel::Create( parent
, id
, pos
, size
, style
);
85 GetSizer()->SetSizeHints(this);
88 ////@end wxRichTextTabsPage creation
93 * Control creation for wxRichTextTabsPage
96 void wxRichTextTabsPage::CreateControls()
98 ////@begin wxRichTextTabsPage content construction
99 wxRichTextTabsPage
* itemPanel1
= this;
101 wxBoxSizer
* itemBoxSizer2
= new wxBoxSizer(wxVERTICAL
);
102 itemPanel1
->SetSizer(itemBoxSizer2
);
104 wxBoxSizer
* itemBoxSizer3
= new wxBoxSizer(wxVERTICAL
);
105 itemBoxSizer2
->Add(itemBoxSizer3
, 1, wxGROW
|wxALL
, 5);
107 wxBoxSizer
* itemBoxSizer4
= new wxBoxSizer(wxHORIZONTAL
);
108 itemBoxSizer3
->Add(itemBoxSizer4
, 1, wxGROW
, 5);
110 wxBoxSizer
* itemBoxSizer5
= new wxBoxSizer(wxVERTICAL
);
111 itemBoxSizer4
->Add(itemBoxSizer5
, 0, wxGROW
, 5);
113 wxStaticText
* itemStaticText6
= new wxStaticText( itemPanel1
, wxID_STATIC
, _("&Position (tenths of a mm):"), wxDefaultPosition
, wxDefaultSize
, 0 );
114 itemBoxSizer5
->Add(itemStaticText6
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
, 5);
116 m_tabEditCtrl
= new wxTextCtrl( itemPanel1
, ID_RICHTEXTTABSPAGE_TABEDIT
, wxT(""), wxDefaultPosition
, wxDefaultSize
, 0 );
117 m_tabEditCtrl
->SetHelpText(_("The tab position."));
118 if (wxRichTextTabsPage::ShowToolTips())
119 m_tabEditCtrl
->SetToolTip(_("The tab position."));
120 itemBoxSizer5
->Add(m_tabEditCtrl
, 0, wxGROW
|wxALL
, 5);
122 wxArrayString m_tabListCtrlStrings
;
123 m_tabListCtrlStrings
.Add(_("The tab positions."));
124 m_tabListCtrl
= new wxListBox( itemPanel1
, ID_RICHTEXTTABSPAGE_TABLIST
, wxDefaultPosition
, wxSize(80, 200), m_tabListCtrlStrings
, wxLB_SINGLE
);
125 itemBoxSizer5
->Add(m_tabListCtrl
, 1, wxGROW
|wxLEFT
|wxRIGHT
|wxBOTTOM
, 5);
127 itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5);
129 wxBoxSizer
* itemBoxSizer10
= new wxBoxSizer(wxVERTICAL
);
130 itemBoxSizer4
->Add(itemBoxSizer10
, 0, wxGROW
, 5);
132 wxStaticText
* itemStaticText11
= new wxStaticText( itemPanel1
, wxID_STATIC
, wxT(""), wxDefaultPosition
, wxDefaultSize
, 0 );
133 itemBoxSizer10
->Add(itemStaticText11
, 0, wxALIGN_CENTER_HORIZONTAL
|wxBOTTOM
, 5);
135 wxButton
* itemButton12
= new wxButton( itemPanel1
, ID_RICHTEXTTABSPAGE_NEW_TAB
, _("&New"), wxDefaultPosition
, wxDefaultSize
, 0 );
136 itemButton12
->SetHelpText(_("Click to create a new tab position."));
137 if (wxRichTextTabsPage::ShowToolTips())
138 itemButton12
->SetToolTip(_("Click to create a new tab position."));
139 itemBoxSizer10
->Add(itemButton12
, 0, wxGROW
|wxALL
, 5);
141 wxButton
* itemButton13
= new wxButton( itemPanel1
, ID_RICHTEXTTABSPAGE_DELETE_TAB
, _("&Delete"), wxDefaultPosition
, wxDefaultSize
, 0 );
142 itemButton13
->SetHelpText(_("Click to delete the selected tab position."));
143 if (wxRichTextTabsPage::ShowToolTips())
144 itemButton13
->SetToolTip(_("Click to delete the selected tab position."));
145 itemBoxSizer10
->Add(itemButton13
, 0, wxGROW
|wxLEFT
|wxRIGHT
|wxBOTTOM
, 5);
147 wxButton
* itemButton14
= new wxButton( itemPanel1
, ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
, _("Delete A&ll"), wxDefaultPosition
, wxDefaultSize
, 0 );
148 itemButton14
->SetHelpText(_("Click to delete all tab positions."));
149 if (wxRichTextTabsPage::ShowToolTips())
150 itemButton14
->SetToolTip(_("Click to delete all tab positions."));
151 itemBoxSizer10
->Add(itemButton14
, 0, wxGROW
|wxLEFT
|wxRIGHT
|wxBOTTOM
, 5);
153 ////@end wxRichTextTabsPage content construction
156 /// Transfer data from/to window
157 bool wxRichTextTabsPage::TransferDataFromWindow()
159 wxPanel::TransferDataFromWindow();
161 wxRichTextAttr
* attr
= GetAttributes();
167 for (i
= 0; i
< m_tabListCtrl
->GetCount(); i
++)
169 tabs
.Add(wxAtoi(m_tabListCtrl
->GetString(i
)));
176 bool wxRichTextTabsPage::TransferDataToWindow()
178 wxPanel::TransferDataToWindow();
180 wxRichTextAttr
* attr
= GetAttributes();
182 m_tabListCtrl
->Clear();
183 m_tabEditCtrl
->SetValue(wxEmptyString
);
187 m_tabsPresent
= true;
189 for (i
= 0; i
< attr
->GetTabs().GetCount(); i
++)
191 wxString
s(wxString::Format(wxT("%d"), attr
->GetTabs()[i
]));
192 m_tabListCtrl
->Append(s
);
199 static int wxTabSortFunc(int* a
, int* b
)
203 else if ((*b
) < (*a
))
209 /// Sorts the tab array
210 void wxRichTextTabsPage::SortTabs()
214 for (i
= 0; i
< m_tabListCtrl
->GetCount(); i
++)
216 tabs
.Add(wxAtoi(m_tabListCtrl
->GetString(i
)));
218 tabs
.Sort(& wxTabSortFunc
);
220 m_tabListCtrl
->Clear();
221 for (i
= 0; i
< tabs
.GetCount(); i
++)
223 wxString
s(wxString::Format(wxT("%d"), tabs
[i
]));
224 m_tabListCtrl
->Append(s
);
228 wxRichTextAttr
* wxRichTextTabsPage::GetAttributes()
230 return wxRichTextFormattingDialog::GetDialogAttributes(this);
234 * Should we show tooltips?
237 bool wxRichTextTabsPage::ShowToolTips()
239 return wxRichTextFormattingDialog::ShowToolTips();
243 * Get bitmap resources
246 wxBitmap
wxRichTextTabsPage::GetBitmapResource( const wxString
& name
)
249 ////@begin wxRichTextTabsPage bitmap retrieval
252 ////@end wxRichTextTabsPage bitmap retrieval
259 wxIcon
wxRichTextTabsPage::GetIconResource( const wxString
& name
)
262 ////@begin wxRichTextTabsPage icon retrieval
265 ////@end wxRichTextTabsPage icon retrieval
269 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTTABSPAGE_NEW_TAB
272 void wxRichTextTabsPage::OnNewTabClick( wxCommandEvent
& WXUNUSED(event
) )
274 wxString str
= m_tabEditCtrl
->GetValue();
275 if (!str
.empty() && str
.IsNumber())
277 wxString
s(wxString::Format(wxT("%d"), wxAtoi(str
)));
279 m_tabListCtrl
->Append(s
);
280 m_tabsPresent
= true;
287 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_NEW_TAB
290 void wxRichTextTabsPage::OnNewTabUpdate( wxUpdateUIEvent
& event
)
292 // This may be a bit expensive - consider updating New button when text
293 // changes in edit control
294 wxString str
= m_tabEditCtrl
->GetValue();
295 if (!str
.empty() && str
.IsNumber())
297 wxString
s(wxString::Format(wxT("%d"), wxAtoi(str
)));
298 event
.Enable(m_tabListCtrl
->FindString(s
) == wxNOT_FOUND
);
306 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTTABSPAGE_DELETE_TAB
309 void wxRichTextTabsPage::OnDeleteTabClick( wxCommandEvent
& WXUNUSED(event
) )
311 if (m_tabsPresent
&& m_tabListCtrl
->GetCount() > 0 && m_tabListCtrl
->GetSelection() != wxNOT_FOUND
)
313 m_tabListCtrl
->Delete(m_tabListCtrl
->GetSelection());
318 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_DELETE_TAB
321 void wxRichTextTabsPage::OnDeleteTabUpdate( wxUpdateUIEvent
& event
)
323 event
.Enable( m_tabsPresent
&& m_tabListCtrl
->GetCount() > 0 && m_tabListCtrl
->GetSelection() != wxNOT_FOUND
);
328 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
331 void wxRichTextTabsPage::OnDeleteAllTabsClick( wxCommandEvent
& WXUNUSED(event
) )
333 if (m_tabsPresent
&& m_tabListCtrl
->GetCount() > 0)
335 m_tabListCtrl
->Clear();
336 m_tabEditCtrl
->SetValue(wxEmptyString
);
341 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
344 void wxRichTextTabsPage::OnDeleteAllTabsUpdate( wxUpdateUIEvent
& event
)
346 event
.Enable( m_tabsPresent
&& m_tabListCtrl
->GetCount() > 0 );
351 * wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTTABSPAGE_TABLIST
354 void wxRichTextTabsPage::OnTablistSelected( wxCommandEvent
& WXUNUSED(event
) )
356 wxString str
= m_tabListCtrl
->GetStringSelection();
358 m_tabEditCtrl
->SetValue(str
);
361 #endif // wxUSE_RICHTEXT