Files
wxWidgets/src/richtext/richtexttabspage.cpp
Vadim Zeitlin 3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00

363 lines
10 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: src/richtext/richtexttabspage.cpp
// Purpose:
// Author: Julian Smart
// Modified by:
// Created: 10/4/2006 8:03:20 AM
// Copyright: (c) Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#if wxUSE_RICHTEXT
#include "wx/richtext/richtexttabspage.h"
/*!
* wxRichTextTabsPage type definition
*/
IMPLEMENT_DYNAMIC_CLASS( wxRichTextTabsPage, wxRichTextDialogPage )
/*!
* wxRichTextTabsPage event table definition
*/
BEGIN_EVENT_TABLE( wxRichTextTabsPage, wxRichTextDialogPage )
////@begin wxRichTextTabsPage event table entries
EVT_LISTBOX( ID_RICHTEXTTABSPAGE_TABLIST, wxRichTextTabsPage::OnTablistSelected )
EVT_BUTTON( ID_RICHTEXTTABSPAGE_NEW_TAB, wxRichTextTabsPage::OnNewTabClick )
EVT_UPDATE_UI( ID_RICHTEXTTABSPAGE_NEW_TAB, wxRichTextTabsPage::OnNewTabUpdate )
EVT_BUTTON( ID_RICHTEXTTABSPAGE_DELETE_TAB, wxRichTextTabsPage::OnDeleteTabClick )
EVT_UPDATE_UI( ID_RICHTEXTTABSPAGE_DELETE_TAB, wxRichTextTabsPage::OnDeleteTabUpdate )
EVT_BUTTON( ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS, wxRichTextTabsPage::OnDeleteAllTabsClick )
EVT_UPDATE_UI( ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS, wxRichTextTabsPage::OnDeleteAllTabsUpdate )
////@end wxRichTextTabsPage event table entries
END_EVENT_TABLE()
IMPLEMENT_HELP_PROVISION(wxRichTextTabsPage)
/*!
* wxRichTextTabsPage constructors
*/
wxRichTextTabsPage::wxRichTextTabsPage( )
{
Init();
}
wxRichTextTabsPage::wxRichTextTabsPage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
{
Init();
Create(parent, id, pos, size, style);
}
/*!
* Initialise members
*/
void wxRichTextTabsPage::Init()
{
m_tabsPresent = false;
////@begin wxRichTextTabsPage member initialisation
m_tabEditCtrl = NULL;
m_tabListCtrl = NULL;
////@end wxRichTextTabsPage member initialisation
}
/*!
* wxRichTextTabsPage creator
*/
bool wxRichTextTabsPage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
{
////@begin wxRichTextTabsPage creation
wxRichTextDialogPage::Create( parent, id, pos, size, style );
CreateControls();
if (GetSizer())
{
GetSizer()->SetSizeHints(this);
}
Centre();
////@end wxRichTextTabsPage creation
return true;
}
/*!
* Control creation for wxRichTextTabsPage
*/
void wxRichTextTabsPage::CreateControls()
{
////@begin wxRichTextTabsPage content construction
wxRichTextTabsPage* itemRichTextDialogPage1 = this;
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
itemRichTextDialogPage1->SetSizer(itemBoxSizer2);
wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
itemBoxSizer3->Add(itemBoxSizer4, 1, wxGROW, 5);
wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer4->Add(itemBoxSizer5, 0, wxGROW, 5);
wxStaticText* itemStaticText6 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("&Position (tenths of a mm):"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
m_tabEditCtrl = new wxTextCtrl( itemRichTextDialogPage1, ID_RICHTEXTTABSPAGE_TABEDIT, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_tabEditCtrl->SetHelpText(_("The tab position."));
if (wxRichTextTabsPage::ShowToolTips())
m_tabEditCtrl->SetToolTip(_("The tab position."));
itemBoxSizer5->Add(m_tabEditCtrl, 0, wxGROW|wxALL, 5);
wxArrayString m_tabListCtrlStrings;
m_tabListCtrlStrings.Add(_("The tab positions."));
m_tabListCtrl = new wxListBox( itemRichTextDialogPage1, ID_RICHTEXTTABSPAGE_TABLIST, wxDefaultPosition, wxSize(80, 200), m_tabListCtrlStrings, wxLB_SINGLE );
itemBoxSizer5->Add(m_tabListCtrl, 1, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
wxBoxSizer* itemBoxSizer10 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer4->Add(itemBoxSizer10, 0, wxGROW, 5);
wxStaticText* itemStaticText11 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer10->Add(itemStaticText11, 0, wxALIGN_CENTER_HORIZONTAL|wxBOTTOM, 5);
wxButton* itemButton12 = new wxButton( itemRichTextDialogPage1, ID_RICHTEXTTABSPAGE_NEW_TAB, _("&New"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton12->SetHelpText(_("Click to create a new tab position."));
if (wxRichTextTabsPage::ShowToolTips())
itemButton12->SetToolTip(_("Click to create a new tab position."));
itemBoxSizer10->Add(itemButton12, 0, wxGROW|wxALL, 5);
wxButton* itemButton13 = new wxButton( itemRichTextDialogPage1, ID_RICHTEXTTABSPAGE_DELETE_TAB, _("&Delete"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton13->SetHelpText(_("Click to delete the selected tab position."));
if (wxRichTextTabsPage::ShowToolTips())
itemButton13->SetToolTip(_("Click to delete the selected tab position."));
itemBoxSizer10->Add(itemButton13, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
wxButton* itemButton14 = new wxButton( itemRichTextDialogPage1, ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS, _("Delete A&ll"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton14->SetHelpText(_("Click to delete all tab positions."));
if (wxRichTextTabsPage::ShowToolTips())
itemButton14->SetToolTip(_("Click to delete all tab positions."));
itemBoxSizer10->Add(itemButton14, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
////@end wxRichTextTabsPage content construction
}
/// Transfer data from/to window
bool wxRichTextTabsPage::TransferDataFromWindow()
{
wxPanel::TransferDataFromWindow();
wxRichTextAttr* attr = GetAttributes();
if (m_tabsPresent)
{
wxArrayInt tabs;
size_t i;
for (i = 0; i < m_tabListCtrl->GetCount(); i++)
{
tabs.Add(wxAtoi(m_tabListCtrl->GetString(i)));
}
attr->SetTabs(tabs);
}
return true;
}
bool wxRichTextTabsPage::TransferDataToWindow()
{
wxPanel::TransferDataToWindow();
wxRichTextAttr* attr = GetAttributes();
m_tabListCtrl->Clear();
m_tabEditCtrl->SetValue(wxEmptyString);
if (attr->HasTabs())
{
m_tabsPresent = true;
size_t i;
for (i = 0; i < attr->GetTabs().GetCount(); i++)
{
wxString s(wxString::Format(wxT("%d"), attr->GetTabs()[i]));
m_tabListCtrl->Append(s);
}
}
return true;
}
static int wxTabSortFunc(int* a, int* b)
{
if ((*a) < (*b))
return -1;
else if ((*b) < (*a))
return 1;
else
return 0;
}
/// Sorts the tab array
void wxRichTextTabsPage::SortTabs()
{
wxArrayInt tabs;
size_t i;
for (i = 0; i < m_tabListCtrl->GetCount(); i++)
{
tabs.Add(wxAtoi(m_tabListCtrl->GetString(i)));
}
tabs.Sort(& wxTabSortFunc);
m_tabListCtrl->Clear();
for (i = 0; i < tabs.GetCount(); i++)
{
wxString s(wxString::Format(wxT("%d"), tabs[i]));
m_tabListCtrl->Append(s);
}
}
wxRichTextAttr* wxRichTextTabsPage::GetAttributes()
{
return wxRichTextFormattingDialog::GetDialogAttributes(this);
}
/*!
* Should we show tooltips?
*/
bool wxRichTextTabsPage::ShowToolTips()
{
return wxRichTextFormattingDialog::ShowToolTips();
}
/*!
* Get bitmap resources
*/
wxBitmap wxRichTextTabsPage::GetBitmapResource( const wxString& name )
{
// Bitmap retrieval
////@begin wxRichTextTabsPage bitmap retrieval
wxUnusedVar(name);
return wxNullBitmap;
////@end wxRichTextTabsPage bitmap retrieval
}
/*!
* Get icon resources
*/
wxIcon wxRichTextTabsPage::GetIconResource( const wxString& name )
{
// Icon retrieval
////@begin wxRichTextTabsPage icon retrieval
wxUnusedVar(name);
return wxNullIcon;
////@end wxRichTextTabsPage icon retrieval
}
/*!
* wxEVT_BUTTON event handler for ID_RICHTEXTTABSPAGE_NEW_TAB
*/
void wxRichTextTabsPage::OnNewTabClick( wxCommandEvent& WXUNUSED(event) )
{
wxString str = m_tabEditCtrl->GetValue();
if (!str.empty() && str.IsNumber())
{
wxString s(wxString::Format(wxT("%d"), wxAtoi(str)));
m_tabListCtrl->Append(s);
m_tabsPresent = true;
SortTabs();
}
}
/*!
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_NEW_TAB
*/
void wxRichTextTabsPage::OnNewTabUpdate( wxUpdateUIEvent& event )
{
// This may be a bit expensive - consider updating New button when text
// changes in edit control
wxString str = m_tabEditCtrl->GetValue();
if (!str.empty() && str.IsNumber())
{
wxString s(wxString::Format(wxT("%d"), wxAtoi(str)));
event.Enable(m_tabListCtrl->FindString(s) == wxNOT_FOUND);
}
else
event.Enable(false);
}
/*!
* wxEVT_BUTTON event handler for ID_RICHTEXTTABSPAGE_DELETE_TAB
*/
void wxRichTextTabsPage::OnDeleteTabClick( wxCommandEvent& WXUNUSED(event) )
{
if (m_tabsPresent && m_tabListCtrl->GetCount() > 0 && m_tabListCtrl->GetSelection() != wxNOT_FOUND)
{
m_tabListCtrl->Delete(m_tabListCtrl->GetSelection());
}
}
/*!
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_DELETE_TAB
*/
void wxRichTextTabsPage::OnDeleteTabUpdate( wxUpdateUIEvent& event )
{
event.Enable( m_tabsPresent && m_tabListCtrl->GetCount() > 0 && m_tabListCtrl->GetSelection() != wxNOT_FOUND );
}
/*!
* wxEVT_BUTTON event handler for ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
*/
void wxRichTextTabsPage::OnDeleteAllTabsClick( wxCommandEvent& WXUNUSED(event) )
{
if (m_tabsPresent && m_tabListCtrl->GetCount() > 0)
{
m_tabListCtrl->Clear();
m_tabEditCtrl->SetValue(wxEmptyString);
}
}
/*!
* wxEVT_UPDATE_UI event handler for ID_RICHTEXTTABSPAGE_DELETE_ALL_TABS
*/
void wxRichTextTabsPage::OnDeleteAllTabsUpdate( wxUpdateUIEvent& event )
{
event.Enable( m_tabsPresent && m_tabListCtrl->GetCount() > 0 );
}
/*!
* wxEVT_LISTBOX event handler for ID_RICHTEXTTABSPAGE_TABLIST
*/
void wxRichTextTabsPage::OnTablistSelected( wxCommandEvent& WXUNUSED(event) )
{
wxString str = m_tabListCtrl->GetStringSelection();
if (!str.empty())
m_tabEditCtrl->SetValue(str);
}
#endif // wxUSE_RICHTEXT