[osg-users] multiple windows

Emmanuel Roche roche.emmanuel at gmail.com
Thu Oct 25 14:01:34 PDT 2007


For those who would have some time to give a look at this, I'm joining the
code of a simple application designed to open a View in multiple tabs:

the user select an osg or ive file to open an then a new tab is created
using this file as scene Data.

There is a single CompositeViewer managed by the main frame, an 1 View
object per tab...

This sample is NOT working properly: if you add one tab, every thing is
okay, but when you had other tabs, as before, only the last one is displayed
:-( the others become empty [only the default blue background :-( ] and this
last tab doesn't handle the mouse inputs correctly [instead, it seems that
the mouse input for the first tab are used for this last View !!!...

Yet the code is very clear: each tab has its GraphicsWindowWX, (so its
wxGLCanvas too), its OSGPanel (so its own processing of mouse inputs, and
its View).. so what does this mean ? is the global CompositeViewer
appropriating itself the eventQueue of the first View added and then using
this one for the other Views ?....

As always , any clue would be really welcomed, I feel a bit lost with
this...

regards,
Manu.


2007/10/25, Emmanuel Roche <roche.emmanuel at gmail.com>:
>
> Hi again guys !
>
> I've just tested your solution Alberto, and indeed it's working and I can
> see both pages with two View on each page :-)...
>
> Yet I think there is still something I'm missing about the CompositeViewer
> behavior : indeed, I set a trackballmanipulator for the view1 [
> view1->setCameraManipulator(new osgGA::TrackballManipulator); ] and created
> a Mouse handling function:
>
> void ventana::OnMouse(wxMouseEvent& event)
> {
>     if (event.ButtonDown()) {
>         int button = event.GetButton();
>         v1->getEventQueue()->mouseButtonPress(event.GetX(), event.GetY(),
> button);
>     }
>     else if (event.ButtonUp()) {
>         int button = event.GetButton();
>         v1->getEventQueue()->mouseButtonRelease(event.GetX(), event.GetY(),
> button);
>     }
>     else if (event.Dragging ()) {
>         v1->getEventQueue()->mouseMotion(event.GetX(), event.GetY());
>     }
> }
>
> ... here "v1" is the first GraphicsWindow on the tab, and, when I activate
> this function by dragging the mouse on the tab nothing moves.... :-(... I
> trying replacing "v1" by "cViewer" and calling
> cViewer->setEventQueue(v1->getEventQueue()) in the initilialization process
> [ because the eventQueue seems to be NULL otherwise...] but this doesn't
> work either... Any clue about this ???
>
>
> regards,
> Manu.
>
>
> 2007/10/25, Robert Osfield <robert.osfield at gmail.com>:
> >
> > Hi Guys,
> >
> > I don't have any recommendations, or time right now to dive into this
> > topic.  I'd certainly like to see osgViewer be able to cope with this
> > type of usage, and its not one that its been coded for up to this
> > point.  Might I suggest getting a tabbed WxWidget example together
> > than could be included with the OSG distribution that illustrates the
> > this issue and can be used as a test bed for a final recommend
> > solution.
> >
> > Robert.
> >
> > On 10/25/07, Emmanuel Roche <roche.emmanuel at gmail.com> wrote:
> > > Thanks a lot Alberto I guess I could not get anything more usefull :-)
> > !
> > >
> > > I'm checking this right now....
> > >
> > > Regards,
> > > Manu.
> > >
> > > 2007/10/25, Alberto Luaces < aluaces at udc.es>:
> > > >
> > > > Hi Manu,
> > > >
> > > > I'm doing the very same thing, but with two views of a same scene on
> > every
> > > > tab. Currently it works well, but I suspect there are duplicated
> > > resources, so
> > > > I have to say that my code is not in its final version.
> > > >
> > > > I'm attaching it, it works for me on Linux and wx 2.6.3 unmodified.
> > > >
> > > > Feel free to compare it with yours so we can learn together :)
> > > >
> > > > HTH,
> > > >
> > > > Alberto
> > > >
> > > > El Thursday 25 October 2007 12:37:45 Emmanuel Roche escribió:
> > > > > Hello everyone!
> > > > >
> > > > > I've got a simple question, but I can't find any practical
> > solution:
> > > > >
> > > > > In my application, I have to display a notebook with a 3D window
> > on each
> > > > > tab... and I want to be able to add/remove tabs dynamically... so,
> > what
> > > can
> > > > > I use to achieve this result ?
> > > > >
> > > > > I'm usig wxWidgets + OSG 2.2.0
> > > > > I'm on Win XP
> > > > >
> > > > > I tried with a CompositeViewer :
> > > > > - creating the conpositeViewer when requested (so everything
> > should be
> > > in
> > > > > the wx event handling thread...)
> > > > > - building my graphicswindowWX
> > > > > - creating a view
> > > > > - adding this view to the compositeview
> > > > > - relying on an Idle function to call viewer->frame()...
> > > > >
> > > > > ... this works as long as there is a single tab...  but when I had
> > > others,
> > > > > then only the last tab added display something : the others only
> > display
> > > > > the blue background with no model anymore... ? why that ??
> > > > >
> > > > > by the way I had to make a small change in the
> > > > > GraphicsWindowWx::makeCurrentImplementation() :
> > > > >
> > > > > bool GraphicsWindowWX::makeCurrentImplementation() {
> > > > >   // Bouml preserved body begin 0001FE83
> > > > >     if(!GetParent()->IsShown())
> > > > >         return false;
> > > > >
> > > > >     SetCurrent();
> > > > >     return true;
> > > > >   // Bouml preserved body end 0001FE83
> > > > > }
> > > > >
> > > > > --> So the hidden tabs should return false here... could this be
> > the
> > > source
> > > > > of the problem ?? (anyway wxWidgets doesn't accept SetCurrent()
> > when the
> > > > > corresponding tab is not visible... :-S )
> > > > >
> > > > > regards !
> > > > >
> > > > > Thanks for your help !
> > > > > Manu.
> > > >
> > > >
> > > > _______________________________________________
> > > > osg-users mailing list
> > > > osg-users at lists.openscenegraph.org
> > > >
> > >
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > > >
> > > >
> > > >
> > >
> > >
> > > _______________________________________________
> > > osg-users mailing list
> > > osg-users at lists.openscenegraph.org
> > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> >
> > >
> > >
> > _______________________________________________
> > osg-users mailing list
> > osg-users at lists.openscenegraph.org
> >
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20071025/c520c563/attachment-0003.htm>


More information about the osg-users mailing list