My application requires a console to be embeded within the application window, an example would be in a program like autoCAD where the console is at the bottom of the window waiting for commands.

I need the console within my application so that I can change variables and other things, so the console is not needing to be a fully blown out shell.
At the moment I have a simple console within my application, but It seems very clunky compared to a terminal(shell) which is what I want the console to be like.

The way that I have done it with the console I have is when the user presses the TAB key the console shows, then they can type in their command/line; Once the Return key has been pressed the string that they have typed gets parsed and the command is processed.
I am using sf::Text objects to print out text in my application window.
There are a total of 5 sf::Text objects that are used, 4 for the previous commands/error messages and 1 for the current command line. When the Return key is pressed the 4th sf::Text changes its current string to the 3rd, the 3rd to the 2nd, the 2nd to the 1st and the 1st to the current command string then the current command string gets cleared and ready for input again. That way there is room for 4 'history' of commands and/or errors. Not the greatest but it was the best I could come up with. Of course the amount of history could be changed via adding more sf::Text objects.
So in the end this is how I render the console to the screen
sf::RectangleShape rectangle;
rectangle.setSize(sf::Vector2f(App->getSize().x, App->getSize().y / 3));
rectangle.setPosition(0, 0);
rectangle.setFillColor(sf::Color::black);
App-