OpendTect  6.3
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  ________________________________________________________________________
10 
11 -*/
12 
13 #include "uicmddrivermod.h"
14 #include "separstr.h"
15 #include "bufstringset.h"
16 #include "mousecursor.h"
17 #include "uistring.h"
18 
19 class uiMainWin;
20 class CallBacker;
21 class uiObject;
22 class uiAction;
23 class uiParent;
24 class uiBaseObject;
25 class uiMenu;
26 
27 
28 namespace CmdDrive
29 {
30 
31 #define mAddCharToBufStr( bufstr, chr ) \
32 { char str[2]; str[0] = mCast(char,chr); str[1] = '\0'; bufstr += str; }
33 
34 #define mSepStrSize(fms) ( fms.isEmpty() ? 1 : fms.size() )
35 
36 #define mGetAmpFilteredStr( dest, src ) \
37  BufferString dest( src ); \
38  StringProcessor(dest).filterAmpersands();
39 
40 
41 #define mGetEscConvertedFMS( fms, str, removecmdfileescapes ) \
42 \
43  BufferString fms##bufstr( str ); \
44  StringProcessor( fms##bufstr ).addFileMultiStrEscapes(); \
45  if ( removecmdfileescapes ) \
46  StringProcessor( fms##bufstr ).removeCmdFileEscapes(); \
47 \
48  FileMultiString fms( fms##bufstr.buf() );
49 
50 
51 #define mStripOuterBrackets( name, context ) \
52  StringProcessor(name).stripOuterBrackets( \
53  StringProcessor::context##VoidBeginBrackets(), \
54  StringProcessor::context##VoidEndBrackets() )
55 
56 
57 #define mDressString( name, context, cleanup ) \
58 { \
59  if ( cleanup ) \
60  StringProcessor(name).cleanUp(); \
61  while ( mStripOuterBrackets(name, sDress) ) ; \
62  StringProcessor(name).addCmdFileEscapes( \
63  StringProcessor::context##EscSymbols() ); \
64 }
65 
66 #define mDressNameString( name, context ) \
67  mDressString( name, context, true );
68 
69 #define mDressUserInputString( name, context ) \
70  mDressString( name, context, false );
71 
72 
73 #define mIsSymbol(chr) ( !iswalnum(chr) && !iswspace(chr) )
74 
75 
76 #define mGetColorString( color, isvalid, colorstr ) \
77 \
78  FileMultiString colorstr; \
79  colorstr += isvalid ? (int) color.r() : 255; \
80  colorstr += isvalid ? (int) color.g() : 255; \
81  colorstr += isvalid ? (int) color.b() : 255; \
82  colorstr += isvalid ? (int) color.t() : 255; \
83 
84 
85 #define mUnscope( identstr, unscopedstr ) \
86  const char* unscopedstr = *identstr=='@' ? identstr+1 : identstr;
87 
88 
89 mExpClass(uiCmdDriver) StringProcessor // Parsing toolkit
90 {
91 public:
93  : constptr_(bs.buf()), bufstr_(&bs)
94  {}
95 
97  : constptr_(ss.buf()), bufstr_(&ss.rep())
98  {}
99 
100  StringProcessor(const char* str)
101  : constptr_(str), bufstr_(0)
102  {}
103 
104  const char* parseDQuoted(BufferString& unquotedstr) const;
105  int consecutiveDQuoted(const char** remnant=0) const;
106  int nrDQuotes() const;
107 
108  const char* parseBracketed(BufferString& unbracketedstr,
109  char begin='[',char end=']') const;
110 
111  int removeNumAppendix();
112  bool removeTokenAppendix(char token);
113 
114  const char* nextAction(BufferString&) const;
115  const char* findAssignment(const char* tokens="=") const;
116 
117  const char* parseIdentifier(BufferString&) const;
118  bool convertToInt(int* =0) const;
119  bool convertToDouble(double* =0) const;
120 
121  char /* missing */ preParseProcedure(FileMultiString& key,
122  FileMultiString& parameters) const;
123 
124  void makeDirSepIndep(int startpos=-1);
125 
126  void addCmdFileEscapes(const char* extraescapesymbols=0);
127  bool isEscapedSymbol(const char*) const;
128  void removeCmdFileEscapes();
129  void addFileMultiStrEscapes();
130 
131  const char* getCharElement(int idx) const;
132  int nrCharElements() const;
133  void appendCharElements(const char* tail);
134 
135  void filterAmpersands();
136  void capitalize(bool yn=true);
137 
138  void removeExtraSpace();
139  void removeTrailingDots();
140  void cleanUp();
141 
142  char stripOuterBrackets(const char* beginsymbols,
143  const char* endsymbols);
144 
145  const char* buf() const { return constptr_; }
146 
147  static const char* sWinAssertEscSymbols() { return "$*#[]"; }
148  static const char* sWinNameEscSymbols() { return "$*#\""; }
149  static const char* sKeyStrEscSymbols() { return "$*`#\""; }
150  static const char* sMenuPathEscSymbols() { return "$*`#\""; }
151  static const char* sTreePathEscSymbols() { return "$*`#<\""; }
152  static const char* sItemNameEscSymbols() { return "$*#\""; }
153  static const char* sInputStrEscSymbols() { return "$`\""; }
154  static const char* sAllEscSymbols() { return "$*`#[]<\""; }
155 
156  static const char* sMatchVoidBeginBrackets() { return ":`([{<>\"/"; }
157  static const char* sMatchVoidEndBrackets() { return ":')]}><\"\\"; }
158 
159  static const char* sDressVoidBeginBrackets() { return ">/"; }
160  static const char* sDressVoidEndBrackets() { return "<\\"; }
161 
162 protected:
163 
164  const char* constptr_;
166 };
167 
168 
169 mGlobal(uiCmdDriver) const char* windowTitle(const uiMainWin* applwin,
170  const uiMainWin* uimw,
171  int aliasnr=0);
172 mGlobal(uiCmdDriver) bool isCmdDriverWindow(const uiMainWin*);
173 mGlobal(uiCmdDriver) const char* controllerTitle();
174 mGlobal(uiCmdDriver) const uiString controllerUiTitle();
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 
190  bool moveToTopWithoutSync(const uiMainWin*);
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:
224  UIEntity(const CallBacker*);
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 
240  const ObjectSet<uiBaseObject>* childList() const;
241 
242 protected:
243 
244  const uiObject* uiobj_;
245  const uiAction* uiact_;
246 };
247 
248 
249 }; // namespace CmdDrive
bool wait_
Definition: cmddriverbasics.h:205
uiString infotext_
Definition: cmddriverbasics.h:211
#define mExpClass(module)
Definition: commondefs.h:157
User interface main window.
Definition: uimainwin.h:34
uiString cancelbuttext_
Definition: cmddriverbasics.h:210
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
bool isCmdDriverWindow(const uiMainWin *)
Definition of a mouse cursor, can be either a predefined shape (from the enum, or a file...
Definition: mousecursor.h:24
uiString dlgtitle_
Definition: cmddriverbasics.h:208
StringProcessor(SeparString &ss)
Definition: cmddriverbasics.h:96
Command Drive
Definition: canvascommands.h:20
Shape
Definition: mousecursor.h:55
const char * constptr_
Definition: cmddriverbasics.h:164
#define mGlobal(module)
Definition: commondefs.h:160
InteractSpec(bool wait=true)
Definition: cmddriverbasics.h:199
static const char * sDressVoidEndBrackets()
Definition: cmddriverbasics.h:160
const char * controllerTitle()
StringProcessor(const char *str)
Definition: cmddriverbasics.h:100
uiString okbuttext_
Definition: cmddriverbasics.h:209
const char * buf() const
Definition: cmddriverbasics.h:145
const char * windowTitle(const uiMainWin *applwin, const uiMainWin *uimw, int aliasnr=0)
List encoded in a string.
Definition: separstr.h:32
The base class for most UI elements.
Definition: uiobj.h:35
static const char * sWinNameEscSymbols()
Definition: cmddriverbasics.h:148
Definition: uistring.h:88
Definition: uiparent.h:24
static const char * sMatchVoidBeginBrackets()
Definition: cmddriverbasics.h:156
SeparString with backquotes as separators, use in most ascii files.
Definition: separstr.h:131
static const char * sWinAssertEscSymbols()
Definition: cmddriverbasics.h:147
MouseCursor::Shape cursorshape_
Definition: cmddriverbasics.h:207
const uiMainWin * launchpad_
Definition: cmddriverbasics.h:206
static const char * sInputStrEscSymbols()
Definition: cmddriverbasics.h:153
Definition: cmddriverbasics.h:196
const uiAction * action() const
Definition: cmddriverbasics.h:229
static const char * sItemNameEscSymbols()
Definition: cmddriverbasics.h:152
const uiObject * uiobj_
Definition: cmddriverbasics.h:244
const uiAction * uiact_
Definition: cmddriverbasics.h:245
static const char * sMatchVoidEndBrackets()
Definition: cmddriverbasics.h:157
static const char * sMenuPathEscSymbols()
Definition: cmddriverbasics.h:150
const uiObject * object() const
Definition: cmddriverbasics.h:228
Definition: uimenu.h:64
static const char * sDressVoidBeginBrackets()
Definition: cmddriverbasics.h:159
Convenience class UIEntity offers access to shared functionality of uiAction and uiObject, given their base class CallBacker. Since toolbar buttons are no longer uiToolButtons but uiActions, unspecified UI objects have to be passed as CallBackers.
Definition: cmddriverbasics.h:221
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
BufferString * bufstr_
Definition: cmddriverbasics.h:165
bool isValid() const
Definition: cmddriverbasics.h:226
uiString resumetext_
Definition: cmddriverbasics.h:212
WindowStack()
Definition: cmddriverbasics.h:180
Definition: cmddriverbasics.h:177
static const char * sTreePathEscSymbols()
Definition: cmddriverbasics.h:151
Definition: cmddriverbasics.h:89
StringProcessor(BufferString &bs)
Definition: cmddriverbasics.h:92
static const char * sKeyStrEscSymbols()
Definition: cmddriverbasics.h:149
const uiString controllerUiTitle()
ObjectSet< const uiMainWin > winstack_
Definition: cmddriverbasics.h:192
static const char * sAllEscSymbols()
Definition: cmddriverbasics.h:154

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