$search
00001 /* 00002 * Copyright (c) 2011, C. Dornhege, University of Freiburg 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 notice, this 00009 * list of conditions and the following disclaimer. 00010 * * Redistributions in binary form must reproduce the above copyright notice, 00011 * this list of conditions and the following disclaimer in the documentation 00012 * and/or other materials provided with the distribution. 00013 * * Neither the name of the University of Freiburg nor the names 00014 * of its 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" AND 00018 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00019 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00020 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 00021 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00022 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00023 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00024 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00025 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00026 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00027 */ 00028 00029 #include "MainWindow.h" 00030 #include <stdio.h> 00031 #include "settingsDialog.h" 00032 00033 MainWindow::MainWindow(XmlRpc::XmlRpcValue & initParams, const std::string & paramRoot, ros::NodeHandle* nh) 00034 : _xmlrpc(initParams), _paramRoot(paramRoot), _nh(nh) 00035 { 00036 setupUi(this); 00037 00038 _model = new XmlRpcModel(&_xmlrpc, _paramRoot, _nh); 00039 setModel(_model); 00040 00041 _delegate = new XmlRpcItemDelegate(treeView); 00042 treeView->setItemDelegate(_delegate); 00043 00044 actionReload->setIcon(QIcon::fromTheme("view-refresh")); 00045 } 00046 00047 void MainWindow::setModel(QAbstractItemModel * model) 00048 { 00049 treeView->setModel(model); 00050 treeView->resizeColumnToContents(0); 00051 } 00052 00053 void MainWindow::on_actionReload_triggered() 00054 { 00055 if(!_nh->getParam(_paramRoot, _xmlrpc)) { 00056 ROS_ERROR("Could not get parameters at: \"%s\"", _paramRoot.c_str()); 00057 return; 00058 } 00059 00060 unsigned int maxDisplayLength = 120; 00061 if(_model) 00062 maxDisplayLength = _model->getMaxDisplayLength(); 00063 00064 delete _model; 00065 _model = new XmlRpcModel(&_xmlrpc, _paramRoot, _nh); 00066 00067 _model->setMaxDisplayLength(maxDisplayLength); 00068 00069 setModel(_model); 00070 ROS_INFO("Reloaded parameters from \"%s\"", _paramRoot.c_str()); 00071 } 00072 00073 void MainWindow::on_actionSettings_triggered() 00074 { 00075 SettingsDialog dialog(this); 00076 dialog.setDoubleDecimals(_delegate->getDoubleDecimals()); 00077 if(_model) 00078 dialog.setMaxDisplayLength(_model->getMaxDisplayLength()); 00079 00080 if(dialog.exec()) { 00081 _delegate->setDoubleDecimals(dialog.getDoubleDecimals()); 00082 if(_model) { 00083 _model->setMaxDisplayLength(dialog.getMaxDisplayLength()); 00084 } 00085 } 00086 } 00087