diff --git a/include/wx/richtext/richtextborderspage.h b/include/wx/richtext/richtextborderspage.h
index d47a863bcd..2bd0f3bedc 100644
--- a/include/wx/richtext/richtextborderspage.h
+++ b/include/wx/richtext/richtextborderspage.h
@@ -94,7 +94,7 @@ public:
////@begin wxRichTextBordersPage event handler declarations
- /// wxEVT_CHECKBOX event handler for ID_RICHTEXT_BORDER_LEFT_CHECKBOX
+ /// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXT_BORDER_LEFT_CHECKBOX
void OnRichtextBorderCheckboxClick( wxCommandEvent& event );
/// wxEVT_UPDATE_UI event handler for ID_RICHTEXT_BORDER_LEFT
diff --git a/include/wx/richtext/richtextformatdlg.h b/include/wx/richtext/richtextformatdlg.h
index acee4238a2..18a91bbceb 100644
--- a/include/wx/richtext/richtextformatdlg.h
+++ b/include/wx/richtext/richtextformatdlg.h
@@ -224,14 +224,16 @@ public:
/// Determines whether tooltips will be shown
static void SetShowToolTips(bool show) { sm_showToolTips = show; }
- /// Set the dimension into the value and units controls
- static void SetDimensionValue(wxTextAttrDimension& dim, wxTextCtrl* valueCtrl, wxComboBox* unitsCtrl, wxCheckBox* checkBox);
+ /// Set the dimension into the value and units controls. Optionally pass units to
+ /// specify the ordering of units in the combobox.
+ static void SetDimensionValue(wxTextAttrDimension& dim, wxTextCtrl* valueCtrl, wxComboBox* unitsCtrl, wxCheckBox* checkBox, wxArrayInt* units = NULL);
- /// Get the dimension from the value and units controls
- static void GetDimensionValue(wxTextAttrDimension& dim, wxTextCtrl* valueCtrl, wxComboBox* unitsCtrl, wxCheckBox* checkBox);
+ /// Get the dimension from the value and units controls Optionally pass units to
+ /// specify the ordering of units in the combobox.
+ static void GetDimensionValue(wxTextAttrDimension& dim, wxTextCtrl* valueCtrl, wxComboBox* unitsCtrl, wxCheckBox* checkBox, wxArrayInt* units = NULL);
- /// Convert CM to MM
- static bool ConvertFromString(const wxString& string, int& ret, int scale);
+ /// Convert from a string to a dimension integer.
+ static bool ConvertFromString(const wxString& str, int& ret, int unit);
/// Map book control page index to our page id
void AddPageId(int id) { m_pageIds.Add(id); }
diff --git a/include/wx/richtext/richtextimagedlg.h b/include/wx/richtext/richtextimagedlg.h
index e7e5bf25fe..96d67aecc0 100644
--- a/include/wx/richtext/richtextimagedlg.h
+++ b/include/wx/richtext/richtextimagedlg.h
@@ -34,13 +34,11 @@ class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
* Control identifiers
*/
-////@begin control identifiers
#define SYMBOL_WXRICHTEXTOBJECTPROPERTIESDIALOG_STYLE wxDEFAULT_DIALOG_STYLE|wxTAB_TRAVERSAL
#define SYMBOL_WXRICHTEXTOBJECTPROPERTIESDIALOG_TITLE wxGetTranslation("Object Properties")
#define SYMBOL_WXRICHTEXTOBJECTPROPERTIESDIALOG_IDNAME ID_RICHTEXTOBJECTPROPERTIESDIALOG
#define SYMBOL_WXRICHTEXTOBJECTPROPERTIESDIALOG_SIZE wxSize(400, 300)
#define SYMBOL_WXRICHTEXTOBJECTPROPERTIESDIALOG_POSITION wxDefaultPosition
-////@end control identifiers
/*!
* wxRichTextObjectPropertiesDialog class declaration
diff --git a/include/wx/richtext/richtextstyledlg.h b/include/wx/richtext/richtextstyledlg.h
index d8bea2630e..f3d002bae6 100644
--- a/include/wx/richtext/richtextstyledlg.h
+++ b/include/wx/richtext/richtextstyledlg.h
@@ -42,13 +42,11 @@ class WXDLLIMPEXP_FWD_CORE wxCheckBox;
* Control identifiers
*/
-////@begin control identifiers
#define SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_STYLE wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX
#define SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_TITLE wxGetTranslation("Style Organiser")
#define SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_IDNAME ID_RICHTEXTSTYLEORGANISERDIALOG
#define SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_SIZE wxSize(400, 300)
#define SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_POSITION wxDefaultPosition
-////@end control identifiers
/*!
* Flags for specifying permitted operations
diff --git a/src/richtext/richtextborderspage.cpp b/src/richtext/richtextborderspage.cpp
index 40f66d419a..7e9231f3ab 100644
--- a/src/richtext/richtextborderspage.cpp
+++ b/src/richtext/richtextborderspage.cpp
@@ -40,85 +40,45 @@ BEGIN_EVENT_TABLE( wxRichTextBordersPage, wxRichTextDialogPage )
////@begin wxRichTextBordersPage event table entries
EVT_CHECKBOX( ID_RICHTEXT_BORDER_LEFT_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_LEFT, wxRichTextBordersPage::OnRichtextBorderLeftUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_LEFT_UNITS, wxRichTextBordersPage::OnRichtextBorderLeftUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_LEFT_STYLE, wxRichTextBordersPage::OnRichtextBorderLeftUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_LEFT_COLOUR, wxRichTextBordersPage::OnRichtextBorderLeftUpdate )
-
EVT_CHECKBOX( ID_RICHTEXT_BORDER_RIGHT_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_RIGHT, wxRichTextBordersPage::OnRichtextBorderRightUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_RIGHT_UNITS, wxRichTextBordersPage::OnRichtextBorderRightUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_RIGHT_STYLE, wxRichTextBordersPage::OnRichtextBorderRightUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_RIGHT_COLOUR, wxRichTextBordersPage::OnRichtextBorderRightUpdate )
-
EVT_CHECKBOX( ID_RICHTEXT_BORDER_TOP_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_TOP, wxRichTextBordersPage::OnRichtextBorderTopUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_TOP_UNITS, wxRichTextBordersPage::OnRichtextBorderTopUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_TOP_STYLE, wxRichTextBordersPage::OnRichtextBorderTopUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_TOP_COLOUR, wxRichTextBordersPage::OnRichtextBorderTopUpdate )
-
EVT_CHECKBOX( ID_RICHTEXT_BORDER_BOTTOM_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_BOTTOM, wxRichTextBordersPage::OnRichtextBorderBottomUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_BOTTOM_UNITS, wxRichTextBordersPage::OnRichtextBorderBottomUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_BOTTOM_STYLE, wxRichTextBordersPage::OnRichtextBorderBottomUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_BORDER_BOTTOM_COLOUR, wxRichTextBordersPage::OnRichtextBorderBottomUpdate )
-
EVT_CHECKBOX( ID_RICHTEXT_OUTLINE_LEFT_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_LEFT, wxRichTextBordersPage::OnRichtextOutlineLeftUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_LEFT_UNITS, wxRichTextBordersPage::OnRichtextOutlineLeftUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_LEFT_STYLE, wxRichTextBordersPage::OnRichtextOutlineLeftUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_LEFT_COLOUR, wxRichTextBordersPage::OnRichtextOutlineLeftUpdate )
-
EVT_CHECKBOX( ID_RICHTEXT_OUTLINE_RIGHT_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_RIGHT, wxRichTextBordersPage::OnRichtextOutlineRightUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_RIGHT_UNITS, wxRichTextBordersPage::OnRichtextOutlineRightUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_RIGHT_STYLE, wxRichTextBordersPage::OnRichtextOutlineRightUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_RIGHT_COLOUR, wxRichTextBordersPage::OnRichtextOutlineRightUpdate )
-
EVT_CHECKBOX( ID_RICHTEXT_OUTLINE_TOP_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_TOP, wxRichTextBordersPage::OnRichtextOutlineTopUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_TOP_UNITS, wxRichTextBordersPage::OnRichtextOutlineTopUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_TOP_STYLE, wxRichTextBordersPage::OnRichtextOutlineTopUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_TOP_COLOUR, wxRichTextBordersPage::OnRichtextOutlineTopUpdate )
-
EVT_CHECKBOX( ID_RICHTEXT_OUTLINE_BOTTOM_CHECKBOX, wxRichTextBordersPage::OnRichtextBorderCheckboxClick )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_BOTTOM, wxRichTextBordersPage::OnRichtextOutlineBottomUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_BOTTOM_UNITS, wxRichTextBordersPage::OnRichtextOutlineBottomUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_BOTTOM_STYLE, wxRichTextBordersPage::OnRichtextOutlineBottomUpdate )
-
EVT_UPDATE_UI( ID_RICHTEXT_OUTLINE_BOTTOM_COLOUR, wxRichTextBordersPage::OnRichtextOutlineBottomUpdate )
-
////@end wxRichTextBordersPage event table entries
END_EVENT_TABLE()
@@ -278,6 +238,7 @@ void wxRichTextBordersPage::CreateControls()
wxArrayString m_leftBorderWidthUnitsStrings;
m_leftBorderWidthUnitsStrings.Add(_("px"));
m_leftBorderWidthUnitsStrings.Add(_("cm"));
+ m_leftBorderWidthUnitsStrings.Add(_("pt"));
m_leftBorderWidthUnits = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_LEFT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_leftBorderWidthUnitsStrings, wxCB_READONLY );
m_leftBorderWidthUnits->SetStringSelection(_("px"));
m_leftBorderWidthUnits->SetHelpText(_("Units for the left border width."));
@@ -308,6 +269,7 @@ void wxRichTextBordersPage::CreateControls()
wxArrayString m_rightBorderWidthUnitsStrings;
m_rightBorderWidthUnitsStrings.Add(_("px"));
m_rightBorderWidthUnitsStrings.Add(_("cm"));
+ m_rightBorderWidthUnitsStrings.Add(_("pt"));
m_rightBorderWidthUnits = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_RIGHT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_rightBorderWidthUnitsStrings, wxCB_READONLY );
m_rightBorderWidthUnits->SetStringSelection(_("px"));
m_rightBorderWidthUnits->SetHelpText(_("Units for the right border width."));
@@ -338,6 +300,7 @@ void wxRichTextBordersPage::CreateControls()
wxArrayString m_topBorderWidthUnitsStrings;
m_topBorderWidthUnitsStrings.Add(_("px"));
m_topBorderWidthUnitsStrings.Add(_("cm"));
+ m_topBorderWidthUnitsStrings.Add(_("pt"));
m_topBorderWidthUnits = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_TOP_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_topBorderWidthUnitsStrings, wxCB_READONLY );
m_topBorderWidthUnits->SetStringSelection(_("px"));
m_topBorderWidthUnits->SetHelpText(_("Units for the top border width."));
@@ -368,6 +331,7 @@ void wxRichTextBordersPage::CreateControls()
wxArrayString m_bottomBorderWidthUnitsStrings;
m_bottomBorderWidthUnitsStrings.Add(_("px"));
m_bottomBorderWidthUnitsStrings.Add(_("cm"));
+ m_bottomBorderWidthUnitsStrings.Add(_("pt"));
m_bottomBorderWidthUnits = new wxComboBox( itemPanel5, ID_RICHTEXT_BORDER_BOTTOM_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_bottomBorderWidthUnitsStrings, wxCB_READONLY );
m_bottomBorderWidthUnits->SetStringSelection(_("px"));
m_bottomBorderWidthUnits->SetHelpText(_("Units for the bottom border width."));
@@ -422,6 +386,7 @@ void wxRichTextBordersPage::CreateControls()
wxArrayString m_leftOutlineWidthUnitsStrings;
m_leftOutlineWidthUnitsStrings.Add(_("px"));
m_leftOutlineWidthUnitsStrings.Add(_("cm"));
+ m_leftOutlineWidthUnitsStrings.Add(_("pt"));
m_leftOutlineWidthUnits = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_LEFT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_leftOutlineWidthUnitsStrings, wxCB_READONLY );
m_leftOutlineWidthUnits->SetStringSelection(_("px"));
m_leftOutlineWidthUnits->SetHelpText(_("Units for the left outline width."));
@@ -452,6 +417,7 @@ void wxRichTextBordersPage::CreateControls()
wxArrayString m_rightOutlineWidthUnitsStrings;
m_rightOutlineWidthUnitsStrings.Add(_("px"));
m_rightOutlineWidthUnitsStrings.Add(_("cm"));
+ m_rightOutlineWidthUnitsStrings.Add(_("pt"));
m_rightOutlineWidthUnits = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_RIGHT_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_rightOutlineWidthUnitsStrings, wxCB_READONLY );
m_rightOutlineWidthUnits->SetStringSelection(_("px"));
m_rightOutlineWidthUnits->SetHelpText(_("Units for the right outline width."));
@@ -482,6 +448,7 @@ void wxRichTextBordersPage::CreateControls()
wxArrayString m_topOutlineWidthUnitsStrings;
m_topOutlineWidthUnitsStrings.Add(_("px"));
m_topOutlineWidthUnitsStrings.Add(_("cm"));
+ m_topOutlineWidthUnitsStrings.Add(_("pt"));
m_topOutlineWidthUnits = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_TOP_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_topOutlineWidthUnitsStrings, wxCB_READONLY );
m_topOutlineWidthUnits->SetStringSelection(_("px"));
m_topOutlineWidthUnits->SetHelpText(_("Units for the top outline width."));
@@ -512,6 +479,7 @@ void wxRichTextBordersPage::CreateControls()
wxArrayString m_bottomOutlineWidthUnitsStrings;
m_bottomOutlineWidthUnitsStrings.Add(_("px"));
m_bottomOutlineWidthUnitsStrings.Add(_("cm"));
+ m_bottomOutlineWidthUnitsStrings.Add(_("pt"));
m_bottomOutlineWidthUnits = new wxComboBox( itemPanel46, ID_RICHTEXT_OUTLINE_BOTTOM_UNITS, _("px"), wxDefaultPosition, wxSize(60, -1), m_bottomOutlineWidthUnitsStrings, wxCB_READONLY );
m_bottomOutlineWidthUnits->SetStringSelection(_("px"));
m_bottomOutlineWidthUnits->SetHelpText(_("Units for the bottom outline width."));
@@ -648,14 +616,20 @@ void wxRichTextBordersPage::SetBorderValue(wxTextAttrBorder& border, /* wxTextAt
if (!border.IsValid())
{
checkBox->Set3StateValue(wxCHK_UNDETERMINED);
- widthValueCtrl->SetValue(wxT("1"));
+ widthValueCtrl->SetValue(wxT("0"));
widthUnitsCtrl->SetSelection(0);
colourCtrl->SetColour(*wxBLACK);
styleCtrl->SetSelection(0);
}
else
{
- wxRichTextFormattingDialog::SetDimensionValue(border.GetWidth(), widthValueCtrl, widthUnitsCtrl, checkBox);
+ wxArrayInt units;
+ units.Add(wxTEXT_ATTR_UNITS_PIXELS);
+ units.Add(wxTEXT_ATTR_UNITS_TENTHS_MM);
+ units.Add(wxTEXT_ATTR_UNITS_HUNDREDTHS_POINT);
+
+ wxRichTextFormattingDialog::SetDimensionValue(border.GetWidth(), widthValueCtrl, widthUnitsCtrl, checkBox,
+ & units);
int sel = borderStyles.Index(border.GetStyle());
if (sel == -1)
@@ -674,7 +648,13 @@ void wxRichTextBordersPage::SetBorderValue(wxTextAttrBorder& border, /* wxTextAt
void wxRichTextBordersPage::GetBorderValue(wxTextAttrBorder& border, /* wxTextAttrBorder& borderToReset, */ wxTextCtrl* widthValueCtrl, wxComboBox* widthUnitsCtrl, wxCheckBox* checkBox,
wxComboBox* styleCtrl, wxRichTextColourSwatchCtrl* colourCtrl, const wxArrayInt& borderStyles)
{
- wxRichTextFormattingDialog::GetDimensionValue(border.GetWidth(), widthValueCtrl, widthUnitsCtrl, checkBox);
+ wxArrayInt units;
+ units.Add(wxTEXT_ATTR_UNITS_PIXELS);
+ units.Add(wxTEXT_ATTR_UNITS_TENTHS_MM);
+ units.Add(wxTEXT_ATTR_UNITS_HUNDREDTHS_POINT);
+
+ wxRichTextFormattingDialog::GetDimensionValue(border.GetWidth(), widthValueCtrl, widthUnitsCtrl, checkBox,
+ & units);
int sel = styleCtrl->GetSelection();
border.SetColour(colourCtrl->GetColour());
diff --git a/src/richtext/richtextdialogs.pjd b/src/richtext/richtextdialogs.pjd
index 3fd5b12901..df1cf7d8fb 100644
--- a/src/richtext/richtextdialogs.pjd
+++ b/src/richtext/richtextdialogs.pjd
@@ -15161,6 +15161,14 @@
"wbBoxSizerProxy"
"Vertical"
""
+ "Centre"
+ "Centre"
+ 0
+ 5
+ 1
+ 1
+ 1
+ 1
0
0
0
@@ -22634,14 +22642,6 @@
"wbBoxSizerProxy"
"Vertical"
""
- "Centre"
- "Centre"
- 0
- 5
- 1
- 1
- 1
- 1
0
0
0
@@ -23303,7 +23303,7 @@
""
""
"m_leftBorderWidthUnits"
- "px|cm"
+ "px|cm|pt"
"px"
"Units for the left border width."
""
@@ -23734,7 +23734,7 @@
""
""
"m_rightBorderWidthUnits"
- "px|cm"
+ "px|cm|pt"
"px"
"Units for the right border width."
""
@@ -24165,7 +24165,7 @@
""
""
"m_topBorderWidthUnits"
- "px|cm"
+ "px|cm|pt"
"px"
"Units for the top border width."
""
@@ -24596,7 +24596,7 @@
""
""
"m_bottomBorderWidthUnits"
- "px|cm"
+ "px|cm|pt"
"px"
"Units for the bottom border width."
""
@@ -25392,7 +25392,7 @@
""
""
"m_leftOutlineWidthUnits"
- "px|cm"
+ "px|cm|pt"
"px"
"Units for the left outline width."
""
@@ -25823,7 +25823,7 @@
""
""
"m_rightOutlineWidthUnits"
- "px|cm"
+ "px|cm|pt"
"px"
"Units for the right outline width."
""
@@ -26254,7 +26254,7 @@
""
""
"m_topOutlineWidthUnits"
- "px|cm"
+ "px|cm|pt"
"px"
"Units for the top outline width."
""
@@ -26685,7 +26685,7 @@
""
""
"m_bottomOutlineWidthUnits"
- "px|cm"
+ "px|cm|pt"
"px"
"Units for the bottom outline width."
""
diff --git a/src/richtext/richtextformatdlg.cpp b/src/richtext/richtextformatdlg.cpp
index fc44348c27..3852637221 100644
--- a/src/richtext/richtextformatdlg.cpp
+++ b/src/richtext/richtextformatdlg.cpp
@@ -592,7 +592,7 @@ wxRichTextStyleDefinition* wxRichTextFormattingDialog::GetDialogStyleDefinition(
return NULL;
}
-void wxRichTextFormattingDialog::SetDimensionValue(wxTextAttrDimension& dim, wxTextCtrl* valueCtrl, wxComboBox* unitsCtrl, wxCheckBox* checkBox)
+void wxRichTextFormattingDialog::SetDimensionValue(wxTextAttrDimension& dim, wxTextCtrl* valueCtrl, wxComboBox* unitsCtrl, wxCheckBox* checkBox, wxArrayInt* units)
{
int unitsIdx = 0;
@@ -602,37 +602,52 @@ void wxRichTextFormattingDialog::SetDimensionValue(wxTextAttrDimension& dim, wxT
checkBox->SetValue(false);
valueCtrl->SetValue(wxT("0"));
unitsCtrl->SetSelection(0);
-#if 0
- dim.SetValue(0);
- dim.SetUnits(wxTEXT_ATTR_UNITS_PIXELS);
-#endif
}
else
{
if (checkBox)
checkBox->SetValue(true);
- if (dim.GetUnits() == wxTEXT_ATTR_UNITS_TENTHS_MM)
+
+ if (dim.GetUnits() == wxTEXT_ATTR_UNITS_PIXELS)
{
- unitsIdx = 1;
+ unitsIdx = 0; // By default, the 1st in the list.
+ valueCtrl->SetValue(wxString::Format(wxT("%d"), (int) dim.GetValue()));
+ }
+ else if (dim.GetUnits() == wxTEXT_ATTR_UNITS_TENTHS_MM)
+ {
+ unitsIdx = 1; // By default, the 2nd in the list.
float value = float(dim.GetValue()) / 100.0;
valueCtrl->SetValue(wxString::Format(wxT("%.2f"), value));
}
else if (dim.GetUnits() == wxTEXT_ATTR_UNITS_PERCENTAGE)
{
- unitsIdx = 2;
+ unitsIdx = 2; // By default, the 3rd in the list.
valueCtrl->SetValue(wxString::Format(wxT("%d"), (int) dim.GetValue()));
}
- else
+ else if (dim.GetUnits() == wxTEXT_ATTR_UNITS_HUNDREDTHS_POINT)
{
- unitsIdx = 0;
+ unitsIdx = 3; // By default, the 4th in the list.
+ float value = float(dim.GetValue()) / 100.0;
+ valueCtrl->SetValue(wxString::Format(wxT("%.2f"), value));
+ }
+ else if (dim.GetUnits() == wxTEXT_ATTR_UNITS_POINTS)
+ {
+ unitsIdx = 3; // By default, the 4th in the list (we don't have points and hundredths of points in the same list)
valueCtrl->SetValue(wxString::Format(wxT("%d"), (int) dim.GetValue()));
}
+
+ if (units)
+ {
+ unitsIdx = units->Index(dim.GetUnits());
+ if (unitsIdx == -1)
+ unitsIdx = 0;
+ }
unitsCtrl->SetSelection(unitsIdx);
}
}
-void wxRichTextFormattingDialog::GetDimensionValue(wxTextAttrDimension& dim, wxTextCtrl* valueCtrl, wxComboBox* unitsCtrl, wxCheckBox* checkBox)
+void wxRichTextFormattingDialog::GetDimensionValue(wxTextAttrDimension& dim, wxTextCtrl* valueCtrl, wxComboBox* unitsCtrl, wxCheckBox* checkBox, wxArrayInt* units)
{
if (checkBox && !checkBox->GetValue())
{
@@ -640,12 +655,22 @@ void wxRichTextFormattingDialog::GetDimensionValue(wxTextAttrDimension& dim, wxT
}
else
{
- if (unitsCtrl->GetSelection() == 1)
- dim.SetUnits(wxTEXT_ATTR_UNITS_TENTHS_MM);
- else if (unitsCtrl->GetSelection() == 2)
- dim.SetUnits(wxTEXT_ATTR_UNITS_PERCENTAGE);
+ if (units)
+ {
+ int unit = (*units)[unitsCtrl->GetSelection()];
+ dim.SetUnits((wxTextAttrUnits) unit);
+ }
else
- dim.SetUnits(wxTEXT_ATTR_UNITS_PIXELS);
+ {
+ if (unitsCtrl->GetSelection() == 0)
+ dim.SetUnits(wxTEXT_ATTR_UNITS_PIXELS);
+ else if (unitsCtrl->GetSelection() == 1)
+ dim.SetUnits(wxTEXT_ATTR_UNITS_TENTHS_MM);
+ else if (unitsCtrl->GetSelection() == 2)
+ dim.SetUnits(wxTEXT_ATTR_UNITS_PERCENTAGE);
+ else if (unitsCtrl->GetSelection() == 3)
+ dim.SetUnits(wxTEXT_ATTR_UNITS_HUNDREDTHS_POINT);
+ }
int value = 0;
if (ConvertFromString(valueCtrl->GetValue(), value, dim.GetUnits()))
@@ -653,32 +678,42 @@ void wxRichTextFormattingDialog::GetDimensionValue(wxTextAttrDimension& dim, wxT
}
}
-bool wxRichTextFormattingDialog::ConvertFromString(const wxString& string, int& ret, int scale)
+bool wxRichTextFormattingDialog::ConvertFromString(const wxString& str, int& ret, int unit)
{
- const wxChar* chars = string.GetData();
- int remain = 2;
- bool dot = false;
- ret = 0;
-
- for (unsigned int i = 0; i < string.Len() && remain; i++)
+ if (unit == wxTEXT_ATTR_UNITS_PIXELS)
{
- if (!(chars[i] >= wxT('0') && chars[i] <= wxT('9')) && !(scale == wxTEXT_ATTR_UNITS_TENTHS_MM && chars[i] == wxT('.')))
- return false;
-
- if (chars[i] == wxT('.'))
- {
- dot = true;
- continue;
- }
-
- if (dot)
- remain--;
-
- ret = ret * 10 + chars[i] - wxT('0');
+ ret = wxAtoi(str);
+ return true;
+ }
+ else if (unit == wxTEXT_ATTR_UNITS_TENTHS_MM)
+ {
+ float value = 0.0;
+ wxSscanf(str.c_str(), wxT("%f"), &value);
+ // Convert from cm
+ ret = (int) ((value * 100.0) + 0.5);
+ return true;
+ }
+ else if (unit == wxTEXT_ATTR_UNITS_PERCENTAGE)
+ {
+ ret = wxAtoi(str);
+ return true;
+ }
+ else if (unit == wxTEXT_ATTR_UNITS_HUNDREDTHS_POINT)
+ {
+ float value = 0.0;
+ wxSscanf(str.c_str(), wxT("%f"), &value);
+ ret = (int) ((value * 100.0) + 0.5);
+ }
+ else if (unit == wxTEXT_ATTR_UNITS_POINTS)
+ {
+ ret = wxAtoi(str);
+ return true;
+ }
+ else
+ {
+ ret = 0;
+ return false;
}
-
- while (remain-- > 0 && scale == wxTEXT_ATTR_UNITS_TENTHS_MM)
- ret *= 10;
return true;
}