MainWindow.cpp
Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2015, 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 


qt_paramedit
Author(s): Christian Dornhege
autogenerated on Fri Aug 28 2015 12:50:12