Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/shell/shell_input.h @ 8656

Last change on this file since 8656 was 7858, checked in by bensch, 18 years ago

orxonox/trunk: fixed auto-repeat

File size: 2.8 KB
Line 
1/*!
2 * @file shell_input.h
3 * @brief Shell Input is an InputLine for the Shell.
4 *
5 * @todo move around in the InputText with the cursor (SDLK_LEFT/SDLK_RIGHT)
6 * @todo blinking curson (can blink with the speed of the RepeatDelay)
7*/
8
9#ifndef _SHELL_INPUT_H
10#define _SHELL_INPUT_H
11
12#include "text.h"
13#include "event_listener.h"
14#include "shell_completion.h"
15
16#include <list>
17
18namespace OrxShell
19{
20  // FORWARD DECLARATION
21  class ShellCompletion;
22
23  //! An InputLine for the Shell
24  /**
25   * The ShellInput has the ability to catch and display user input.
26   * The ShellInput is auto-completed after the user presses [TAB]
27   * The ShellInput is executed (and sent back to the Application) on Pressing [ENTER]
28   * [UP] and [DOWN] move through the history of allready given commands.
29   */
30  class ShellInput : public Text,  public EventListener
31  {
32
33  public:
34    ShellInput();
35    virtual ~ShellInput();
36
37    /** @returns the inputLine */
38    const std::string& getInput() const { return this->inputLine; };
39
40    // InputLine
41    void setInputText(const std::string& text);
42    void addCharacter(char character);
43    void addCharacters(const std::string& characters);
44    void removeCharacters(unsigned int characterCount = 1);
45    void flush();
46
47    void setRepeatDelay(float repeatDelay, float repeatRate);
48
49    bool executeCommand();
50
51    /** sets the count of the History's entries */
52    void setHistoryLength(unsigned int historyLength) { this->historyLength = historyLength; };
53    void historyMoveUp();
54    void historyMoveDown();
55
56    void help(const std::string& className = "", const std::string& function = "");
57
58    virtual void tick(float dt);
59    virtual void process(const Event &event);
60
61  private:
62    // HANDLING TEXT INPUT
63    ShellCompletion                   completion;       //!< The Completion Interface.
64
65    std::string                       inputLine;        //!< the Char-Array of the Buffer
66    float                             repeatRate;       //!< The Repeat-Delay.
67    float                             repeatDelay;      //!< The delay of the first Character of a given Character.
68    float                             delayed;          //!< how much of the delay is remaining.
69    Uint16                            pressedKey;       //!< the pressed key that will be repeated.
70    Uint16                            pressedEvent;     //!< The Event, that lead to the pressing of the Key.
71
72    static std::list<std::string>     history;          //!< The history of given commands.
73    std::list<std::string>::iterator  historyIT;        //!< The locator that tells us, where we are in the history.
74    unsigned int                      historyLength;    //!< The maximum length of the InputHistory.
75    bool                              historyScrolling; //!< true if we are scrolling through the history.
76  };
77
78}
79
80#endif /* _SHELL_INPUT_H */
Note: See TracBrowser for help on using the repository browser.