[kde-edu]: Marble questions

Torsten Rahn torsten.rahn at credativ.de
Mon Apr 7 20:56:52 CEST 2008


Hi,

First let me say that of course depending on your deadline for your software 
you might either go for "KDE 4 branch Marble (0.5.x)" or "SVN trunk". SVN 
trunk is only expected to officially stabilize by about May / June and won't 
be binary compatible to Marble 0.5.1. 
Also please be aware that we are about to change the core architecture a bit 
to make it more clean and to allow exactly those things you'd like to do 
(however we'd  be glad to accept any patches as our development resources are 
more sparse than our ambitious plans for the future ;-)

On Monday 07 April 2008 19:43:06 Clarke, Trevor wrote:
> First, the application is not allowed to arbitrarily access the network
> for security reasons. I tried disabling data download (including
> Wikipedia access) by calling MarbleWidget->setDownloadManager(NULL)
> which did not seem to work. Is there something else I need to do or
> should I ifdef out the Wikipedia code before I compile the widget?

Ok. I realize that indeed there is a minor flaw/oddity that crept into the 
architecture: 
Actually HttpDownLoadManager already has a private member bool 
m_downloadEnabled; However getters and setters for that one are still missing 
(patches always appreciated) so your workaround to set the DownloadManager 
NULL is a valid one.

As you have found out PlaceMarkInfoDialog has got a Wikipedia-Browser 
(marble/src/lib/TinyWebbrowser.cpp) which instantiates its own 
HttpDownloadManager in the Ctor. So the quick and dirty solution would be 
indeed to either ifdef that part out or to set m_downloadManager = NULL there 
(Haven't tested the latter though).

The reason for the two different download managers is the fact that there are 
two socalled StoragePolicies how data can get saved: 

1.) Tiles get saved in a directory hierarchy as described here:

http://www.kdedevelopers.org/node/3269

2.) Wikipedia data gets saved as Qt resources in a different manner hence 
using a different StoragePolicy.

Once started the DownloadManager AFAIR needs to stick to one of those 
StoragePolicy modes for its lifetime (a pragmatic restriction which somebody 
might eventually fix someday ;-). 
So for each purpose (tiles and wikipedia data) there is a seperate 
downloadmanager needed.
As mentioned the second HttpDownloadManager gets instantiated by the 
TinyWebbrowser (actually we should rework that in a way similar to the way 
MarbleWidget treats the downloadmanager that it uses). Now the proper 
solution would of course be to give access to the downloadManager being used 
inside the PlaceMarkInfoDialog/TinyWebbrowser "from the outside".

> Second, I need to dynamically add vector data after Marble has
> initialized. This data is not available in a file so I can't just load
> some kml, etc. How can I add vector data to Marble via the C++ API after
> it is initialized? 

Currently (and in Marble 0.5.x) you can only inherit from MarbleWidget and 
either use the paintEvent or use 

    virtual void  MarbleWidget::customPaint( ClipPainter *painter );

to paint basically using a ClipPainter
(Clippainter is basically a QPainter extended with some enhancement that deals 
with restrictions of QPainter/XOrg that prevent Marble to slow down to a 
crawl).

We are about to rework this part in SVN. Please have a look at

marble/docs/paintingmaps.txt

which outlines approximately how we'd like painting on maps to work.
Also there is:

marble/src/lib/GeoPainter.h

which already mentions the methods that we plan to support and which "just" 
need to get implemented. Actually as long as you don't want lines to follow 
the projection between nodes this should be quite easy to implement.

> If I can't do this via the public API I can make some 
> patches...is this something that would likely be accepted as a patch?

Sounds like you'd like to do the GeoPainter.cpp implementation. Such patches 
would be greatly appreciated. Please have a look at GeoPainter.h and 
paintingmaps.txt and if you have detailed questions don't hesitate to either 
mail me, ask on marble-devel at kde.org or join "ingwa" and me (nick: "tackat") 
on irc.freenode.org at #kde-edu.

> should I submit the changes?

Yes, we are very interested in all kinds of patches that you might come up 
with. People have provided patches in the past and often they get applied 
straight away (except for minor fixing or course).

> (should I submit the changes?) If I need to add this capability, could
> someone point me in the right direction to get started?

Yes, as I said we have detailed plans in that area (as Marble is supposed to 
get used by people like you) and if you have detailed questions just ask :)

Best Wishes,

 Torsten Rahn

> ------------------------------
> Trevor R.H. Clarke
> tclarke at ball.com
> Ball Aerospace & Technologies Corp
> GPG key available on random.sks.keyserver.penguin.de
>
>
>
>
> This message and any enclosures are intended only for the addressee. 
> Please notify the sender by email if you are not the intended recipient. 
> If you are not the intended recipient, you may not use, copy, disclose, or
> distribute this message or its contents or enclosures to any other person
> and any such actions may be unlawful.  Ball reserves the right to monitor
> and review all messages and enclosures sent to or from this email address.
> _______________________________________________
> kde-edu mailing list
> kde-edu at mail.kde.org
> https://mail.kde.org/mailman/listinfo/kde-edu



-- 
 Torsten Rahn

 Tel.: 0 21 61 - 46 43 - 192

credativ GmbH, HRB Mönchengladbach 12080
Hohenzollernstr. 133, 41061 Mönchengladbach
Geschäftsführung: Dr. Michael Meskes, Jörg Folz


More information about the kde-edu mailing list