Hi Mathias,

Thank you very much for you reply, Mikhail also reminded me n a previous IRC meeting. It should have been obvious but I was too stupid to ignore that. :-[

Thanks and Best Regards,
Felix.


Mathias Bauer
Hi,

I forgot to mention: it only returns a non-NULL value, if a printer has
been created before or if "GetPrinter" is called with the parameter
bCreate=TRUE (default is FALSE).

Ciao,
Mathias

Mathias Bauer wrote:

Hi,

IIRC this is a virtual method and all derived classes should return a
printer.

Regards,
Mathias

Zhang Xiaofei wrote:

Hi Mikhail,

Here is the new patch for i6010, sorry I did not send it earlier, but again a new problem happens: the msole object doesn't print. After a quick debug I found it's because the current implementation of SfxViewShell::GetPrinter() always return a null pointer. I suppose some work is just undone here?( I'm still confused that the method has already widely used though ) Do you think we should implement this method or is there a workaround for our case? I'm looking forward to your suggestions.

Thanks and Best Regards,
Felix.


Mikhail Voitenko
Hi Felix,

I am awfully sorry for the delay with answer. I had to do some investigations to find out how a replacement image could be printed.

The implementation should be done on the container side in this case. The container side has the replacement image and access to the vcl implementation. So I would suggest to throw UnreachableStateException from the MSOLE object in case "Print" verb is provided to doVerb() call. The implementation in the sfx2/source/view/ipclient.cxx in method DoVerb() should check in case of this exception whether the PRINT verb is used ( it is already don for the default verb in similar way ). In this case the container should try to print the replacement image.

The printing can be implemented in following way:
- get the container SfxViewShell using GetViewShell() call from DoVerb
- if the shell is not NULL use pViewShell->GetPrinter() call to get the printer - if the printer is not null please get the graphics from the replacement image, that would need the following steps: - Please get the container object shell using pViewShell->GetObjectShell() - if it is not NULL please call pObjectShell->GetEmbeddedObjectContainer().GetGraphicStream( m_pImp->m_xObject ) - now the stream has to be converted to Graphic object, please see the implementation in svtools/source/misc/embedhlp.cxx in method EmbeddedObjectRef::GetReplacement() as example - after you have Graphic object you can execute pGraphic->Draw( pPrinter, Point( 0, 0 ) )

We can discuss further details/questions tomorrow on IRC meeting.

As for the testing, it would be nice to test the functionality on Linux, but in this case it is not really necessary I think. The implementation looks generally to be platform independent, so it is not necessary to spend time an prepare the linux build only for this.

Best regards,
Mikhail.

On 02/24/09 05:02, Zhang Xiaofei wrote:
Hi Mikhail,

Thank you for your hint, here I created a small fragmentary patch for the first step, please point out if there's obvious problems within. And I would like to hear the details regarding the image printing so that I can understand more about the related code before our next meeting, but only if your time permits , of course. :-) By the way do you think I should prepare a new linux build, please? I don't know if it is necessary for testing our new implementation and feel like need advice.

Thank you and Best Regards,
Felix.


Mikhail Voitenko
Hi Felix,

On 02/20/09 09:50, Zhang Xiaofei wrote:
Hi Mikhail,

Sorry but I searched the usage of GetVerbByShortcut() and couldn't find an example, I may need your hint on this little question regarding the first step: what exactly is the ShortCut of a Verb please? Is it in our case, "PRINT"?
Yes exactly, it is "PRINT" in this case. This is the shortcut that is used as the node name in the configuration. The method gets the information from the configuration and fills the verb description. You can find the implementation and the usage of the method in the comphelper/source/misc/mimeconfighelper.cxx

Best regards,
Mikhail.

Best Regards,
Felix.


Mikhail Voitenko
Hi Felix,

Thanks a lot for the patch, it looks good.

Now the MSOLE implementation should be adjusted as we have discussed.
The first step would be to let the getSupportedVerbs() implementation return the print verb. MSOLE objects are a special case, the verbs are either requested from the external server ( in case it is Windows system with installed server related to the object ), or just empty in case of Unix systems. The new implementation should add the print verb for both cases. To get the PRINT verb value from configuration please use "::comphelper::MimeConfigurationHelper::GetVerbByShortcut()" method.

The next step will be to implement the verb itself. In case getPreferredVisualRepresentation() can retrieve the replacement image the image could be printed by the object itself. Sometimes it might work even on Unix systems in case the image is stored in the object stream. Otherwise it should be printed in the container. I will send the details regarding the image printing tomorrow.

Best Regards,
Mikhail.

On 02/19/09 10:14, Zhang Xiaofei wrote:
Hi Mikhail,

I'm sorry our network broke down after our meeting yesterday. With this patch the temporary frame is hidden when document is printed now. Would you please review it for me?
Thank you for your help. :-)

Best Regards,
Felix.
------------------------------------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@framework.openoffice.org
For additional commands, e-mail: dev-h...@framework.openoffice.org




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@framework.openoffice.org
For additional commands, e-mail: dev-h...@framework.openoffice.org

Reply via email to