[Libreoffice] [GSoC 2011][svgexport] I need some help on exporting "all selected slides" task
Marco
mrcekets at gmail.com
Wed Jun 8 03:16:03 PDT 2011
On Wed, 08 Jun 2011 10:44:14 +0200, Christian Lippka <cl at lippka.com> wrote:
> Hi Marco,
>
> Am 08.06.2011 10:29, schrieb Thorsten Behrens:
>> Marco wrote:
>>> I hoped to get some type of object or container that let me to find
>>> the selected thumbnail slides out.
>>> On the contrary the result is that the selection type is "void",
>>> that means "no selection" IMO.
>>>
>>> So I don't know how to carry on this task.
>>>
>> Hi Marco,
>>
>> Cc-ing the list, this may be of public interest - for the moment, I
>> suggest you simply export *all* slides. Christian, off the top of
>> your head, is there a way to retrieve the current selection from the
>> Slidesorter via UNO?
> There is a SdUnoSlideView::getSelection implementation that puts all
> selected slides as XDrawPage reference in a
> sequence so chances are good it does what you are looking for.
> The open question is how to get the correct XSelectionSupplier to call
> getSelection on. I would hope that it is
> the obvious one, xModel->getCurrentController(). But Andrés view
> hierarchy may be more complex than that.
> But it also depends if you only need this if you are actual in the slide
> sorter view. If you need this from the slide panel
> than this may be more complicate. Feel free to ask about that specific
> if you can't figure that out for yourself.
>
Hi Christian,
thanks for your quick reply.
Yes, the problem is how to get the correct XSelectionSupplier.
The present code find the current showed slide out:
uno::Reference< frame::XDesktop > xDesktop( mxMSF->createInstance(
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM "com.sun.star.frame.Desktop"
)) ), uno::UNO_QUERY);
if( xDesktop.is() )
{
uno::Reference< frame::XFrame > xFrame(
xDesktop->getCurrentFrame() );
if( xFrame.is() )
{
uno::Reference< frame::XController > xController(
xFrame->getController() );
if( xController.is() )
{
uno::Reference< drawing::XDrawView > xDrawView(
xController, uno::UNO_QUERY );
if( xDrawView.is() )
{
uno::Reference< drawing::XDrawPage > xDrawPage(
xDrawView->getCurrentPage() );
if( xDrawPage.is() )
{
uno::Reference< beans::XPropertySet >(
xDrawPage, uno::UNO_QUERY )->
getPropertyValue( ::rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM( "Number" ) ) ) >>= nCurrentPageNumber;
}
}
}
}
}
I tried to get a XSelectionSupplier interface from the xController object
above:
uno::Reference< view::XSelectionSupplier >
xSelectionSupplier( xController, uno::UNO_QUERY );
if( xSelectionSupplier.is() )
{
::com::sun::star::uno::Any aSelection =
xSelectionSupplier->getSelection();
OUString sTypeName = aSelection.getValueTypeName();
OSL_TRACE("Selection Type: '%s'\n",
OUStringToOString( sTypeName, RTL_TEXTENCODING_UTF8 ).getStr());
}
else
{
OSL_TRACE ("xSelectionSupplier.is() == false");
}
but as I said aSelection internal type seems to be "void"
So from which controller should I get the XSelectionSupplier interface ?
You talk about an xModel object where should I get it from ?
I thought that I should get the frame/component representing the Slide
sorter panel,
but I don't know how to do that, too.
Correctly you ask me where I am (that is which component/frame has the
focus) when
I need this selection, well the answer is: inside the document export
dialog, and
I guess that this makes all things more complex.
Cheers,
Marco
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
More information about the LibreOffice
mailing list