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


On Wed, 08 Jun 2011 10:44:14 +0200, Christian Lippka <cl@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/

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.