source: trunk/FACT++/src/ReadlineColor.cc @ 10304

Last change on this file since 10304 was 10304, checked in by tbretz, 10 years ago
Added namespace ReadlineColor to provide some colored output for default messages and commands.
File size: 6.5 KB
Line 
1// **************************************************************************
2/** @namespace ReadlineColor
3
4@brief A fewer helper functions to apply color attributes and redirect the output
5
6 */
7// **************************************************************************
8#include "ReadlineColor.h"
9
10#include "Time.h"
11#include "Readline.h"
12#include "WindowLog.h"
13
14using namespace std;
15
16// --------------------------------------------------------------------------
17//
18//! @returns
19//!    always true
20//
21bool ReadlineColor::PrintBootMsg(ostream &out, const string &name)
22{
23    out << endl;
24    out << kBlue << kBold << kUnderline << " Master Control Program " << endl;
25    out << endl;
26    out << kBlue << " ENCOM MX 16-923 USER # 0" << int(Time().Mjd()) << Time::fmt(" %H:%M:%S") << Time() << Time::reset << " INFORMATION" << endl;
27    out << endl;
28    out << kBlue << " TELESCOPE CONTROL PROGRAM: " << name << endl;
29    out << kBlue << " ANNEXED BY FACT COLLABORATION" << endl;
30    out << kBlue << " ORIGINAL PROGRAM WRITTEN BY T.BRETZ" << endl;
31    out << kBlue << " THIS INFOMATION " << kUnderline << "PRIORITY ONE" << endl;
32    out << kBlue << " END OF LINE" << endl << endl;
33    out << endl;
34
35    return true;
36}
37
38// --------------------------------------------------------------------------
39//
40//! @returns
41//!    always true
42//
43bool ReadlineColor::PrintCommands(ostream &out)
44{
45    out << endl;
46    out << " " << kUnderline << " Commands:" << endl;
47    out << "   No application specific commands defined." << endl;
48    out << endl;
49
50    return true;
51}
52
53// --------------------------------------------------------------------------
54//
55//! Displays the available ncurses attributes, like color.
56//!
57//! @returns
58//!    always true
59//
60bool ReadlineColor::PrintAttributes(ostream &out)
61{
62    out << endl;
63    out << " Attributes:" << endl;
64    out << "   " << kReset      << "kReset" << endl;
65    out << "   " << kNormal     << "kNormal" << endl;
66    out << "   " << kHighlight  << "kHighlight" << endl;
67    out << "   " << kReverse    << "kReverse" << endl;
68    out << "   " << kUnderline  << "kUnderline" << endl;
69    out << "   " << kBlink      << "kBlink" << endl;
70    out << "   " << kDim        << "kDim" << endl;
71    out << "   " << kBold       << "kBold" << endl;
72    out << "   " << kProtect    << "kProtect" << endl;
73    out << "   " << kInvisible  << "kInvisible" << endl;
74    out << "   " << kAltCharset << "kAltCharset" << kReset << "  (kAltCharset)" << endl;
75    out << endl;
76    out << " Colors:" << endl;
77    out << "   " << kDefault << "kDefault  " << kBold << "+  kBold" << endl;
78    out << "   " << kRed     << "kRed      " << kBold << "+  kBold" << endl;
79    out << "   " << kGreen   << "kGreen    " << kBold << "+  kBold" << endl;
80    out << "   " << kYellow  << "kYellow   " << kBold << "+  kBold" << endl;
81    out << "   " << kBlue    << "kBlue     " << kBold << "+  kBold" << endl;
82    out << "   " << kMagenta << "kMagenta  " << kBold << "+  kBold" << endl;
83    out << "   " << kCyan    << "kCyan     " << kBold << "+  kBold" << endl;
84    out << "   " << kWhite   << "kWhite    " << kBold << "+  kBold" << endl;
85    out << "   " << endl;
86
87    return true;
88}
89
90// --------------------------------------------------------------------------
91//
92//! Displays the keybindings available due to the Shell class
93//!
94//! @returns
95//!    always true
96//!
97//! @todo
98//!    Update output
99//
100bool ReadlineColor::PrintKeyBindings(ostream &out)
101{
102    out << endl;
103    out << " " << kUnderline << "Key bindings:" << endl;
104    out << kBold << "   Page-up         " << kReset << "Search backward in history" << endl;
105    out << kBold << "   Page-dn         " << kReset << "Search forward in history" << endl;
106    out << kBold << "   Ctrl-left       " << kReset << "One word backward" << endl;
107    out << kBold << "   Ctrl-right      " << kReset << "One word forward" << endl;
108    out << kBold << "   Ctrl-y          " << kReset << "Delete line" << endl;
109    out << kBold << "   Alt-end/Ctrl-k  " << kReset << "Delete until the end of the line" << endl;
110    out << kBold << "   F1              " << kReset << "Toggle visibility of upper panel" << endl;
111    out << endl;
112    out << " Default key-bindings are identical with your bash." << endl;
113    out << endl;
114
115    return true;
116}
117
118// --------------------------------------------------------------------------
119//
120//! Print a general help text which also includes the commands pre-defined
121//! by the Shell class.
122//!
123//! @returns
124//!    always true
125//!
126//! @todo
127//!    Get it up-to-date
128//
129bool ReadlineColor::PrintGeneralHelp(ostream &out, const string &name)
130{
131    out << endl;
132    out << " " << kUnderline << "General help:" << endl;
133    out << kBold << "   h,help       " << kReset << "Print this help message" << endl;
134    out << kBold << "   clear        " << kReset << "Clear history buffer" << endl;
135    out << kBold << "   lh,history   " << kReset << "Dump the history buffer to the screen" << endl;
136    out << kBold << "   v,variable   " << kReset << "Dump readline variables" << endl;
137    out << kBold << "   f,function   " << kReset << "Dump readline functions" << endl;
138    out << kBold << "   m,funmap     " << kReset << "Dump readline funmap" << endl;
139    out << kBold << "   c,command    " << kReset << "Dump available commands" << endl;
140    out << kBold << "   k,keylist    " << kReset << "Dump key bindings" << endl;
141    out << kBold << "   a,attrs      " << kReset << "Dump available stream attributes" << endl;
142    out << kBold << "   .q,quit      " << kReset << "Quit" << endl;
143    out << endl;
144    out << " The command history is automatically loaded and saves to" << endl;
145    out << " and from " << name << endl;
146    out << endl;
147
148    return true;
149}
150
151
152bool ReadlineColor::Process(ostream &out, const string &str)
153{
154    // ----------- Readline -----------
155
156    if (str=="lh" || str=="history")
157    {
158        out << endl << kBold << "History:" << endl;
159        return Readline::RedirectionWrapper(out, Readline::DumpHistory);
160    }
161
162    if (str=="v" || str=="variable")
163    {
164        out << endl << kBold << "Variables:" << endl;
165        return Readline::RedirectionWrapper(out, Readline::DumpVariables);
166    }
167
168    if (str=="f" || str=="function")
169    {
170        out << endl << kBold << "Functions:" << endl;
171        return Readline::RedirectionWrapper(out, Readline::DumpFunctions);
172    }
173
174    if (str=="m" || str=="funmap")
175    {
176        out << endl << kBold << "Funmap:" << endl;
177        return Readline::RedirectionWrapper(out, Readline::DumpFunmap);
178    }
179
180    // ------------ ReadlineWindow -------------
181
182    if (str=="a" || str=="attrs")
183        return PrintAttributes(out);
184
185    return false;
186}
Note: See TracBrowser for help on using the repository browser.