Date: prev next · Thread: first prev next last
2019 Archives by date, by thread · List index


Hi Miklos,

Miklos Vajna schrieb am 03-Dec-19 um 11:22:
Hi Regina,

On Tue, Dec 03, 2019 at 01:38:59AM +0100, Regina Henschel <rb.henschel@t-online.de> wrote:
Any idea, how I can apply FitToCellSize() to a shape in a unit test?

Here is an sc/ test dispatching an UNO command:

sc/qa/unit/screenshots/screenshots.cxx:302

though this is commented out, but gives you an idea how to get an
SfxViewShell in Calc.

Here is an sd/ test that does the same, and is an active test:

sd/qa/unit/uiimpress.cxx:99

Hopefully this is enough so that you can test your UNO command as well.

Thank you, for your code pointers. But I still have no solution.

See below, what I have tried so far. I'm not sure whether all of these is necessary. Nevertheless, it gives me a ScDrawView. The needed part was
SfxViewShell* pViewShell = SfxViewShell::Get(xController);

But the methods of ScDrawView are not available in the unit test, so I can not use FitToCellSize() directly. But more seriously, I can not even mark the object. The method MarkAll() is available, because it belongs to the parent SdrView. But it does not work, because the layer of the object is locked, and I have no idea why. And the object needs to be marked too, when I will try a solution with dispatcher.

Kind regards
Regina


Lines with // do not work.

void ScFiltersTest::testFitToCellSize()
{
uno::Reference< frame::XDesktop2 > xDesktop = frame::Desktop::create(::comphelper::getProcessComponentContext());
    CPPUNIT_ASSERT(xDesktop.is());

uno::Reference< frame::XFrame > xFrame = xDesktop->findFrame("_blank", 0);
    CPPUNIT_ASSERT(xTargetFrame.is());

uno::Reference<awt::XWindow> xContainerWindow = xFrame->getContainerWindow();
    CPPUNIT_ASSERT(xContainerWindow.is());
    xContainerWindow->setPosSize(0, 0, 1024, 768, awt::PosSize::SIZE);
VclPtr<vcl::Window> pContainerWindow = VCLUnoHelper::GetWindow(xContainerWindow);
    CPPUNIT_ASSERT(pContainerWindow);
    pContainerWindow->Show(true);

ScDocShellRef xDocSh = loadDoc("tdf119191_FitToCellSize.", FORMAT_ODS, true);
    CPPUNIT_ASSERT(xDocSh.is());
    xDocSh = saveAndReload( &(*xDocSh), FORMAT_ODS);
    CPPUNIT_ASSERT( xDocSh.is() );

uno::Reference< frame::XModel2 > xModel2(xDocSh->GetModel(), uno::UNO_QUERY);
    CPPUNIT_ASSERT(xModel2.is());

uno::Reference< frame::XController2 > xController = xModel2->createDefaultViewController(xFrame);
    CPPUNIT_ASSERT(xController.is());

    xController->attachModel(xModel2.get());
    xModel2->connectController(xController.get());
xFrame->setComponent(xController->getComponentWindow(), xController.get());
//  xController->attachFrame(xFrame);
    xModel2->setCurrentController(xController.get());

    SfxViewShell* pViewShell = SfxViewShell::Get(xController);
ScTabViewShell* pTabViewShell = dynamic_cast<ScTabViewShell*>(pViewShell);
    CPPUNIT_ASSERT_MESSAGE("no ScTabViewShell", pTabViewShell);

    ScDrawView* pDrawView = pTabViewShell->GetViewData().GetScDrawView();
    CPPUNIT_ASSERT_MESSAGE("no ScDrawView*", pDrawView);

    ScDocument& rDoc = xDocSh->GetDocument();
    ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
    const SdrPage* pPage = pDrawLayer->GetPage(0);
SdrObjCustomShape* pObj = dynamic_cast<SdrObjCustomShape*>(pPage->GetObj(0));
    CPPUNIT_ASSERT_MESSAGE("no SdrObjCustomShape*", pObj);

//    pDrawView->SelectObject("chevron");
    pDrawView->MarkAll();

// CPPUNIT_ASSERT_MESSAGE("no object marked", pDrawView->AreObjectsMarked()); // CPPUNIT_ASSERT_MESSAGE("wrong object marked", pDrawView->GetObjectIsMarked(pObj));

//    pDrawView->FitToCellSize();
    const tools::Rectangle& rObservedRect(pObj->GetSnapRect());
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2499), rObservedRect.Left());

    xDocSh->DoClose();
}


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.