00001 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*- 00002 00003 /* -- BEGIN LICENSE BLOCK ---------------------------------------------- 00004 00005 Copyright (c) 2013, TB 00006 All rights reserved. 00007 00008 Redistribution and use in source and binary forms are permitted 00009 provided that the above copyright notice and this paragraph are 00010 duplicated in all such forms and that any documentation, 00011 advertising materials, and other materials related to such 00012 distribution and use acknowledge that the software was developed 00013 by TB. The name of the 00014 TB may not be used to endorse or promote products derived 00015 from this software without specific prior written permission. 00016 THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 00017 IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 00018 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00019 00020 -- END LICENSE BLOCK ----------------------------------------------*/ 00021 00022 //---------------------------------------------------------------------- 00029 //---------------------------------------------------------------------- 00030 00031 #ifndef _MARBLE_PLUGIN_H 00032 #define _MARBLE_PLUGIN_H 00033 00034 // ROS Plugin Includes 00035 #include <rqt_gui_cpp/plugin.h> 00036 #include <ros/ros.h> 00037 00038 // Message Includes 00039 #include <sensor_msgs/NavSatFix.h> 00040 00041 // Qt Includes 00042 #include <QtCore/QObject> 00043 #include <QMutex> 00044 00045 // Own Includes 00046 #include <marble_plugin/ui_marble_plugin.h> 00047 00048 namespace marble_plugin { 00049 00050 class MarblePlugin 00051 : public rqt_gui_cpp::Plugin 00052 { 00053 Q_OBJECT 00054 public: 00055 MarblePlugin(); 00056 virtual void initPlugin(qt_gui_cpp::PluginContext& context); 00057 virtual void shutdownPlugin(); 00058 virtual void saveSettings(qt_gui_cpp::Settings& plugin_settings, qt_gui_cpp::Settings& instance_settings) const; 00059 virtual void restoreSettings(const qt_gui_cpp::Settings& plugin_settings, const qt_gui_cpp::Settings& instance_settings); 00060 00061 // Comment in to signal that the plugin has a way to configure it 00062 //bool hasConfiguration() const; 00063 //void triggerConfiguration(); 00064 00065 void GpsCallback( const sensor_msgs::NavSatFixConstPtr& gpspt ); 00066 00067 private: 00068 00069 Q_SIGNALS: 00070 00071 void NewGPSPosition(qreal,qreal); 00072 00073 private Q_SLOTS: 00074 00075 void ChangeGPSTopic(const QString &topic_name); 00076 void SetKMLFile(bool envoke_file_dialog = true ); 00077 void ChangeMarbleModelTheme(int idx ); 00078 void FindGPSTopics(); 00079 00080 private: 00081 00082 Ui_Form ui_; 00083 00084 QWidget* widget_; 00085 00086 ros::Subscriber m_sat_nav_fix_subscriber; 00087 00088 }; 00089 } // namespace 00090 #endif // _MARBLE_PLUGIN_H 00091