/** The text entered in the command textfield is sent (enter key pressed)
  *
  *
  * \param o A parameter used for FOX callbacks
  * \param s A parameter used for FOX callbacks
  * \param v The text comming from the command textfield
  *
  * \return Always 1
  *
  */
long RainbruRPG::Gui::FtpClientWindow::
treatNewCommand(FXObject* o,FXSelector s,void* v){
  FXString str;
  str=(FX::FXchar*)v;

  FXString filename=(FX::FXchar*)v;

  // If the entered text is not empty
  if (!str.empty()){

    fxText->appendText( "> " );
    fxText->appendText( str );
    fxText->appendText( "\n" );
    
    FXTextField* a=(FXTextField*)o;
    a->setText("");


    str=str.upper();
    if (str.contains("HELP")!=0){
      if (str.contains("USER")!=0){
	showHelpUser();
      }
      else if (str.contains("PASS")!=0){
	showHelpPass();
      }
      else if (str.contains("PASV")!=0){
	showHelpPasv();
      }
      else if (str.contains("PWD")!=0){
	showHelpPwd();
      }
      else if (str.contains("LIST")!=0){
	showHelpList();
      }
      else if (str.contains("SYST")!=0){
	showHelpSyst();
      }
      else if (str.contains("BINARY")!=0){
	showHelpBinary();
      }
      else if (str.contains("ASCII")!=0){
	showHelpAscii();
      }
      else if (str.contains("STOR")!=0){
	showHelpStore();
      }
      else if (str.contains("RETR")!=0){
	showHelpRetrieve();
      }
      else{
	onHelp(NULL,0,NULL);

      }
    }
    else if (str.contains("LIST")!=0){
      string s=ftpClient->commandLIST();
      FXString str=s.c_str();
      str.substitute('\r', ' ', true );
      logMessage(str);
    }
    else if (str.contains("PASV")!=0){
      ftpClient->toggleTransferMode();
      string s=ftpClient->waitControlResponse();
      logMessage(s.c_str());
    }
    else if (str.contains("PWD")!=0){
      string s=ftpClient->commandPWD();
      logMessage(s.c_str());
    }
    else if (str.contains("SYST")!=0){
      string s=ftpClient->commandSYST();
      logMessage(s.c_str());
    }
    else if (str.contains("BINARY")!=0){
      string s=ftpClient->commandBINARY();
      logMessage(s.c_str());
    }
    else if (str.contains("ASCII")!=0){
      string s=ftpClient->commandASCII();
      logMessage(s.c_str());
    }
    else if (str.contains("STOR")!=0){
      // because str is in UPPER case
      // I get the no-upper string
      int pos = str.find("STOR", 0);
      filename.erase( pos, 5 );

      LOGCATS("Filename :");
      LOGCATS(filename.text());
      LOGCAT();

      std::string fn(filename.text());

      // Get filename
      int filesize=ftpClient->getFilesize(fn);
      labTrPb->setTotal(filesize);

      // Change transfer information
      labTransName->setText(filename);
      labTransOrie->setText("Out");
      labTransSize->setText(filesizeToString(filesize));

      string s=ftpClient->commandSTOR(fn);
      logMessage(s.c_str());
    }
    else if (str.contains("RETR")!=0){
      // because str is in UPPER case
      // I get the no-upper string
      int pos = str.find("RETR", 0);
      filename.erase( pos, 5 );

      LOGCATS("Filename :");
      LOGCATS(filename.text());
      LOGCAT();

      std::string fn(filename.text());

      // Change transfer information
      labTransName->setText(filename);
      labTransOrie->setText("In");

      string s=ftpClient->commandRETR(fn);
      logMessage(s.c_str());
    }
    else{
      logMessage("Unknown command");
    }
  }

  scrollDown();
  return 1;
}