Changeset 7287 for code/trunk/src/libraries/core/command/IOConsole.h
- Timestamp:
- Aug 31, 2010, 11:13:46 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk/src/libraries/core/command/IOConsole.h
r7284 r7287 21 21 * 22 22 * Author: 23 * Oliver Scheuss24 23 * Reto Grieder 25 24 * Co-authors: … … 28 27 */ 29 28 30 #ifndef _IOConsole_H__ 31 #define _IOConsole_H__ 29 #include "OrxonoxConfig.h" 32 30 33 #include "core/CorePrereqs.h" 34 35 #include <sstream> 36 #include <string> 37 #include <vector> 38 #include "util/Singleton.h" 39 #include "Shell.h" 40 41 #ifdef ORXONOX_PLATFORM_UNIX 42 struct termios; 31 #if defined(ORXONOX_PLATFORM_UNIX) 32 #include "IOConsolePOSIX.h" 43 33 #elif defined(ORXONOX_PLATFORM_WINDOWS) 44 #define WIN32_LEAN_AND_MEAN 45 #ifndef NOMINMAX 46 #define NOMINMAX 34 #include "IOConsoleWindows.h" 47 35 #endif 48 #include <windows.h>49 #endif50 51 namespace orxonox52 {53 class _CoreExport IOConsole : public Singleton<IOConsole>, public ShellListener54 {55 friend class Singleton<IOConsole>;56 57 public:58 IOConsole();59 ~IOConsole();60 61 void preUpdate(const Clock& time);62 63 private:64 void setTerminalMode();65 void getTerminalSize();66 void printStatusLines();67 static int extractLogLevel(std::string* text);68 69 // Methods from ShellListener70 void linesChanged();71 void onlyLastLineChanged();72 void lineAdded();73 void inputChanged();74 void cursorChanged();75 void executed();76 void exit();77 78 Shell* shell_;79 InputBuffer* buffer_;80 std::ostream cout_;81 std::ostringstream origCout_;82 int terminalWidth_;83 int terminalHeight_;84 int lastTerminalWidth_;85 int lastTerminalHeight_;86 const std::string promptString_;87 88 #ifdef ORXONOX_PLATFORM_UNIX89 bool willPrintStatusLines();90 void printInputLine();91 void printOutputLine(const std::string& line, Shell::LineType type);92 static void resetTerminalMode();93 94 bool bPrintStatusLine_;95 bool bStatusPrinted_;96 std::vector<int> statusLineWidths_;97 int statusLineMaxWidth_;98 static const int minOutputLines_ = 3;99 termios* originalTerminalSettings_;100 101 #elif defined(ORXONOX_PLATFORM_WINDOWS)102 void resetTerminalMode();103 void moveCursor(int dx, int dy);104 void writeText(const std::string& text, const COORD& pos, WORD attributes = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);105 void createNewOutputLines(int lines);106 void printOutputLine(const std::string& line, Shell::LineType type, const COORD& pos);107 108 static inline COORD makeCOORD(int x, int y)109 {110 COORD val = {x, y};111 return val;112 }113 114 DWORD originalTerminalSettings_;115 HANDLE stdInHandle_;116 HANDLE stdOutHandle_;117 int inputLineRow_;118 int inputLineHeight_;119 const int statusLines_;120 int lastOutputLineHeight_;121 uint64_t lastRefreshTime_;122 #endif123 124 static IOConsole* singletonPtr_s;125 };126 }127 128 #endif /* _IOConsole_H__ */
Note: See TracChangeset
for help on using the changeset viewer.