OpendTect  6.6
cmddriverbasics.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Jaap Glas
8  Date: January 2009
9  RCS: $Id$
10  ________________________________________________________________________
11 
12 -*/
13 
14 #include "uicmddrivermod.h"
15 #include "separstr.h"
16 #include "bufstringset.h"
17 #include "mousecursor.h"
18 #include "uistring.h"
19 
20 class uiMainWin;
21 class CallBacker;
22 class uiObject;
23 class uiAction;
24 class uiParent;
25 class uiBaseObject;
26 class uiMenu;
27 
28 
29 namespace CmdDrive
30 {
31 
32 #define mAddCharToBufStr( bufstr, chr ) \
33 { char str[2]; str[0] = mCast(char,chr); str[1] = '\0'; bufstr += str; }
34 
35 #define mSepStrSize(fms) ( fms.isEmpty() ? 1 : fms.size() )
36 
37 #define mGetAmpFilteredStr( dest, src ) \
38  BufferString dest( src ); \
39  StringProcessor(dest).filterAmpersands();
40 
41 
42 #define mGetEscConvertedFMS( fms, str, removecmdfileescapes ) \
43 \
44  BufferString fms##bufstr( str ); \
45  StringProcessor( fms##bufstr ).addFileMultiStrEscapes(); \
46  if ( removecmdfileescapes ) \
47  StringProcessor( fms##bufstr ).removeCmdFileEscapes(); \
48 \
49  FileMultiString fms( fms##bufstr.buf() );
50 
51 
52 #define mStripOuterBrackets( name, context ) \
53  StringProcessor(name).stripOuterBrackets( \
54  StringProcessor::context##VoidBeginBrackets(), \
55  StringProcessor::context##VoidEndBrackets() )
56 
57 
58 #define mDressString( name, context, cleanup ) \
59 { \
60  if ( cleanup ) \
61  StringProcessor(name).cleanUp(); \
62  while ( mStripOuterBrackets(name, sDress) ) ; \
63  StringProcessor(name).addCmdFileEscapes( \
64  StringProcessor::context##EscSymbols() ); \
65 }
66 
67 #define mDressNameString( name, context ) \
68  mDressString( name, context, true );
69 
70 #define mDressUserInputString( name, context ) \
71  mDressString( name, context, false );
72 
73 
74 #define mIsSymbol(chr) ( !iswalnum(chr) && !iswspace(chr) )
75 
76 
77 #define mGetColorString( color, isvalid, colorstr ) \
78 \
79  FileMultiString colorstr; \
80  colorstr += isvalid ? (int) color.r() : 255; \
81  colorstr += isvalid ? (int) color.g() : 255; \
82  colorstr += isvalid ? (int) color.b() : 255; \
83  colorstr += isvalid ? (int) color.t() : 255; \
84 
85 
86 #define mUnscope( identstr, unscopedstr ) \
87  const char* unscopedstr = *identstr=='@' ? identstr+1 : identstr;
88 
89 
90 mExpClass(uiCmdDriver) StringProcessor // Parsing toolkit
91 {
92 public:
94  : constptr_(bs.buf()), bufstr_(&bs)
95  {}
96 
98  : constptr_(ss.buf()), bufstr_(&ss.rep())
99  {}
100 
101  StringProcessor(const char* str)
102  : constptr_(str), bufstr_(0)
103  {}
104 
105  const char* parseDQuoted(BufferString& unquotedstr) const;
106  int consecutiveDQuoted(const char** remnant=0) const;
107  int nrDQuotes() const;
108 
109  const char* parseBracketed(BufferString& unbracketedstr,
110  char begin='[',char end=']') const;
111 
113  bool removeTokenAppendix(char token);
114 
115  const char* nextAction(BufferString&) const;
116  const char* findAssignment(const char* tokens="=") const;
117 
118  const char* parseIdentifier(BufferString&) const;
119  bool convertToInt(int* =0) const;
120  bool convertToDouble(double* =0) const;
121 
122  char /* missing */ preParseProcedure(FileMultiString& key,
123  FileMultiString& parameters) const;
124 
125  void makeDirSepIndep(int startpos=-1);
126 
127  void addCmdFileEscapes(const char* extraescapesymbols=0);
128  bool isEscapedSymbol(const char*) const;
131 
132  const char* getCharElement(int idx) const;
133  int nrCharElements() const;
134  void appendCharElements(const char* tail);
135 
137  void capitalize(bool yn=true);
138 
141  void cleanUp();
142 
143  char stripOuterBrackets(const char* beginsymbols,
144  const char* endsymbols);
145 
146  const char* buf() const { return constptr_; }
147 
148  static const char* sWinAssertEscSymbols() { return "$*#[]"; }
149  static const char* sWinNameEscSymbols() { return "$*#\""; }
150  static const char* sKeyStrEscSymbols() { return "$*`#\""; }
151  static const char* sMenuPathEscSymbols() { return "$*`#\""; }
152  static const char* sTreePathEscSymbols() { return "$*`#<\""; }
153  static const char* sItemNameEscSymbols() { return "$*#\""; }
154  static const char* sInputStrEscSymbols() { return "$`\""; }
155  static const char* sAllEscSymbols() { return "$*`#[]<\""; }
156 
157  static const char* sMatchVoidBeginBrackets() { return ":`([{<>\"/"; }
158  static const char* sMatchVoidEndBrackets() { return ":')]}><\"\\"; }
159 
160  static const char* sDressVoidBeginBrackets() { return ">/"; }
161  static const char* sDressVoidEndBrackets() { return "<\\"; }
162 
163 protected:
164 
165  const char* constptr_;
167 };
168 
169 
170 mGlobal(uiCmdDriver) const char* windowTitle(const uiMainWin* applwin,
171  const uiMainWin* uimw,
172  int aliasnr=0);
173 mGlobal(uiCmdDriver) bool isCmdDriverWindow(const uiMainWin*);
174 mGlobal(uiCmdDriver) const char* controllerTitle();
175 
176 
177 mExpClass(uiCmdDriver) WindowStack
178 {
179 public:
181 
182  bool moveToTop(const uiMainWin*);
183  bool moveFrameToTop(const uiMainWin*);
184 
185  const uiMainWin* topWin(bool ignorecmddriverwins=false) const;
186  void synchronize();
187 
188 protected:
189 
191 
193 };
194 
195 
197 {
198 public:
199  InteractSpec(bool wait=true)
200  : wait_( wait )
201  , launchpad_( 0 )
202  , cursorshape_( MouseCursor::Forbidden )
203  {}
204 
205  bool wait_;
213 };
214 
215 
221 mExpClass(uiCmdDriver) UIEntity
222 {
223 public:
225 
226  bool isValid() const { return uiobj_ || uiact_; }
227 
228  const uiObject* object() const { return uiobj_; }
229  const uiAction* action() const { return uiact_; }
230 
231  bool visible() const;
232  bool sensitive() const;
233 
234  const char* name() const;
235  const char* toolTip() const;
236 
237  const uiParent* parent() const;
238  const uiMenu* menu() const;
239 
241 
242 protected:
243 
244  const uiObject* uiobj_;
245  const uiAction* uiact_;
246 };
247 
248 
249 }; // namespace CmdDrive
250 
CmdDrive::WindowStack::WindowStack
WindowStack()
Definition: cmddriverbasics.h:180
CmdDrive::UIEntity::parent
const uiParent * parent() const
CmdDrive::StringProcessor::addCmdFileEscapes
void addCmdFileEscapes(const char *extraescapesymbols=0)
CmdDrive::StringProcessor::getCharElement
const char * getCharElement(int idx) const
CmdDrive::isCmdDriverWindow
bool isCmdDriverWindow(const uiMainWin *)
CmdDrive::StringProcessor::findAssignment
const char * findAssignment(const char *tokens="=") const
uiMainWin
User interface main window.
Definition: uimainwin.h:35
CmdDrive::StringProcessor::sWinNameEscSymbols
static const char * sWinNameEscSymbols()
Definition: cmddriverbasics.h:149
CmdDrive::StringProcessor
Definition: cmddriverbasics.h:91
uistring.h
CmdDrive::StringProcessor::stripOuterBrackets
char stripOuterBrackets(const char *beginsymbols, const char *endsymbols)
CmdDrive::UIEntity::childList
const ObjectSet< uiBaseObject > * childList() const
mGlobal
#define mGlobal(module)
Definition: commondefs.h:180
ObjectSet< const uiMainWin >
CmdDrive::StringProcessor::capitalize
void capitalize(bool yn=true)
CmdDrive::controllerTitle
const char * controllerTitle()
CmdDrive::WindowStack::moveToTop
bool moveToTop(const uiMainWin *)
CmdDrive::StringProcessor::parseIdentifier
const char * parseIdentifier(BufferString &) const
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
CmdDrive::StringProcessor::sKeyStrEscSymbols
static const char * sKeyStrEscSymbols()
Definition: cmddriverbasics.h:150
CmdDrive::UIEntity::uiact_
const uiAction * uiact_
Definition: cmddriverbasics.h:245
CmdDrive::StringProcessor::StringProcessor
StringProcessor(const char *str)
Definition: cmddriverbasics.h:101
CmdDrive::StringProcessor::consecutiveDQuoted
int consecutiveDQuoted(const char **remnant=0) const
FileMultiString
SeparString with backquotes as separators, use in most ascii files.
Definition: separstr.h:223
CmdDrive::StringProcessor::convertToInt
bool convertToInt(int *=0) const
Gason::begin
JsonIterator begin(JsonValue o)
Definition: gason.h:114
CmdDrive::StringProcessor::sItemNameEscSymbols
static const char * sItemNameEscSymbols()
Definition: cmddriverbasics.h:153
CmdDrive::StringProcessor::removeCmdFileEscapes
void removeCmdFileEscapes()
CmdDrive::StringProcessor::appendCharElements
void appendCharElements(const char *tail)
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
CmdDrive::InteractSpec::wait_
bool wait_
Definition: cmddriverbasics.h:205
CmdDrive::StringProcessor::nextAction
const char * nextAction(BufferString &) const
mousecursor.h
CmdDrive::StringProcessor::isEscapedSymbol
bool isEscapedSymbol(const char *) const
CmdDrive::StringProcessor::preParseProcedure
char preParseProcedure(FileMultiString &key, FileMultiString &parameters) const
CmdDrive::StringProcessor::sMenuPathEscSymbols
static const char * sMenuPathEscSymbols()
Definition: cmddriverbasics.h:151
CmdDrive::UIEntity::isValid
bool isValid() const
Definition: cmddriverbasics.h:226
CmdDrive::StringProcessor::bufstr_
BufferString * bufstr_
Definition: cmddriverbasics.h:166
CmdDrive::StringProcessor::sInputStrEscSymbols
static const char * sInputStrEscSymbols()
Definition: cmddriverbasics.h:154
CmdDrive::StringProcessor::StringProcessor
StringProcessor(BufferString &bs)
Definition: cmddriverbasics.h:93
CmdDrive::StringProcessor::sDressVoidBeginBrackets
static const char * sDressVoidBeginBrackets()
Definition: cmddriverbasics.h:160
CmdDrive::UIEntity
Convenience class UIEntity offers access to shared functionality of uiAction and uiObject,...
Definition: cmddriverbasics.h:222
CmdDrive::UIEntity::action
const uiAction * action() const
Definition: cmddriverbasics.h:229
CmdDrive::InteractSpec::InteractSpec
InteractSpec(bool wait=true)
Definition: cmddriverbasics.h:199
CmdDrive::InteractSpec::cursorshape_
MouseCursor::Shape cursorshape_
Definition: cmddriverbasics.h:207
CmdDrive::WindowStack
Definition: cmddriverbasics.h:178
CmdDrive::InteractSpec::launchpad_
const uiMainWin * launchpad_
Definition: cmddriverbasics.h:206
SeparString
Definition: separstr.h:136
CmdDrive::StringProcessor::removeTokenAppendix
bool removeTokenAppendix(char token)
CmdDrive::InteractSpec
Definition: cmddriverbasics.h:197
CmdDrive::StringProcessor::cleanUp
void cleanUp()
Gason::end
JsonIterator end(JsonValue)
Definition: gason.h:117
CmdDrive::StringProcessor::sMatchVoidBeginBrackets
static const char * sMatchVoidBeginBrackets()
Definition: cmddriverbasics.h:157
CmdDrive::StringProcessor::filterAmpersands
void filterAmpersands()
CmdDrive::UIEntity::menu
const uiMenu * menu() const
CmdDrive::StringProcessor::removeTrailingDots
void removeTrailingDots()
CmdDrive::UIEntity::uiobj_
const uiObject * uiobj_
Definition: cmddriverbasics.h:244
CmdDrive::StringProcessor::buf
const char * buf() const
Definition: cmddriverbasics.h:146
CmdDrive::StringProcessor::sDressVoidEndBrackets
static const char * sDressVoidEndBrackets()
Definition: cmddriverbasics.h:161
CmdDrive::WindowStack::moveFrameToTop
bool moveFrameToTop(const uiMainWin *)
CmdDrive::WindowStack::synchronize
void synchronize()
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
CmdDrive::StringProcessor::removeNumAppendix
int removeNumAppendix()
CmdDrive::UIEntity::UIEntity
UIEntity(const CallBacker *)
CmdDrive::StringProcessor::nrDQuotes
int nrDQuotes() const
CmdDrive::StringProcessor::nrCharElements
int nrCharElements() const
CmdDrive::UIEntity::sensitive
bool sensitive() const
bufstringset.h
CmdDrive::UIEntity::visible
bool visible() const
uiObject
The base class for most UI elements.
Definition: uiobj.h:38
CmdDrive::StringProcessor::parseBracketed
const char * parseBracketed(BufferString &unbracketedstr, char begin='[', char end=']') const
CmdDrive::StringProcessor::sWinAssertEscSymbols
static const char * sWinAssertEscSymbols()
Definition: cmddriverbasics.h:148
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
CmdDrive
Command Drive
Definition: canvascommands.h:22
CmdDrive::InteractSpec::okbuttext_
uiString okbuttext_
Definition: cmddriverbasics.h:209
CmdDrive::InteractSpec::resumetext_
uiString resumetext_
Definition: cmddriverbasics.h:212
CmdDrive::WindowStack::winstack_
ObjectSet< const uiMainWin > winstack_
Definition: cmddriverbasics.h:192
CmdDrive::StringProcessor::parseDQuoted
const char * parseDQuoted(BufferString &unquotedstr) const
CmdDrive::UIEntity::object
const uiObject * object() const
Definition: cmddriverbasics.h:228
MouseCursor
Definition of a mouse cursor, can be either a predefined shape (from the enum, or a file....
Definition: mousecursor.h:26
CmdDrive::StringProcessor::makeDirSepIndep
void makeDirSepIndep(int startpos=-1)
CmdDrive::StringProcessor::removeExtraSpace
void removeExtraSpace()
CmdDrive::StringProcessor::sTreePathEscSymbols
static const char * sTreePathEscSymbols()
Definition: cmddriverbasics.h:152
CmdDrive::windowTitle
const char * windowTitle(const uiMainWin *applwin, const uiMainWin *uimw, int aliasnr=0)
uiMenu
Definition: uimenu.h:65
CmdDrive::StringProcessor::addFileMultiStrEscapes
void addFileMultiStrEscapes()
uiParent
Definition: uiparent.h:26
CmdDrive::StringProcessor::constptr_
const char * constptr_
Definition: cmddriverbasics.h:165
CmdDrive::UIEntity::toolTip
const char * toolTip() const
CmdDrive::WindowStack::topWin
const uiMainWin * topWin(bool ignorecmddriverwins=false) const
CmdDrive::WindowStack::moveToTopWithoutSync
bool moveToTopWithoutSync(const uiMainWin *)
CmdDrive::StringProcessor::sAllEscSymbols
static const char * sAllEscSymbols()
Definition: cmddriverbasics.h:155
CmdDrive::UIEntity::name
const char * name() const
CmdDrive::StringProcessor::sMatchVoidEndBrackets
static const char * sMatchVoidEndBrackets()
Definition: cmddriverbasics.h:158
CmdDrive::StringProcessor::StringProcessor
StringProcessor(SeparString &ss)
Definition: cmddriverbasics.h:97
CmdDrive::InteractSpec::infotext_
uiString infotext_
Definition: cmddriverbasics.h:211
CmdDrive::InteractSpec::dlgtitle_
uiString dlgtitle_
Definition: cmddriverbasics.h:208
MouseCursor::Shape
Shape
Definition: mousecursor.h:56
CmdDrive::InteractSpec::cancelbuttext_
uiString cancelbuttext_
Definition: cmddriverbasics.h:210
CmdDrive::StringProcessor::convertToDouble
bool convertToDouble(double *=0) const
separstr.h

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2021