[Libreoffice-commits] core.git: 4 commits - desktop/source include/unotest sd/CppunitTest_sd_filters_test.mk sd/CppunitTest_sd_import_tests.mk sd/source unotest/source
Tomaž Vajngerl
tomaz.vajngerl at collabora.com
Sat Apr 12 03:59:25 PDT 2014
desktop/source/lib/init.cxx | 2
include/unotest/macros_test.hxx | 4
sd/CppunitTest_sd_filters_test.mk | 6
sd/CppunitTest_sd_import_tests.mk | 6
sd/source/filter/html/htmlex.cxx | 202 +++++++++++++++++++++++++++---
sd/source/filter/html/htmlex.hxx | 9 +
sd/source/filter/html/htmlpublishmode.hxx | 10 +
sd/source/filter/html/sdhtmlfilter.cxx | 7 -
unotest/source/cpp/macros_test.cxx | 17 +-
9 files changed, 225 insertions(+), 38 deletions(-)
New commits:
commit 272a5e7671fadd254d06d67180f97916891a4cf4
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Sat Apr 12 12:48:22 2014 +0200
sd tests: tab to spaces
Change-Id: Icfc9d08b073f76d6c489a8b12a3c27b850a116ce
diff --git a/sd/CppunitTest_sd_filters_test.mk b/sd/CppunitTest_sd_filters_test.mk
index a2d1562..45c29aa 100644
--- a/sd/CppunitTest_sd_filters_test.mk
+++ b/sd/CppunitTest_sd_filters_test.mk
@@ -45,15 +45,15 @@ $(eval $(call gb_CppunitTest_use_libraries,sd_filters_test, \
svt \
svx \
svxcore \
- test \
+ test \
tl \
tk \
ucbhelper \
- unotest \
+ unotest \
utl \
vcl \
xo \
- $(gb_UWINAPI) \
+ $(gb_UWINAPI) \
))
$(eval $(call gb_CppunitTest_set_include,sd_filters_test,\
diff --git a/sd/CppunitTest_sd_import_tests.mk b/sd/CppunitTest_sd_import_tests.mk
index d1a552f..3661de7 100644
--- a/sd/CppunitTest_sd_import_tests.mk
+++ b/sd/CppunitTest_sd_import_tests.mk
@@ -40,15 +40,15 @@ $(eval $(call gb_CppunitTest_use_libraries,sd_import_tests, \
svt \
svx \
svxcore \
- test \
+ test \
tl \
tk \
ucbhelper \
- unotest \
+ unotest \
utl \
vcl \
xo \
- $(gb_UWINAPI) \
+ $(gb_UWINAPI) \
))
$(eval $(call gb_CppunitTest_set_include,sd_import_tests,\
commit fa4c74f4d5cb7ff8ae8d4fa43f07c557bcbcf9e0
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Sat Apr 12 12:33:32 2014 +0200
liblo: fix check of xcomponent
Change-Id: I8a05a067681767518c688eb836bbe676bed05996
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 183a555..a965be7 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -195,7 +195,7 @@ static LibreOfficeDocument* lo_documentLoad(LibreOffice* pThis, const char* pURL
aURL, OUString("_blank"), 0,
uno::Sequence<css::beans::PropertyValue>());
- if (xComponentLoader.is())
+ if (xComponent.is())
return new LibLODocument_Impl(xComponent);
else
pLib->maLastExceptionMsg = "unknown load failure";
commit 5830799d5ba3afbb696dc354535fcfd2f10ba059
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Fri Apr 11 21:31:43 2014 +0200
macros_test: use "css" short form
Change-Id: I2e8d8773703df67d090059be8bd9f3c7c7335f78
diff --git a/include/unotest/macros_test.hxx b/include/unotest/macros_test.hxx
index d995246..12108ba 100644
--- a/include/unotest/macros_test.hxx
+++ b/include/unotest/macros_test.hxx
@@ -27,10 +27,10 @@ namespace unotest {
class OOO_DLLPUBLIC_UNOTEST MacrosTest
{
public:
- com::sun::star::uno::Reference< com::sun::star::lang::XComponent > loadFromDesktop(const OUString& rURL, const OUString& rDocService = OUString() );
+ css::uno::Reference< css::lang::XComponent > loadFromDesktop(const OUString& rURL, const OUString& rDocService = OUString() );
protected:
- com::sun::star::uno::Reference< com::sun::star::frame::XDesktop2> mxDesktop;
+ css::uno::Reference< css::frame::XDesktop2> mxDesktop;
};
}
diff --git a/unotest/source/cpp/macros_test.cxx b/unotest/source/cpp/macros_test.cxx
index 9305a68..44f0d56 100644
--- a/unotest/source/cpp/macros_test.cxx
+++ b/unotest/source/cpp/macros_test.cxx
@@ -15,21 +15,20 @@
#include "cppunit/TestAssert.h"
#include <rtl/ustrbuf.hxx>
-using namespace com::sun::star;
+using namespace css;
namespace unotest {
-uno::Reference< com::sun::star::lang::XComponent > MacrosTest::loadFromDesktop(const OUString& rURL, const OUString& rDocService)
+uno::Reference<css::lang::XComponent> MacrosTest::loadFromDesktop(const OUString& rURL, const OUString& rDocService)
{
CPPUNIT_ASSERT_MESSAGE("no desktop", mxDesktop.is());
- uno::Reference< com::sun::star::frame::XComponentLoader> xLoader = uno::Reference< com::sun::star::frame::XComponentLoader >( mxDesktop, uno::UNO_QUERY );
+ uno::Reference<frame::XComponentLoader> xLoader = uno::Reference<frame::XComponentLoader>(mxDesktop, uno::UNO_QUERY);
CPPUNIT_ASSERT_MESSAGE("no loader", xLoader.is());
- com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > args(1);
+ uno::Sequence<beans::PropertyValue> args(1);
args[0].Name = "MacroExecutionMode";
args[0].Handle = -1;
- args[0].Value <<=
- com::sun::star::document::MacroExecMode::ALWAYS_EXECUTE_NO_WARN;
- args[0].State = com::sun::star::beans::PropertyState_DIRECT_VALUE;
+ args[0].Value <<= document::MacroExecMode::ALWAYS_EXECUTE_NO_WARN;
+ args[0].State = beans::PropertyState_DIRECT_VALUE;
if (!rDocService.isEmpty())
{
@@ -37,10 +36,10 @@ uno::Reference< com::sun::star::lang::XComponent > MacrosTest::loadFromDesktop(c
args[1].Name = "DocumentService";
args[1].Handle = -1;
args[1].Value <<= rDocService;
- args[1].State = com::sun::star::beans::PropertyState_DIRECT_VALUE;
+ args[1].State = beans::PropertyState_DIRECT_VALUE;
}
- uno::Reference< com::sun::star::lang::XComponent> xComponent= xLoader->loadComponentFromURL(rURL, OUString("_default"), 0, args);
+ uno::Reference<lang::XComponent> xComponent = xLoader->loadComponentFromURL(rURL, OUString("_default"), 0, args);
OUString sMessage = "loading failed: " + rURL;
CPPUNIT_ASSERT_MESSAGE(OUStringToOString( sMessage, RTL_TEXTENCODING_UTF8 ).getStr( ), xComponent.is());
return xComponent;
commit 69fe10662845288c09a05716a93876e2ca95c4bd
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Fri Apr 11 14:14:49 2014 +0200
sd html export: "single document" publish mode & support tables
Change-Id: I0c9f45011091f962d5304c9efcaebbed7e6c3d9d
diff --git a/sd/source/filter/html/htmlex.cxx b/sd/source/filter/html/htmlex.cxx
index 16600d1..b06f5b8 100644
--- a/sd/source/filter/html/htmlex.cxx
+++ b/sd/source/filter/html/htmlex.cxx
@@ -82,6 +82,8 @@
#include "buttonset.hxx"
#include <basegfx/polygon/b2dpolygon.hxx>
+#include <svx/svdotable.hxx>
+
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::beans;
@@ -89,6 +91,8 @@ using namespace ::com::sun::star::frame;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::document;
+using namespace sdr::table;
+
// get parameter from Itemset
#define RESTOHTML( res ) StringToHTMLString(SD_RESSTR(res))
@@ -312,36 +316,51 @@ OUString HtmlState::SetLink( const OUString& aLink, const OUString& aTarget )
return aStr;
}
+namespace
+{
-// methods of the class HtmlExport
-static OUString getParagraphStyle( SdrOutliner* pOutliner, sal_Int32 nPara )
+OUString getParagraphStyle( SdrOutliner* pOutliner, sal_Int32 nPara )
{
SfxItemSet aParaSet( pOutliner->GetParaAttribs( nPara ) );
- OUString sStyle("direction:");
+ OUString sStyle;
+
if( static_cast<const SvxFrameDirectionItem*>(aParaSet.GetItem( EE_PARA_WRITINGDIR ))->GetValue() == FRMDIR_HORI_RIGHT_TOP )
{
- sStyle += "rtl;";
+
+ sStyle = "direction: rtl;";
}
else
{
- sStyle += "ltr;";
+ // This is the default so don't write it out
+ // sStyle += "direction: ltr;";
}
return sStyle;
}
+void lclAppendStyle(OUStringBuffer& aBuffer, const OUString& aTag, const OUString& aStyle)
+{
+ if (aStyle.isEmpty())
+ aBuffer.append("<" + aTag + ">");
+ else
+ aBuffer.append("<" + aTag + " style=\"" + aStyle + "\">");
+}
+
+} // anonymous namespace
// constructor for the html export helper classes
HtmlExport::HtmlExport(
const OUString& aPath,
const Sequence< PropertyValue >& rParams,
+ const OUString& rFilterOptions,
SdDrawDocument* pExpDoc,
- ::sd::DrawDocShell* pDocShell )
+ sd::DrawDocShell* pDocShell )
: maPath( aPath ),
+ maFilterOptions( rFilterOptions ),
mpDoc(pExpDoc),
mpDocSh( pDocShell ),
meEC(NULL),
- meMode( PUBLISH_HTML ),
+ meMode( PUBLISH_SINGLE_DOCUMENT ),
mbContentsPage(false),
mnButtonThema(-1),
mnWidthPixel( PUB_MEDRES_WIDTH ),
@@ -380,6 +399,9 @@ HtmlExport::HtmlExport(
case PUBLISH_KIOSK:
ExportKiosk();
break;
+ case PUBLISH_SINGLE_DOCUMENT:
+ ExportSingleDocument();
+ break;
}
mpDoc->SetChanged(bChange);
@@ -616,6 +638,74 @@ void HtmlExport::InitExportParameters( const Sequence< PropertyValue >& rParams
maDocFileName = maIndex;
}
+void HtmlExport::ExportSingleDocument()
+{
+ SdrOutliner* pOutliner = mpDoc->GetInternalOutliner();
+
+ maPageNames.resize(mnSdPageCount);
+
+ mnPagesWritten = 0;
+ InitProgress(mnSdPageCount);
+
+ OUStringBuffer aStr(maHTMLHeader);
+ aStr.append(CreateMetaCharset());
+ aStr.append("</head>\r\n");
+ aStr.append(CreateBodyTag());
+
+ for(sal_uInt16 nSdPage = 0; nSdPage < mnSdPageCount; ++nSdPage)
+ {
+ SdPage* pPage = maPages[nSdPage];
+ maPageNames[nSdPage] = pPage->GetName();
+
+ if( mbDocColors )
+ {
+ SetDocColors( pPage );
+ }
+
+ // page title
+ OUString sTitleText(CreateTextForTitle(pOutliner, pPage, pPage->GetPageBackgroundColor()));
+ OUString sStyle;
+
+ if (nSdPage != 0) // First page - no need for a page brake here
+ sStyle += "page-break-before:always; ";
+ sStyle += getParagraphStyle(pOutliner, 0);
+
+ lclAppendStyle(aStr, "h1", sStyle);
+
+ aStr.append(sTitleText);
+ aStr.append("</h1>\r\n");
+
+ // write outline text
+ aStr.append(CreateTextForPage( pOutliner, pPage, true, pPage->GetPageBackgroundColor() ));
+
+ // notes
+ if(mbNotes)
+ {
+ SdPage* pNotesPage = maNotesPages[ nSdPage ];
+ OUString aNotesStr( CreateTextForNotesPage( pOutliner, pNotesPage, true, maBackColor) );
+
+ if (!aNotesStr.isEmpty())
+ {
+ aStr.append("<br>\r\n<h3>");
+ aStr.append(RESTOHTML(STR_HTMLEXP_NOTES));
+ aStr.append(":</h3>\r\n");
+
+ aStr.append(aNotesStr);
+ }
+ }
+
+ if (mpProgress)
+ mpProgress->SetState(++mnPagesWritten);
+
+ }
+
+ // close page
+ aStr.append("</body>\r\n</html>");
+
+ WriteHtml(maDocFileName, false, aStr.makeStringAndClear());
+
+ pOutliner->Clear();
+}
// exports the (in the c'tor specified impress document) to html
void HtmlExport::ExportHtml()
@@ -1022,9 +1112,7 @@ bool HtmlExport::CreateHtmlTextForPresPages()
// page title
OUString sTitleText( CreateTextForTitle(pOutliner,pPage, pPage->GetPageBackgroundColor()) );
- aStr.append("<h1 style=\"");
- aStr.append(getParagraphStyle(pOutliner, 0));
- aStr.append("\">");
+ lclAppendStyle(aStr, "h1", getParagraphStyle(pOutliner, 0));
aStr.append(sTitleText);
aStr.append("</h1>\r\n");
@@ -1123,6 +1211,90 @@ OUString HtmlExport::CreateTextForPage( SdrOutliner* pOutliner,
{
OUStringBuffer aStr;
+ for (sal_uInt32 i = 0; i <pPage->GetObjCount(); i++ )
+ {
+ SdrObject* pObject = pPage->GetObj(i);
+ PresObjKind eKind = pPage->GetPresObjKind(pObject);
+
+ if (eKind == PRESOBJ_TABLE)
+ {
+ SdrTableObj* pTableObject = (SdrTableObj*) pObject;
+
+ CellPos aStart, aEnd;
+
+ aStart = pTableObject->getFirstCell();
+ aEnd = pTableObject->getLastCell();
+
+ sal_Int32 nColCount = pTableObject->getColumnCount();
+ aStr.append("<table>\r\n");
+ for (sal_Int32 nRow = aStart.mnRow; nRow <= aEnd.mnRow; nRow++)
+ {
+ aStr.append(" <tr>\r\n");
+ for (sal_Int32 nCol = aStart.mnCol; nCol <= aEnd.mnCol; nCol++)
+ {
+ aStr.append(" <td>\r\n");
+ sal_Int32 nCellIndex = nRow * nColCount + nCol;
+ SdrText* pText = pTableObject->getText(nCellIndex);
+ if (!pText || !pText->GetOutlinerParaObject())
+ continue;
+
+ pOutliner->SetText(*(pText->GetOutlinerParaObject()));
+
+ sal_Int32 nCount = pOutliner->GetParagraphCount();
+
+ Paragraph* pPara = NULL;
+
+ sal_Int16 nCurrentDepth = -1;
+
+ for (sal_Int32 nPara = 0; nPara < nCount; nPara++)
+ {
+ pPara = pOutliner->GetParagraph(nPara);
+ if(pPara == 0)
+ continue;
+
+ const sal_Int16 nDepth = (sal_uInt16) pOutliner->GetDepth(nPara);
+ OUString aParaText = ParagraphToHTMLString(pOutliner, nPara, rBackgroundColor);
+
+ if (aParaText.isEmpty())
+ continue;
+
+ if (nDepth < 0)
+ {
+ lclAppendStyle(aStr, "p", getParagraphStyle(pOutliner, nPara));
+ aStr.append(aParaText);
+ aStr.append("</p>\r\n");
+ }
+ else
+ {
+ while(nCurrentDepth < nDepth)
+ {
+ aStr.append("<ul>\r\n");
+ nCurrentDepth++;
+ }
+ while(nCurrentDepth > nDepth)
+ {
+ aStr.append("</ul>\r\n");
+ nCurrentDepth--;
+ }
+ lclAppendStyle(aStr, "li", getParagraphStyle(pOutliner, nPara));
+ aStr.append(aParaText);
+ aStr.append("</li>\r\n");
+ }
+ }
+ while(nCurrentDepth >= 0)
+ {
+ aStr.append("</ul>\r\n");
+ nCurrentDepth--;
+ }
+ pOutliner->Clear();
+ aStr.append(" </td>\r\n");
+ }
+ aStr.append(" </tr>\r\n");
+ }
+ aStr.append("</table>\r\n");
+ }
+ }
+
SdrTextObj* pTO = (SdrTextObj*)pPage->GetPresObj(PRESOBJ_TEXT);
if(!pTO)
pTO = GetLayoutTextObject(pPage);
@@ -1175,7 +1347,7 @@ OUString HtmlExport::CreateTextForPage( SdrOutliner* pOutliner,
OUString sStyle(getParagraphStyle(pOutliner, nPara));
if(nActDepth >= 0 )
{
- aStr.append("<li style=\"" + sStyle + "\">");
+ lclAppendStyle(aStr, "li", sStyle);
}
if(nActDepth <= 0 && bHeadLine)
@@ -1186,7 +1358,7 @@ OUString HtmlExport::CreateTextForPage( SdrOutliner* pOutliner,
}
else
{
- aStr.append("<h2 style=\"" + sStyle + "\">");
+ lclAppendStyle(aStr, "h2", sStyle);
}
}
aStr.append(aParaText);
@@ -1230,7 +1402,7 @@ OUString HtmlExport::CreateTextForNotesPage( SdrOutliner* pOutliner,
sal_Int32 nCount = pOutliner->GetParagraphCount();
for (sal_Int32 nPara = 0; nPara < nCount; nPara++)
{
- aStr.append("<p style=\"" + getParagraphStyle(pOutliner, nPara) + "\">");
+ lclAppendStyle(aStr, "p", getParagraphStyle(pOutliner, nPara));
aStr.append(ParagraphToHTMLString(pOutliner, nPara, rBackgroundColor));
aStr.append("</p>\r\n");
}
@@ -1958,9 +2130,7 @@ bool HtmlExport::CreateOutlinePages()
if (aTitle.isEmpty())
aTitle = maPageNames[nSdPage];
- aStr.append("<p style=\"");
- aStr.append(getParagraphStyle(pOutliner, 0));
- aStr.append("\">");
+ lclAppendStyle(aStr, "p", getParagraphStyle(pOutliner, 0));
aStr.append(CreateLink(aLink, aTitle));
aStr.append("</p>");
diff --git a/sd/source/filter/html/htmlex.hxx b/sd/source/filter/html/htmlex.hxx
index 56f9e15..53b1292 100644
--- a/sd/source/filter/html/htmlex.hxx
+++ b/sd/source/filter/html/htmlex.hxx
@@ -83,6 +83,7 @@ class HtmlExport
std::vector< SdPage* > maNotesPages;
OUString maPath;
+ OUString maFilterOptions;
SdDrawDocument* mpDoc;
::sd::DrawDocShell* mpDocSh;
@@ -205,12 +206,18 @@ class HtmlExport
void ExportHtml();
void ExportKiosk();
void ExportWebCast();
+ void ExportSingleDocument();
bool WriteHtml( const OUString& rFileName, bool bAddExtension, const OUString& rHtmlData );
OUString GetButtonName( int nButton ) const;
public:
- HtmlExport( const OUString& aPath, const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rParams, SdDrawDocument* pExpDoc, ::sd::DrawDocShell* pDocShell );
+ HtmlExport(const OUString& aPath,
+ const css::uno::Sequence<css::beans::PropertyValue>& rParams,
+ const OUString& rFilterOptions,
+ SdDrawDocument* pExpDoc,
+ sd::DrawDocShell* pDocShell);
+
virtual ~HtmlExport();
static OUString ColorToHTMLString( Color aColor );
diff --git a/sd/source/filter/html/htmlpublishmode.hxx b/sd/source/filter/html/htmlpublishmode.hxx
index a7871db..95740c0 100644
--- a/sd/source/filter/html/htmlpublishmode.hxx
+++ b/sd/source/filter/html/htmlpublishmode.hxx
@@ -20,8 +20,14 @@
#ifndef INCLUDED_SD_SOURCE_FILTER_HTML_HTMLPUBLISHMODE_HXX
#define INCLUDED_SD_SOURCE_FILTER_HTML_HTMLPUBLISHMODE_HXX
-enum HtmlPublishMode {
- PUBLISH_HTML, PUBLISH_FRAMES, PUBLISH_WEBCAST, PUBLISH_KIOSK };
+enum HtmlPublishMode
+{
+ PUBLISH_HTML,
+ PUBLISH_FRAMES,
+ PUBLISH_WEBCAST,
+ PUBLISH_KIOSK,
+ PUBLISH_SINGLE_DOCUMENT
+};
#endif
diff --git a/sd/source/filter/html/sdhtmlfilter.cxx b/sd/source/filter/html/sdhtmlfilter.cxx
index 23f27ed..db809d7 100644
--- a/sd/source/filter/html/sdhtmlfilter.cxx
+++ b/sd/source/filter/html/sdhtmlfilter.cxx
@@ -64,12 +64,17 @@ sal_Bool SdHTMLFilter::Export()
SfxItemSet *pSet = mrMedium.GetItemSet();
::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aParams;
+ OUString sFilterOptions;
const SfxPoolItem* pItem;
+
if ( pSet->GetItemState( SID_FILTER_DATA, false, &pItem ) == SFX_ITEM_SET )
((SfxUnoAnyItem*)pItem)->GetValue() >>= aParams;
- delete( new HtmlExport( mrMedium.GetName(), aParams, &mrDocument, &mrDocShell ) );
+ if (pSet->GetItemState(SID_FILE_FILTEROPTIONS, true, &pItem) == SFX_ITEM_SET)
+ sFilterOptions = ((SfxStringItem*)pItem)->GetValue();
+
+ HtmlExport aExport(mrMedium.GetName(), aParams, sFilterOptions, &mrDocument, &mrDocShell);
return true;
}
More information about the Libreoffice-commits
mailing list