SaveWalkControl.h
Go to the documentation of this file.00001 #ifndef INCLUDED_SaveWalkControl_h
00002 #define INCLUDED_SaveWalkControl_h
00003 
00004 #include "StringInputControl.h"
00005 #include "Motion/MotionManager.h"
00006 #include "Motion/WalkMC.h"
00007 #include <string>
00008 
00009 
00010 class SaveWalkControl : public StringInputControl {
00011  public:
00012 
00013   SaveWalkControl(const std::string& n, MC_ID w) : StringInputControl(n,"Saves Walk parameters to filename read from user","Please enter name for posture file (in data/motion)..."), walk_id(w), thewalk(NULL) {}
00014 
00015   SaveWalkControl(const std::string& n, WalkMC * awalk) : StringInputControl(n,"Saves Walk parameters to filename read from user","Please enter name for posture file (in data/motion)..."), walk_id(invalid_MC_ID), thewalk(awalk) {}
00016 
00017   virtual ~SaveWalkControl() {}
00018 
00019   virtual ControlBase * takeInput(const std::string& msg) {
00020     if(msg.size()>0) {
00021       std::string filename=config->motion.makePath(msg);
00022       if(filename.find(".")==std::string::npos)
00023         filename+=".prm";
00024       MC_ID id = (thewalk==NULL ? walk_id : thewalk->getID() );
00025       WalkMC* walk=thewalk;
00026       if(id!=invalid_MC_ID)
00027         walk = (WalkMC*)motman->checkoutMotion(id);
00028       if(walk==NULL)
00029         serr->printf("Invalid walk for saving\n");
00030       else {
00031         walk->saveFile(filename.c_str());
00032         if(id!=invalid_MC_ID)
00033           motman->checkinMotion(id);
00034       }
00035     }
00036     return StringInputControl::takeInput(msg);
00037   }
00038 
00039  protected:
00040   MC_ID walk_id; 
00041   WalkMC * thewalk; 
00042 
00043 private:
00044   SaveWalkControl(const SaveWalkControl&); 
00045   SaveWalkControl operator=(const SaveWalkControl&); 
00046 };
00047 
00048 
00049 
00050 
00051 
00052 #endif