void wxRichTextObjectPropertiesDialog::OnRichtextDownClick( wxCommandEvent& WXUNUSED(event)) { // Before editing this code, remove the block markers. wxRichTextRange range = m_object->GetRange(); wxRichTextObjectList::compatibility_iterator iter = m_buffer->GetChildren().GetFirst(); if (!iter) return; while (iter) { if (iter->GetData() == m_parent) break; iter = iter->GetNext(); } iter = iter->GetNext(); if (!iter) return; wxRichTextObject *obj = iter->GetData(); wxRichTextRange rg = obj->GetRange(); m_object = m_object->Clone(); m_buffer->DeleteRangeWithUndo(range, m_buffer->GetRichTextCtrl()); m_buffer->InsertObjectWithUndo(rg.GetEnd(), m_object, m_buffer->GetRichTextCtrl(), 0); m_parent = obj; m_object->SetRange(wxRichTextRange(rg.GetEnd(), rg.GetEnd())); }
void RichTextCtrlTestCase::Delete() { m_rich->AddParagraph("here is a long long line in a paragraph"); m_rich->SetSelection(0, 6); CPPUNIT_ASSERT(m_rich->CanDeleteSelection()); m_rich->DeleteSelection(); CPPUNIT_ASSERT_EQUAL("is a long long line in a paragraph", m_rich->GetValue()); m_rich->SetSelection(0, 5); CPPUNIT_ASSERT(m_rich->CanDeleteSelection()); m_rich->DeleteSelectedContent(); CPPUNIT_ASSERT_EQUAL("long long line in a paragraph", m_rich->GetValue()); m_rich->Delete(wxRichTextRange(14, 29)); CPPUNIT_ASSERT_EQUAL("long long line", m_rich->GetValue()); }
void wxRichTextPrintout::RenderPage(wxDC *dc, int page) { if (!GetRichTextBuffer()) return; wxBusyCursor wait; wxRect textRect, headerRect, footerRect; /// Sets the DC scaling and returns important page rectangles CalculateScaling(dc, textRect, headerRect, footerRect); if (page > 1 || m_headerFooterData.GetShowOnFirstPage()) { if (m_headerFooterData.GetFont().Ok()) dc->SetFont(m_headerFooterData.GetFont()); else dc->SetFont(*wxNORMAL_FONT); if (m_headerFooterData.GetTextColour().Ok()) dc->SetTextForeground(m_headerFooterData.GetTextColour()); else dc->SetTextForeground(*wxBLACK); dc->SetBackgroundMode(wxTRANSPARENT); // Draw header, if any wxRichTextOddEvenPage oddEven = ((page % 2) == 1) ? wxRICHTEXT_PAGE_ODD : wxRICHTEXT_PAGE_EVEN; wxString headerTextCentre = m_headerFooterData.GetHeaderText(oddEven, wxRICHTEXT_PAGE_CENTRE); wxString headerTextLeft = m_headerFooterData.GetHeaderText(oddEven, wxRICHTEXT_PAGE_LEFT); wxString headerTextRight = m_headerFooterData.GetHeaderText(oddEven, wxRICHTEXT_PAGE_RIGHT); if (!headerTextLeft.IsEmpty()) { SubstituteKeywords(headerTextLeft, GetTitle(), page, m_numPages); //int tx, ty; //dc->GetTextExtent(headerTextLeft, & tx, & ty); int x = headerRect.GetLeft(); int y = headerRect.GetX(); dc->DrawText(headerTextLeft, x, y); } if (!headerTextCentre.IsEmpty()) { SubstituteKeywords(headerTextCentre, GetTitle(), page, m_numPages); int tx, ty; dc->GetTextExtent(headerTextCentre, & tx, & ty); int x = headerRect.GetWidth()/2 - tx/2 + headerRect.GetLeft(); int y = headerRect.GetY(); dc->DrawText(headerTextCentre, x, y); } if (!headerTextRight.IsEmpty()) { SubstituteKeywords(headerTextRight, GetTitle(), page, m_numPages); int tx, ty; dc->GetTextExtent(headerTextRight, & tx, & ty); int x = headerRect.GetRight() - tx; int y = headerRect.GetY(); dc->DrawText(headerTextRight, x, y); } // Draw footer, if any wxString footerTextCentre = m_headerFooterData.GetFooterText(oddEven, wxRICHTEXT_PAGE_CENTRE); wxString footerTextLeft = m_headerFooterData.GetFooterText(oddEven, wxRICHTEXT_PAGE_LEFT); wxString footerTextRight = m_headerFooterData.GetFooterText(oddEven, wxRICHTEXT_PAGE_RIGHT); if (!footerTextLeft.IsEmpty()) { SubstituteKeywords(footerTextLeft, GetTitle(), page, m_numPages); int tx, ty; dc->GetTextExtent(footerTextLeft, & tx, & ty); int x = footerRect.GetLeft(); int y = footerRect.GetBottom() - ty; dc->DrawText(footerTextLeft, x, y); } if (!footerTextCentre.IsEmpty()) { SubstituteKeywords(footerTextCentre, GetTitle(), page, m_numPages); int tx, ty; dc->GetTextExtent(footerTextCentre, & tx, & ty); int x = footerRect.GetWidth()/2 - tx/2 + footerRect.GetLeft(); int y = footerRect.GetBottom() - ty; dc->DrawText(footerTextCentre, x, y); } if (!footerTextRight.IsEmpty()) { SubstituteKeywords(footerTextRight, GetTitle(), page, m_numPages); int tx, ty; dc->GetTextExtent(footerTextRight, & tx, & ty); int x = footerRect.GetRight() - tx; int y = footerRect.GetBottom() - ty; dc->DrawText(footerTextRight, x, y); } } wxRichTextRange rangeToDraw(m_pageBreaksStart[page-1], m_pageBreaksEnd[page-1]); GetRichTextBuffer()->Draw(*dc, rangeToDraw, wxRichTextRange(-1,-1), textRect, 0 /* descent */, wxRICHTEXT_DRAW_IGNORE_CACHE /* flags */); }