/[svn]/linuxsampler/trunk/src/shell/TerminalPrinter.cpp
ViewVC logotype

Contents of /linuxsampler/trunk/src/shell/TerminalPrinter.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2528 - (show annotations) (download)
Mon Mar 3 12:02:40 2014 UTC (10 years ago) by schoenebeck
File size: 1033 byte(s)
* LSCP shell: in case of multiple possibilities or non-terminal symbols,
  show them right to the current command line immediately while typing
  (no double tab required for this feature, as it would be the case in
  other shells)
* LSCP shell: fixed sluggish behavior when doing tab auto complete
* LSCP shell: fixed conflicting behavior between keyboard input and
  LSCP server evaluation result, that caused an inconsistent screen
  output (keybord input is now never printed directly on screen, only
  the result returned from LSCP server)

1 /*
2 * LSCP Shell
3 *
4 * Copyright (c) 2014 Christian Schoenebeck
5 *
6 * This program is part of LinuxSampler and released under the same terms.
7 */
8
9 #include "TerminalPrinter.h"
10 #include <iostream>
11 #include "CCursor.h"
12
13 TerminalPrinter::TerminalPrinter() : m_lines(0) {
14 m_col = CCursor::now().column();
15 m_screenWidth = TerminalCtrl::columns();
16 }
17
18 TerminalPrinter::~TerminalPrinter() {
19 }
20
21 TerminalPrinter& TerminalPrinter::operator<< (std::string s) {
22 for (int i = 0; i < s.size(); ++i)
23 printChar(s[i]);
24 std::cout << std::flush;
25 return *this;
26 }
27
28 void TerminalPrinter::printChar(char c) {
29 std::cout << c << std::flush;
30 switch (c) {
31 case '\r':
32 m_col = 0;
33 break;
34 case '\n':
35 m_col = 0;
36 m_lines++;
37 break;
38 default:
39 m_col++;
40 if (m_col >= m_screenWidth) {
41 m_col = 0;
42 m_lines++;
43 }
44 }
45 }
46
47 int TerminalPrinter::linesAdvanced() const {
48 return m_lines;
49 }

  ViewVC Help
Powered by ViewVC