main_window.cpp
Go to the documentation of this file.
00001 
00008 /*****************************************************************************
00009 ** Includes
00010 *****************************************************************************/
00011 
00012 #include <QtGui>
00013 #include <QMessageBox>
00014 #include <iostream>
00015 #include "main_window.hpp"
00016 
00017 using namespace Qt;
00018 
00019 /*****************************************************************************
00020 ** Implementation [MainWindow]
00021 *****************************************************************************/
00022 
00023 MainWindow::MainWindow(QNode *node, QWidget *parent) :
00024     QMainWindow(parent),
00025     qnode(node)
00026 {
00027         ui.setupUi(this); // Calling this incidentally connects all ui's triggers to on_...() callbacks in this class.
00028     QObject::connect(ui.actionAbout_Qt, SIGNAL(triggered(bool)), qApp, SLOT(aboutQt())); // qApp is a global variable for the application
00029 
00030     ReadSettings();
00031         setWindowIcon(QIcon(":/images/icon.png"));
00032         ui.tab_manager->setCurrentIndex(0); // ensure the first tab is showing - qt-designer should have this already hardwired, but often loses it (settings?).
00033 
00034         setWindowTitle(QApplication::translate("MainWindowDesign", qnode->nodeName().c_str(), 0, QApplication::UnicodeUTF8));
00035 
00036     /*********************
00037     ** Logging
00038     **********************/
00039         ui.view_logging->setModel(qnode->loggingModel());
00040         QObject::connect(qnode, SIGNAL(loggingUpdated()), this, SLOT(updateLoggingView()));
00041     QObject::connect(qnode, SIGNAL(rosShutdown()), this, SLOT(close()));
00042 
00043     /*********************
00044     ** Auto Start
00045     **********************/
00046     if ( ui.checkbox_remember_settings->isChecked() ) {
00047         on_button_connect_clicked(true);
00048     }
00049 }
00050 
00051 MainWindow::~MainWindow() {}
00052 
00053 /*****************************************************************************
00054 ** Implementation [Slots]
00055 *****************************************************************************/
00056 
00057 void MainWindow::showNoMasterMessage() {
00058         QMessageBox msgBox;
00059         msgBox.setText("Couldn't find the ros master.");
00060         msgBox.exec();
00061     close();
00062 }
00063 
00064 /*
00065  * These triggers whenever the button is clicked, regardless of whether it
00066  * is already checked or not.
00067  */
00068 
00069 void MainWindow::on_button_connect_clicked(bool check ) {
00070         if ( ui.checkbox_use_environment->isChecked() ) {
00071                 if ( !qnode->on_init() ) {
00072                         showNoMasterMessage();
00073                 } else {
00074                         ui.button_connect->setEnabled(false);
00075                 }
00076         } else {
00077                 if ( ! qnode->on_init(
00078                                         ui.line_edit_master->text().toStdString(),
00079                                         ui.line_edit_host->text().toStdString() )
00080                                 ) {
00081                         showNoMasterMessage();
00082                 } else {
00083                         ui.button_connect->setEnabled(false);
00084                         ui.line_edit_master->setReadOnly(true);
00085                         ui.line_edit_host->setReadOnly(true);
00086                 }
00087         }
00088 }
00089 
00090 void MainWindow::on_checkbox_use_environment_stateChanged(int state) {
00091         bool enabled;
00092         if ( state == 0 ) {
00093                 enabled = true;
00094         } else {
00095                 enabled = false;
00096         }
00097         ui.line_edit_master->setEnabled(enabled);
00098         ui.line_edit_host->setEnabled(enabled);
00099 }
00100 
00101 /*****************************************************************************
00102 ** Implemenation [Slots][manually connected]
00103 *****************************************************************************/
00104 
00110 void MainWindow::updateLoggingView() {
00111         ui.view_logging->scrollToBottom();
00112 }
00113 
00114 /*****************************************************************************
00115 ** Implementation [Menu]
00116 *****************************************************************************/
00117 
00118 void MainWindow::on_actionAbout_triggered() {
00119     QMessageBox::about(this, tr("About ..."),tr("<h2>PACKAGE_NAME Test Program 0.10</h2><p>Copyright Yujin Robot</p><p>This package needs an about description.</p>"));
00120 }
00121 
00122 /*****************************************************************************
00123 ** Implementation [Configuration]
00124 *****************************************************************************/
00125 
00126 void MainWindow::ReadSettings() {
00127     QSettings settings("Qt-Ros Package", qnode->nodeName().c_str());
00128     restoreGeometry(settings.value("geometry").toByteArray());
00129     restoreState(settings.value("windowState").toByteArray());
00130     QString master_url = settings.value("master_url",QString("http://192.168.1.2:11311/")).toString();
00131     QString host_url = settings.value("host_url", QString("192.168.1.3")).toString();
00132     QString topic_name = settings.value("topic_name", QString("/chatter")).toString();
00133     ui.line_edit_master->setText(master_url);
00134     ui.line_edit_host->setText(host_url);
00135     bool remember = settings.value("remember_settings", false).toBool();
00136     ui.checkbox_remember_settings->setChecked(remember);
00137     bool checked = settings.value("use_environment_variables", false).toBool();
00138     ui.checkbox_use_environment->setChecked(checked);
00139     if ( checked ) {
00140         ui.line_edit_master->setEnabled(false);
00141         ui.line_edit_host->setEnabled(false);
00142     }
00143 }
00144 
00145 void MainWindow::WriteSettings() {
00146     QSettings settings("Qt-Ros Package", qnode->nodeName().c_str());
00147     settings.setValue("geometry", geometry());
00148     settings.setValue("master_url",ui.line_edit_master->text());
00149     settings.setValue("host_url",ui.line_edit_host->text());
00150         settings.setValue("use_environment_variables",QVariant(ui.checkbox_use_environment->isChecked()));
00151     settings.setValue("windowState", saveState());
00152     settings.setValue("remember_settings",QVariant(ui.checkbox_remember_settings->isChecked()));
00153 }
00154 
00155 void MainWindow::closeEvent(QCloseEvent *event)
00156 {
00157         qnode->shutdown();
00158         WriteSettings();
00159         QMainWindow::closeEvent(event);
00160 }


qt_tutorials
Author(s): Daniel Stonier
autogenerated on Tue Jan 7 2014 11:33:48