/** 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; }