Hi Thorsten,
Mon, Nov 15, 2010 at 5:40 PM, Thorsten Behrens
<thb@documentfoundation.org> wrote:
surenspost@gmail.com wrote:
1) Making it work in all OS/platforms:
[...]
Hi Suren,
wow, great progress! For the editing, one easy way out would be to
use the SystemShellExecute service, which will pick an app
registered for the file type at hand. You can e.g. find a usage
example in sfx2/source/dialog/about.cxx:298
Thanks for the encouraging words :)
I spent quite some time trying to find out how XSystemShellExecute
works (ie) how it gets an application mapped to a specific mime-type,
so that I can use it in my logic. I was in fact done creating a new
interface to get that logic re-factored. But I realised was that,
XSystemShellExecute is only internally calling "gnome-open-url
$filepath" ( which is a shell script which does a xdg-open or
gnome-open ). And for mac, it does a "open $filePath". This is bad for
our purpose because both these functions returns (and not blocks) as
soon as the new external application is opened and _not _ wait until
they are closed.
Here are the few alternatives I can think of :
1) register an event Listener to listen to any change of that
temporary file. And update the graphic in the call-back function of
that event listener. Remove the event listener after graphic update is
done ( Not sure if file based even listeners are available)
2) Give the users an option to choose application ( FIle picker dialog
) and save it in libreoffice's session info (How to save it across
multiple sessions ? )
3) Directly check the availability of certain applications like
Photoshop, Gimp , Preview. ( But this is really bad )
To be honest, I didn't anticipate these many issues when I chose to
work on it, but I am getting to learn a lot about Libreoffice code
base this way. This really is a good beginner bug :)
A smallish nit regarding the move of lcl_GetPreferedExtension to a
header - better rename it GetPreferedExtension, remove the static,
have the declaration in the header - but keep the code inside a cxx.
This is Done :)
3) Window repaint issue:
[...]
A rather blunt method is to call SwWrtShell::InvalidateWindows(),
that basically forces a repaint of the given rectangular area. Would
have to dig a bit for the Writer method du jour for this case, maybe
the code from grfsh.cxx above has the right call already, e.g.
UpdateFlyFrm() or somesuch.
there is a ReRead method for a SwWrtShell which worked well for this
case. ( Used once in grfsh.hxx)
Keep going, this starts to look *really* nice! :)
Cheers,
-- Thorsten
Thanks again. I really appreciate your help in giving me a lots of
current usages (to an extent of line numbers in specific files to look
for ).
--
regards
Suren
Learning < Doing
Learn By doing.
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.