configuration_files_widget.h
Go to the documentation of this file.
00001 /*********************************************************************
00002  * Software License Agreement (BSD License)
00003  *
00004  *  Copyright (c) 2012, Willow Garage, Inc.
00005  *  All rights reserved.
00006  *
00007  *  Redistribution and use in source and binary forms, with or without
00008  *  modification, are permitted provided that the following conditions
00009  *  are met:
00010  *
00011  *   * Redistributions of source code must retain the above copyright
00012  *     notice, this list of conditions and the following disclaimer.
00013  *   * Redistributions in binary form must reproduce the above
00014  *     copyright notice, this list of conditions and the following
00015  *     disclaimer in the documentation and/or other materials provided
00016  *     with the distribution.
00017  *   * Neither the name of Willow Garage nor the names of its
00018  *     contributors may be used to endorse or promote products derived
00019  *     from this software without specific prior written permission.
00020  *
00021  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00022  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00023  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00024  *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00025  *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00026  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00027  *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00028  *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00029  *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00030  *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00031  *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00032  *  POSSIBILITY OF SUCH DAMAGE.
00033  *********************************************************************/
00034 
00035 /* Author: Dave Coleman */
00036 
00037 #ifndef MOVEIT_ROS_MOVEIT_SETUP_ASSISTANT_WIDGETS_CONFIGURATION_FILES_WIDGET_
00038 #define MOVEIT_ROS_MOVEIT_SETUP_ASSISTANT_WIDGETS_CONFIGURATION_FILES_WIDGET_
00039 
00040 #include <QWidget>
00041 #include <QPushButton>
00042 #include <QString>
00043 #include <QProgressBar>
00044 #include <QLabel>
00045 #include <QListWidget>
00046 #include <QList>
00047 
00048 #ifndef Q_MOC_RUN
00049 #include <moveit/setup_assistant/tools/moveit_config_data.h>
00050 #endif
00051 
00052 #include "header_widget.h"
00053 #include "setup_screen_widget.h"  // a base class for screens in the setup assistant
00054 
00055 namespace moveit_setup_assistant
00056 {
00057 // Struct for storing all the file operations
00058 struct GenerateFile
00059 {
00060   GenerateFile() : write_on_changes(0), generate_(true), modified_(false)
00061   {
00062   }
00063   std::string file_name_;
00064   std::string rel_path_;
00065   std::string description_;
00066   unsigned long write_on_changes;  // bitfield indicating required rewrite
00067   bool generate_;                  // "generate" checkbox ticked?
00068   bool modified_;                  // file externally modified?
00069   boost::function<bool(std::string)> gen_func_;
00070 };
00071 
00072 // Typedef for storing template string replacement pairs
00073 typedef std::vector<std::pair<std::string, std::string> > StringPairVector;
00074 
00075 // Class
00076 class ConfigurationFilesWidget : public SetupScreenWidget
00077 {
00078   Q_OBJECT
00079 
00080 public:
00081   // ******************************************************************************************
00082   // Public Functions
00083   // ******************************************************************************************
00084 
00085   ConfigurationFilesWidget(QWidget* parent, moveit_setup_assistant::MoveItConfigDataPtr config_data);
00086 
00088   virtual void focusGiven();
00089 
00090   // ******************************************************************************************
00091   // Qt Components
00092   // ******************************************************************************************
00093   QPushButton* btn_save_;
00094   LoadPathWidget* stack_path_;
00095   QProgressBar* progress_bar_;
00096   QListWidget* action_list_;
00097   QLabel* action_label_;
00098   QLabel* success_label_;
00099   QList<QString> action_desc_;  // Holds the descriptions explaining all performed actions
00100 
00101 private Q_SLOTS:
00102 
00103   // ******************************************************************************************
00104   // Slot Event Functions
00105   // ******************************************************************************************
00106 
00108   void savePackage();
00109 
00111   bool generatePackage();
00112 
00114   void exitSetupAssistant();
00115 
00117   void changeActionDesc(int id);
00118 
00120   void changeCheckedState(QListWidgetItem* item);
00121 
00122 private:
00123   // ******************************************************************************************
00124   // Variables
00125   // ******************************************************************************************
00126 
00128   moveit_setup_assistant::MoveItConfigDataPtr config_data_;
00129 
00131   std::string new_package_name_;
00132 
00134   unsigned int action_num_;
00135 
00137   bool has_generated_pkg_;
00138 
00140   bool first_focusGiven_;
00141 
00143   std::vector<GenerateFile> gen_files_;
00144 
00146   StringPairVector template_strings_;
00147 
00148   // ******************************************************************************************
00149   // Private Functions
00150   // ******************************************************************************************
00151 
00153   bool loadGenFiles();
00154 
00157   bool checkGenFiles();
00158 
00160   bool showGenFiles();
00161 
00163   bool checkDependencies();
00164 
00166   void updateProgress();
00167 
00169   const std::string getPackageName(std::string package_path);
00170 
00172   bool noGroupsEmpty();
00173 
00178   void loadTemplateStrings();
00179 
00186   bool addTemplateString(const std::string& key, const std::string& value);
00187 
00197   bool copyTemplate(const std::string& template_path, const std::string& output_path);
00198 
00204   bool createFolder(const std::string& output_path);
00205 };
00206 
00207 }  // namespace moveit_setup_assistant
00208 
00209 #endif


moveit_setup_assistant
Author(s): Dave Coleman
autogenerated on Mon Jul 24 2017 02:22:29