-/*
- * CanvasWidget.cxx
- *
- * Created on: 03.07.2012
- * Author: tom
- */
+// Airports forward declarations
+//
+// Copyright (C) 2012 Thomas Geymayer <tomgey@gmail.com>
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#ifdef HAVE_CONFIG_H
# include <config.h>
puObject(x, y, width, height),
_canvas_mgr( dynamic_cast<CanvasMgr*>(globals->get_subsystem("Canvas")) ),
_last_x(0),
- _last_y(0)
+ _last_y(0),
+ // automatically resize viewport of canvas if no size is given
+ _auto_viewport( !props->hasChild("view") )
{
if( !_canvas_mgr )
{
cprops->setBoolValue("render-always", true);
cprops->setStringValue( "name",
props->getStringValue("name", "gui-anonymous") );
- SGPropertyNode* input = cprops->getChild("input", 0, true);
- _mouse_x = input->getChild("mouse-x", 0, true);
- _mouse_y = input->getChild("mouse-y", 0, true);
- _mouse_down = input->getChild("mouse-down", 0, true);
- _mouse_drag = input->getChild("mouse-drag", 0, true);
SGPropertyNode *nasal = props->getNode("nasal");
if( !nasal )
CanvasWidget::~CanvasWidget()
{
if( _canvas )
- // TODO check if really not in use anymore
- _canvas->getProps()
- ->getParent()
- ->removeChild( _canvas->getProps()->getName(),
- _canvas->getProps()->getIndex(),
- false );
+ _canvas->destroy();
}
// Old versions of PUI are missing this defines...
}
_canvas->handleMouseEvent(event);
-
- _mouse_x->setIntValue(x - abox.min[0]);
- _mouse_y->setIntValue(abox.max[1] - y);
-
- if( updown == PU_DRAG )
- _mouse_drag->setIntValue(button);
- else if( updown == PU_DOWN )
- _mouse_down->setIntValue(button);
}
//------------------------------------------------------------------------------
{
puObject::setSize(w, h);
- _canvas->getProps()->setIntValue("view[0]", w);
- _canvas->getProps()->setIntValue("view[1]", h);
+ if( _auto_viewport )
+ {
+ _canvas->getProps()->setIntValue("view[0]", w);
+ _canvas->getProps()->setIntValue("view[1]", h);
+ }
}
//------------------------------------------------------------------------------