$search
00001 /* 00002 * Copyright (c) 2008, Willow Garage, Inc. 00003 * All rights reserved. 00004 * 00005 * Redistribution and use in source and binary forms, with or without 00006 * modification, are permitted provided that the following conditions are met: 00007 * 00008 * * Redistributions of source code must retain the above copyright 00009 * notice, this list of conditions and the following disclaimer. 00010 * * Redistributions in binary form must reproduce the above copyright 00011 * notice, this list of conditions and the following disclaimer in the 00012 * documentation and/or other materials provided with the distribution. 00013 * * Neither the name of the Willow Garage, Inc. nor the names of its 00014 * contributors may be used to endorse or promote products derived from 00015 * this software without specific prior written permission. 00016 * 00017 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00018 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00019 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00020 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 00021 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00022 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00023 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00024 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00025 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00026 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00027 * POSSIBILITY OF SUCH DAMAGE. 00028 */ 00029 00030 #include "visualization_panel.h" 00031 #include "render_panel.h" 00032 #include "displays_panel.h" 00033 #include "visualization_manager.h" 00034 00035 #include <ros/package.h> 00036 #include <ros/console.h> 00037 00038 #include <ogre_tools/initialization.h> 00039 00040 #include <wx/splitter.h> 00041 00042 namespace rviz 00043 { 00044 00045 VisualizationPanel::VisualizationPanel(wxWindow* parent) 00046 : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(800,600), wxTAB_TRAVERSAL) 00047 { 00048 if (!ros::isInitialized()) 00049 { 00050 int argc = 0; 00051 ros::init(argc, 0, "rviz", ros::init_options::AnonymousName); 00052 } 00053 00054 wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL); 00055 SetSizer(sizer); 00056 00057 wxSplitterWindow* splitter = new wxSplitterWindow(this, wxID_ANY); 00058 00059 render_panel_ = new RenderPanel( splitter ); 00060 displays_panel_ = new DisplaysPanel( splitter ); 00061 00062 splitter->SplitVertically(displays_panel_, render_panel_, 300); 00063 sizer->Add(splitter, 1, wxEXPAND); 00064 00065 std::string package_path = ros::package::getPath("rviz"); 00066 ogre_tools::V_string paths; 00067 paths.push_back(package_path + "/ogre_media/textures"); 00068 ogre_tools::initializeResources( paths ); 00069 00070 manager_ = new VisualizationManager(render_panel_); 00071 render_panel_->initialize(manager_->getSceneManager(), manager_); 00072 displays_panel_->initialize(manager_); 00073 00074 manager_->initialize(); 00075 manager_->startUpdate(); 00076 00077 Layout(); 00078 } 00079 00080 VisualizationPanel::~VisualizationPanel() 00081 { 00082 render_panel_->Destroy(); 00083 delete manager_; 00084 } 00085 00086 void VisualizationPanel::loadGeneralConfig(const std::string& filepath) 00087 { 00088 boost::shared_ptr<wxFileConfig> config(new wxFileConfig(wxEmptyString, wxEmptyString, wxEmptyString, wxString::FromAscii(filepath.c_str()), wxCONFIG_USE_GLOBAL_FILE)); 00089 manager_->loadGeneralConfig(config); 00090 } 00091 00092 void VisualizationPanel::loadDisplayConfig(const std::string& filepath) 00093 { 00094 boost::shared_ptr<wxFileConfig> config(new wxFileConfig(wxEmptyString, wxEmptyString, wxEmptyString, wxString::FromAscii(filepath.c_str()), wxCONFIG_USE_GLOBAL_FILE)); 00095 manager_->loadDisplayConfig(config); 00096 } 00097 00098 }