Geant4 9.6.0
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// $Id$
28//
29
30#ifndef G4UItcsh_h
31#define G4UItcsh_h 1
32
33#ifndef WIN32
34
35#include <termios.h>
36#include <vector>
37#include "G4VUIshell.hh"
38#include "G4UIcommand.hh"
39#include "G4UIcommandTree.hh"
40
41// ====================================================================
42// Description:
43// This class gives tcsh-like shell.
44//
45// If your terminal supports color code, colored strings are available
46// in ListCommand(). For activating color support,
47// e.g.
48// tcsh-> SetLsColor(GREEN, CYAN); // (dir, command) color
49//
50// [key binding]
51// ^A ... move cursor to the top
52// ^B ... backward cursor ([LEFT])
53// ^D ... delete/exit/show matched list
54// ^E ... move cursor to the end
55// ^F ... forward cursor ([RIGHT])
56// ^K ... clear after the cursor
57// ^L ... clear screen (not implemented)
58// ^N ... next command ([DOWN])
59// ^P ... previous command ([UP])
60// TAB... command completion
61// DEL... backspace
62// BS ... backspace
63//
64// [prompt string substitution]
65// %s ... current application status
66// %/ ... current working directory
67// %h ... history# (different from G4 history#)
68//
69// ====================================================================
70
71class G4UItcsh : public G4VUIshell {
72protected:
73 virtual void MakePrompt(const char* msg=0);
74
75 G4String commandLine; // command line string;
76 G4int cursorPosition; // cursor position
77 G4String commandLineBuf; // temp. command line;
78 G4bool IsCursorLast() const;
79 // Is cursor position at the last of command line ?
80
83 void InsertCharacter(char cc); // insert character
84 void BackspaceCharacter(); // backspace character
85 void DeleteCharacter(); // delete character
86 void ClearLine(); // clear command line
87 void ClearAfterCursor(); // clear after the cursor
88 void ClearScreen(); // clear screen
89
90 void ForwardCursor(); // move cursor forward
91 void BackwardCursor(); // move cursor backward
92 void MoveCursorTop(); // move cursor to the top
93 void MoveCursorEnd(); // move cursor to the end
94
95 void NextCommand(); // next command
96 void PreviousCommand(); // previous command
97
98 void ListMatchedCommand(); // list matched commands
99 void CompleteCommand(); // complete command
100
101 // utilities...
103 const G4String& str2) const;
104
105 // history functionality (history# is managed in itself)
106 std::vector<G4String> commandHistory;
107 G4int maxHistory; // max# of histories stored
109 G4int relativeHistoryIndex; // local index relative to current history#
110
111 void StoreHistory(G4String aCommand);
112 G4String RestoreHistory(G4int index); // index is global history#
113
114
115 // (re)set termios
116 termios tios; // terminal mode (prestatus)
117 G4String clearString; // "clear code (^L)"
118 void SetTermToInputMode();
119 void RestoreTerm();
120
121public:
122 G4UItcsh(const G4String& prompt="%s> ", G4int maxhist=100);
123 ~G4UItcsh();
124
125 void SetLsColor(TermColorIndex dirColor, TermColorIndex cmdColor);
126 virtual G4String GetCommandLineString(const char* msg=0);
127
128 virtual void ResetTerminal();
129};
130
131// ====================================================================
132// inline functions
133// ====================================================================
135{
136 if(cursorPosition == G4int(commandLine.length()+1)) return TRUE;
137 else return FALSE;
138}
139
141 TermColorIndex cmdColor)
142{
144 directoryColor= dirColor;
145 commandColor= cmdColor;
146}
147
148#endif
149#endif
150
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
TermColorIndex
Definition: G4VUIshell.hh:54
void MoveCursorTop()
Definition: G4UItcsh.cc:336
void InsertCharacter(char cc)
Definition: G4UItcsh.cc:196
virtual void ResetTerminal()
Definition: G4UItcsh.cc:177
void PreviousCommand()
Definition: G4UItcsh.cc:358
virtual void MakePrompt(const char *msg=0)
Definition: G4UItcsh.cc:123
G4String GetFirstMatchedString(const G4String &str1, const G4String &str2) const
Definition: G4UItcsh.cc:688
void CompleteCommand()
Definition: G4UItcsh.cc:439
void NextCommand()
Definition: G4UItcsh.cc:378
G4String RestoreHistory(G4int index)
Definition: G4UItcsh.cc:724
void RestoreTerm()
Definition: G4UItcsh.cc:755
void ForwardCursor()
Definition: G4UItcsh.cc:316
G4String ReadLine()
Definition: G4UItcsh.cc:548
G4int cursorPosition
Definition: G4UItcsh.hh:76
void MoveCursorEnd()
Definition: G4UItcsh.cc:347
G4int currentHistoryNo
Definition: G4UItcsh.hh:108
void DeleteCharacter()
Definition: G4UItcsh.cc:248
termios tios
Definition: G4UItcsh.hh:116
void SetTermToInputMode()
Definition: G4UItcsh.cc:739
void ListMatchedCommand()
Definition: G4UItcsh.cc:398
G4String clearString
Definition: G4UItcsh.hh:117
G4bool IsCursorLast() const
Definition: G4UItcsh.hh:134
G4String commandLine
Definition: G4UItcsh.hh:75
void InitializeCommandLine()
Definition: G4UItcsh.cc:188
G4String commandLineBuf
Definition: G4UItcsh.hh:77
virtual G4String GetCommandLineString(const char *msg=0)
Definition: G4UItcsh.cc:648
std::vector< G4String > commandHistory
Definition: G4UItcsh.hh:106
G4int maxHistory
Definition: G4UItcsh.hh:107
void SetLsColor(TermColorIndex dirColor, TermColorIndex cmdColor)
Definition: G4UItcsh.hh:140
void ClearLine()
Definition: G4UItcsh.cc:269
void BackwardCursor()
Definition: G4UItcsh.cc:326
void ClearAfterCursor()
Definition: G4UItcsh.cc:285
void ClearScreen()
Definition: G4UItcsh.cc:302
void StoreHistory(G4String aCommand)
Definition: G4UItcsh.cc:713
void BackspaceCharacter()
Definition: G4UItcsh.cc:220
G4int relativeHistoryIndex
Definition: G4UItcsh.hh:109
~G4UItcsh()
Definition: G4UItcsh.cc:99
TermColorIndex directoryColor
Definition: G4VUIshell.hh:69
TermColorIndex commandColor
Definition: G4VUIshell.hh:70
G4bool lsColorFlag
Definition: G4VUIshell.hh:68
#define TRUE
Definition: globals.hh:55
#define FALSE
Definition: globals.hh:52