Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4UItcsh.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27//
28
29#ifndef G4UItcsh_h
30#define G4UItcsh_h 1
31
32#if ! (defined(WIN32) || defined(__MINGW32__))
33
34# include "G4UIcommand.hh"
35# include "G4UIcommandTree.hh"
36# include "G4VUIshell.hh"
37
38# include <termios.h>
39
40# include <vector>
41
42// ====================================================================
43// Description:
44// This class gives tcsh-like shell.
45//
46// If your terminal supports color code, colored strings are available
47// in ListCommand(). For activating color support,
48// e.g.
49// tcsh-> SetLsColor(GREEN, CYAN); // (dir, command) color
50//
51// [key binding]
52// ^A ... move cursor to the top
53// ^B ... backward cursor ([LEFT])
54// ^D ... delete/exit/show matched list
55// ^E ... move cursor to the end
56// ^F ... forward cursor ([RIGHT])
57// ^K ... clear after the cursor
58// ^L ... clear screen (not implemented)
59// ^N ... next command ([DOWN])
60// ^P ... previous command ([UP])
61// TAB... command completion
62// DEL... backspace
63// BS ... backspace
64//
65// [prompt string substitution]
66// %s ... current application status
67// %/ ... current working directory
68// %h ... history# (different from G4 history#)
69//
70// ====================================================================
71
72class G4UItcsh : public G4VUIshell
73{
74 public:
75 G4UItcsh(const G4String& prompt = "%s> ", G4int maxhist = 100);
76 ~G4UItcsh() override;
77
78 void SetLsColor(TermColorIndex dirColor, TermColorIndex cmdColor) override;
79 G4String GetCommandLineString(const char* msg = nullptr) override;
80
81 void ResetTerminal() override;
82
83 protected:
84 void MakePrompt(const char* msg = nullptr) override;
85
86 // Is cursor position at the last of command line ?
87 G4bool IsCursorLast() const;
88
91
92 // insert character
93 void InsertCharacter(char cc);
94
95 // backspace character
96 void BackspaceCharacter();
97
98 // delete character
99 void DeleteCharacter();
100
101 // clear command line
102 void ClearLine();
103
104 // clear after the cursor
105 void ClearAfterCursor();
106
107 // clear screen
108 void ClearScreen();
109
110 // move cursor forward
111 void ForwardCursor();
112
113 // move cursor backward
114 void BackwardCursor();
115
116 // move cursor to the top
117 void MoveCursorTop();
118
119 // move cursor to the end
120 void MoveCursorEnd();
121
122 // next command
123 void NextCommand();
124
125 // previous command
126 void PreviousCommand();
127
128 // list matched commands
129 void ListMatchedCommand();
130
131 // complete command
132 void CompleteCommand();
133
134 // utilities...
135 G4String GetFirstMatchedString(const G4String& str1, const G4String& str2) const;
136
137 void StoreHistory(G4String aCommand);
138
139 // index is global history#
141
142 void SetTermToInputMode();
143 void RestoreTerm();
144
145 G4String commandLine; // command line string;
146 G4int cursorPosition; // cursor position
147 G4String commandLineBuf; // temp. command line;
148 // history functionality (history# is managed in itself)
149 std::vector<G4String> commandHistory;
150 G4int maxHistory; // max# of histories stored
152 G4int relativeHistoryIndex; // local index relative to current history#
153 // (re)set termios
154 termios tios; // terminal mode (prestatus)
155 G4String clearString; // "clear code (^L)"
156};
157
158// ====================================================================
159// inline functions
160// ====================================================================
162{
163 return cursorPosition == G4int(commandLine.length() + 1);
164}
165
167{
168 lsColorFlag = true;
169 directoryColor = dirColor;
170 commandColor = cmdColor;
171}
172
173#endif
174#endif
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
TermColorIndex
Definition G4VUIshell.hh:54
void MoveCursorTop()
Definition G4UItcsh.cc:344
void InsertCharacter(char cc)
Definition G4UItcsh.cc:199
void PreviousCommand()
Definition G4UItcsh.cc:366
G4String GetFirstMatchedString(const G4String &str1, const G4String &str2) const
Definition G4UItcsh.cc:703
void CompleteCommand()
Definition G4UItcsh.cc:445
void NextCommand()
Definition G4UItcsh.cc:385
G4String GetCommandLineString(const char *msg=nullptr) override
Definition G4UItcsh.cc:664
G4String RestoreHistory(G4int index)
Definition G4UItcsh.cc:739
void SetLsColor(TermColorIndex dirColor, TermColorIndex cmdColor) override
Definition G4UItcsh.hh:166
void RestoreTerm()
Definition G4UItcsh.cc:769
void ForwardCursor()
Definition G4UItcsh.cc:324
G4String ReadLine()
Definition G4UItcsh.cc:561
G4int cursorPosition
Definition G4UItcsh.hh:146
void MoveCursorEnd()
Definition G4UItcsh.cc:355
void ResetTerminal() override
Definition G4UItcsh.cc:181
~G4UItcsh() override
Definition G4UItcsh.cc:106
G4int currentHistoryNo
Definition G4UItcsh.hh:151
void DeleteCharacter()
Definition G4UItcsh.cc:253
termios tios
Definition G4UItcsh.hh:154
void SetTermToInputMode()
Definition G4UItcsh.cc:754
void ListMatchedCommand()
Definition G4UItcsh.cc:405
G4String clearString
Definition G4UItcsh.hh:155
G4bool IsCursorLast() const
Definition G4UItcsh.hh:161
G4String commandLine
Definition G4UItcsh.hh:145
void InitializeCommandLine()
Definition G4UItcsh.cc:191
G4String commandLineBuf
Definition G4UItcsh.hh:147
G4UItcsh(const G4String &prompt="%s> ", G4int maxhist=100)
Definition G4UItcsh.cc:67
void MakePrompt(const char *msg=nullptr) override
Definition G4UItcsh.cc:130
std::vector< G4String > commandHistory
Definition G4UItcsh.hh:149
G4int maxHistory
Definition G4UItcsh.hh:150
void ClearLine()
Definition G4UItcsh.cc:274
void BackwardCursor()
Definition G4UItcsh.cc:334
void ClearAfterCursor()
Definition G4UItcsh.cc:293
void ClearScreen()
Definition G4UItcsh.cc:310
void StoreHistory(G4String aCommand)
Definition G4UItcsh.cc:728
void BackspaceCharacter()
Definition G4UItcsh.cc:224
G4int relativeHistoryIndex
Definition G4UItcsh.hh:152
TermColorIndex directoryColor
TermColorIndex commandColor
G4bool lsColorFlag