 |
OpendTect
6.6
|
Go to the documentation of this file.
14 #include "uicmddrivermod.h"
47 virtual const char*
name()
const = 0;
48 virtual bool act(
const char* parstr) = 0;
93 bool tryAction(
const char* identname,
const char* actstr);
121 #define mStartDeclCmdClassNoActNoEntry(mod,cmdkey,parentclass) \
123 mExpClass(mod) cmdkey##Cmd : public parentclass \
124 { mODTextTranslationClass(cmdkey##Cmd); \
126 cmdkey##Cmd(CmdDriver& cmddrv) \
127 : parentclass(cmddrv) \
130 static const char* keyWord() { return #cmdkey; } \
131 virtual const char* name() const { return keyWord(); }
133 #define mStartDeclCmdClassNoAct(mod,cmdkey,parentclass) \
135 mStartDeclCmdClassNoActNoEntry(mod,cmdkey,parentclass) \
137 static Command* createInstance(CmdDriver& cmddrv) \
138 { return new cmdkey##Cmd(cmddrv); } \
139 static void initClass() \
140 { factory().addCreator( createInstance, \
141 createFactoryKey(keyWord()) ); }
143 #define mStartDeclCmdClassNoEntry(mod,cmdkey,parentclass) \
144 mStartDeclCmdClassNoActNoEntry(mod,cmdkey,parentclass) \
145 virtual bool act(const char* parstr);
147 #define mStartDeclCmdClass( mod,cmdkey,parentclass) \
148 mStartDeclCmdClassNoAct(mod,cmdkey,parentclass) \
149 virtual bool act(const char* parstr);
151 #define mEndDeclCmdClass \
156 virtual
bool isOpenQDlgCommand()
const {
return false; }
162 virtual
bool isOpenQDlgCommand()
const {
return false; }
168 virtual
bool isVisualCommand()
const {
return false; }
197 : actmainwin_( const_cast<
uiMainWin&>(uimw) )
200 { actmainwin_.close(); }
210 : actretval_( retval )
227 : startmenu_(mnu), drv_(cmddrv)
231 const uiAction*& curitem,
int* curitmidx=0)
const;
248 #define mParDQuoted( argnm, parstr, parnext, argstr, emptycheck, optional ) \
250 BufferString argstr; \
251 const char* parnext = StringProcessor(parstr).parseDQuoted( argstr ); \
252 if ( (!optional && !parnext) || (emptycheck && parnext && !*argstr) ) \
254 mParseErrStrm << (parnext ? "Empty " : "No ") << argnm \
255 << " specified" << od_endl; \
262 #define mParDisambiguatorRet( argnm, str, selnr, retfld ) \
263 int selnr = StringProcessor(str).removeNumAppendix(); \
264 if ( mIsUdf(selnr) ) \
266 mParseErrStrm << "Non-zero integer required to disambiguate " \
267 << argnm << ": \"" << str << "\"" << od_endl; \
271 #define mParDisambiguator( argnm, str, selnr ) \
272 mParDisambiguatorRet( argnm, str, selnr, false )
275 #define mParStrErrRet( objnm,nrfound,nrgrey,str,selnr,strnm,ambicheck,retfld ) \
277 const int overflow = (!selnr ? 1 : abs(selnr)) - nrfound; \
279 if ( overflow>0 || (!selnr && ambicheck && nrfound>1) ) \
281 if ( nrfound && overflow>0 ) \
282 mWinErrStrm << "Impossible to select " << objnm << ": #" << selnr \
285 BufferString dispstr = str; \
286 dispstr.replace( "\a", "*" ); \
287 mWinErrStrm << "Found " << nrfound \
288 << (greyOutsSkipped() ? " enabled " : " ") << objnm \
289 << "(s) defined by " << strnm << ": \"" << dispstr \
290 << "\"" << od_endl; \
292 if ( greyOutsSkipped() && overflow>0 && overflow<=nrgrey ) \
293 mWinWarnStrm << "Did find " << nrgrey << " disabled " << objnm \
294 << "(s) defined by " << strnm << ": \"" << dispstr \
295 << "\"" << od_endl; \
300 #define mKeepSelection( objsfound, selnr ) \
304 const int selidx = selnr>0 ? selnr-1 : selnr+objsfound.size(); \
305 for ( int idx=objsfound.size()-1; idx>=0; idx-- ) \
307 if ( idx != selidx ) \
308 objsfound.removeSingle( idx ); \
313 #define mParStrPreRet(objnm,objsfound,nrgrey,str,selnr,strnm,ambicheck,retfld) \
315 const int nrfound = objsfound.size(); \
316 mParStrErrRet( objnm,nrfound,nrgrey,str,selnr,strnm,ambicheck,retfld ) \
317 mKeepSelection( objsfound, selnr ); \
320 #define mParStrPre( objnm, objsfound, nrgrey, str, selnr, strnm, ambicheck ) \
321 mParStrPreRet(objnm, objsfound, nrgrey, str, selnr, strnm, ambicheck, false)
324 #define mDisabilityCheck( objnm, nrobjs, disabled ) \
326 if ( goingToChangeUiObj() && (disabled) ) \
328 mWinErrStrm << (nrobjs>1 ? "Some s" : "S") << "elected " \
329 << objnm << (nrobjs>1 ? "s are" : " is") \
330 << " disabled for manipulation" << od_endl; \
335 #define mParKeyStrInit( objnm, parstr, parnext, keys, selnr ) \
337 mParDQuoted(objnm " keystring", parstr, parnext, keys##str, false, false); \
338 mParDisambiguator( objnm " keystring", keys##str, selnr ); \
339 mGetEscConvertedFMS( keys, keys##str, false );
341 #define mParKeyStrPre( objnm, objsfound, nrgrey, keys, selnr ) \
342 mParStrPre( objnm, objsfound, nrgrey, keys.buf(), selnr, "key(s)", true ); \
343 mDisabilityCheck( objnm, 1, !UIEntity(objsfound[0]).sensitive() ); \
344 ObjectFinder wcmobjfinder( *curWin(), isCaseSensitive(), &wildcardMan() ); \
345 wcmobjfinder.selectNodes( objsfound, keys );
347 #define mParOptPathStrInit( objnm, parstr, parnext, path, optional ) \
348 mParDQuoted( objnm " path", parstr, parnext, path##str, false, optional ); \
349 mGetEscConvertedFMS( path, path##str, false );
351 #define mParPathStrInit( objnm, parstr, parnext, path ) \
352 mParOptPathStrInit( objnm, parstr, parnext, path, false )
354 #define mParWinStrInit( objnm, parstr, parnext, winstr, selnr, optional ) \
355 mParDQuoted( objnm " name", parstr, parnext, winstr, true, optional ); \
356 mParDisambiguator( objnm " name", winstr, selnr );
359 #define mParWinStrPre( windowlist, winstr, selnr, errorcheck ) \
361 ObjectSet<uiMainWin> windowlist; \
362 mSearchKey(winstr).getMatchingWindows( applWin(), windowlist ); \
365 mParStrPre( "window", windowlist, 0, winstr, selnr, "string", true ) \
366 mSearchKey(winstr).getMatchingWindows( applWin(), windowlist, \
370 mKeepSelection( windowlist, selnr );
376 #define mParItemSelInit( objnm, parstr, parnext, itemstr, itemnr, optional ) \
378 mParDQuoted( BufferString(objnm," name"), parstr, parnext, itemstr, \
380 mParDisambiguator( BufferString(objnm," name"), itemstr, itemnr ); \
381 if ( parnext == parstr ) \
383 const int num = strtol( parstr, const_cast<char**>(&parnext), 0 ); \
385 if ( num || (optional && parnext==parstr) ) \
387 itemnr = !num ? mUdf(int) : num; \
392 mParseErrStrm << "Name or non-zero integer needed to select " \
393 << objnm << od_endl; \
405 #define mParOnOffInit( parstr, parnext, onoff ) \
407 BufferString onoffword; \
408 const char* parnext = getNextWord( parstr, onoffword.getCStr() ); \
409 mSkipBlanks( parnext ); \
412 if ( onoffword=="1" || mMatchCI(onoffword,"On") ) \
414 if ( onoffword=="0" || mMatchCI(onoffword,"Off") ) \
419 #define mParOnOffPre( objnm, onoff, checked, checkable ) \
421 const bool ischeckable = (checkable); \
422 if ( onoff!=0 && !ischeckable ) \
424 mWinWarnStrm << "This " << objnm << " has no on/off switch" \
429 const bool ischecked = (checked); \
430 if ( onoff == (ischecked ? 1 : -1) ) \
432 mWinErrStrm << "This " << objnm << " was switched " \
433 << (onoff==1 ? "on" : "off") << " already" << od_endl; \
434 setRecoveryStep( CmdDriver::NextCmd ); \
439 #define mParOnOffPost( objnm, onoff, checked ) \
441 const bool ischecked = (checked); \
442 if ( onoff == (ischecked ? -1 : 1) ) \
444 mWinWarnStrm << "Switching " << (onoff==1 ? "on" : "off") \
445 << " this " << objnm << " has been overruled" \
451 #define mParInputStr( objnm, parstr, parnext, inpstr, optional ) \
453 BufferString filepathword; \
454 const char* extraparstr = getNextWord( parstr, filepathword.getCStr() ); \
455 mSkipBlanks( extraparstr ); \
456 if ( !mMatchCI(filepathword,"FilePath") ) \
457 extraparstr = parstr; \
459 mParDQuoted( objnm, extraparstr, parnext, inpbufstr, false, true ); \
460 if ( parnext == extraparstr ) \
462 if ( extraparstr != parstr ) \
464 mParseErrStrm << "FilePath-option expects double-quoted input " \
465 << "string" << od_endl; \
468 const double inpnum = strtod( parstr, const_cast<char**>(&parnext) ); \
469 inpbufstr = toString( inpnum ); \
473 if ( extraparstr != parstr ) \
474 StringProcessor(inpbufstr).makeDirSepIndep(); \
476 StringProcessor(inpbufstr).removeCmdFileEscapes(); \
479 const char* inpstr = parnext==parstr ? 0 : inpbufstr.buf(); \
480 if ( !optional && !inpstr ) \
482 mParseErrStrm << "Double-quoted string or numeric argument " \
483 << "expected as input" << od_endl; \
488 #define mParSteps( parstr, parnext, nrsteps, minval, defval ) \
491 int nrsteps = strtol( parstr, &parnext, 0 ); \
492 if ( parnext!=parstr && nrsteps<minval ) \
494 mParseWarnStrm << "Number of steps should be at least " << minval \
497 if ( parnext==parstr || nrsteps<minval ) \
501 #define mPopUpWinInLoopCheck( prevwin ) \
503 if ( openQDlg() || curWin()!=prevwin ) \
505 mWinErrStrm << "Next step blocked by popped-up modal window" \
511 #define mMatchMouseTag( tag, mousetagptr, clicktags ) \
513 if ( FixedString(mousetagptr).startsWith(tag) ) \
515 clicktags.add( tag ); \
516 mousetagptr += strlen( tag ); \
519 #define mParMouse( parstr, parnext, clicktags, defaulttag ) \
521 mSkipBlanks( parstr ); \
522 BufferStringSet clicktags; \
523 const char* parnext = parstr; \
524 mMatchMouseTag( "Ctrl", parnext, clicktags ); \
525 mMatchMouseTag( "Double", parnext, clicktags ); \
527 mMatchMouseTag( "Left", parnext, clicktags ) \
528 else mMatchMouseTag( "Right", parnext, clicktags ) \
530 clicktags.add( clicktags.isEmpty() ? defaulttag : "Left" ); \
532 if ( *parnext && !iswspace(*parnext) ) \
536 #define mButtonCmdMouseTagCheck( clicktags ) \
538 if ( clicktags.isPresent("Right") || clicktags.isPresent("Double") ) \
540 mParseWarnStrm << "Double or Right mouse-click has no (lasting) " \
541 << "effect on check-box" << od_endl; \
545 #define mParExpr( isarg, identnm, parstr, parnext, valstr, prescan ) \
547 BufferString valstr; \
548 const char* parnext = exprInterpreter().process( parstr, valstr, isarg ); \
550 if ( !parnext || (!(prescan) && *exprInterpreter().errMsg()) ) \
552 mTimeStrm << "EVAL: " << exprInterpreter().breakPrefix(); \
553 mLogStrm << " ..." << od_endl; \
554 if ( exprInterpreter().isParseError() ) \
556 mParseErrStrm << exprInterpreter().errMsg() << od_endl; \
559 mWinErrStrm << exprInterpreter().errMsg() << od_endl; \
564 if ( !(prescan) && ((isarg) || !exprInterpreter().isResultTrivial()) ) \
566 mTimeStrm << "EVAL: " << exprInterpreter().parsedExpr(); \
567 StringProcessor strproc( valstr ); \
568 const char* quote = strproc.convertToDouble() ? "" : "\""; \
569 mLogStrm << " -->> " << identnm << (isarg ? "'" : "") \
570 << (FixedString(identnm).isEmpty() ? "" : " = " ) \
571 << quote << valstr << quote << od_endl; \
574 #define mParIdentInit( parstr, parnext, identnm, allowdummy ) \
576 BufferString firstarg, identnm; \
577 const char* parnext = getNextWord( parstr, firstarg.getCStr() ); \
578 if ( firstarg != "_dummyvar" ) \
579 parnext = StringProcessor(parstr).parseIdentifier( identnm ); \
580 else if ( allowdummy ) \
581 identnm = firstarg; \
584 mParseErrStrm << "Missing identifier" << od_endl; \
588 if ( parnext && *parnext == '[' ) \
590 mParseErrStrm << "If an array variable a[i] was intended, " \
591 << "use index substitution a_$i$ instead" << od_endl; \
594 if ( !parnext || firstarg!=identnm ) \
596 mParseErrStrm << "Invalid identifier: " << firstarg << od_endl; \
599 if ( identifierMan().isPredefined(identnm) ) \
601 mParseWarnStrm << "Reassigning a predefined identifier: " \
602 << identnm << od_endl; \
605 #define mParEscIdentPost( identnm, val, args, addesc ) \
607 mSkipBlanks( args ); \
608 identifierMan().set( identnm, val ); \
609 BufferString valstr = identifierMan().getValue( identnm ); \
610 StringProcessor strproc( valstr ); \
612 strproc.addCmdFileEscapes(StringProcessor::sAllEscSymbols()); \
614 identifierMan().set( identnm, strproc.buf() ); \
615 const char* quote = strproc.convertToDouble() ? "" : "\""; \
616 mTimeStrm << "Q&A: " << name() << (*args ? " " : "") << args \
617 << " -->> " << identnm << " = " << quote << strproc.buf() \
618 << quote << od_endl; \
621 #define mParIdentPost( identnm, val, args ) \
622 mParEscIdentPost( identnm, val, args, true )
625 #define mParCase( parstr, parnext, casesensitive, optional ) \
627 BufferString argword; \
628 const char* parnext = getNextWord( parstr, argword.getCStr() ); \
629 bool casesensitive = false; \
631 if ( mMatchCI(argword,"Sensitive") ) \
632 casesensitive = true; \
633 else if ( !mMatchCI(argword,"Insensitive") ) \
637 mParseErrStrm << "Case-argument not in {Sensitive, Insensitive}" \
644 #define mParExtraFormInit( parstr, parnext, form, extrastr ) \
646 BufferString formword; \
647 FileMultiString fms( extrastr ); \
648 const char* parnext = getNextWord( parstr, formword.getCStr() ); \
649 FormTag form = NoForm; \
650 if ( mMatchCI(formword,"Text") ) \
652 if ( mMatchCI(formword,"Number") && fms.indexOf("Number")>=0 ) \
654 if ( mMatchCI(formword,"Color") && fms.indexOf("Color")>=0 ) \
656 if ( mMatchCI(formword,"Value") && fms.indexOf("Value")>=0 ) \
658 if ( mMatchCI(formword,"Angle") && fms.indexOf("Angle")>=0 ) \
660 if ( mMatchCI(formword,"Minimum") && fms.indexOf("Minimum")>=0 ) \
662 if ( mMatchCI(formword,"Maximum") && fms.indexOf("Maximum")>=0 ) \
664 if ( mMatchCI(formword,"Step") && fms.indexOf("Step")>=0 ) \
666 if ( mMatchCI(formword,"Percentage") && fms.indexOf("Percentage")>=0 ) \
668 if ( mMatchCI(formword,"FilePath") && fms.indexOf("FilePath")>=0 ) \
670 if ( form == NoForm ) \
673 #define mParFormInit( parstr, parnext, form ) \
674 mParExtraFormInit( parstr, parnext, form, "Number" )
676 #define mParForm( answer, form, text, other ) \
678 BufferString answer; \
679 if ( form==NoForm || form==Text ) \
682 StringProcessor(answer).cleanUp(); \
687 #define mParExtraForm( answer, form, extratag, extra ) \
689 if ( form == extratag ) \
693 #define mParFramed( parstr, parnext, framed ) \
695 BufferString frameword; \
696 const char* parnext = getNextWord( parstr, frameword.getCStr() ); \
697 bool framed = true; \
698 if ( mMatchCI(frameword,"Selected") ) \
700 else if ( !mMatchCI(frameword,"Framed") ) \
704 #define mParTail( partail ) \
706 mSkipBlanks( partail ); \
707 if ( (partail) && *(partail) ) \
709 mParseErrStrm << "Command line ends with unexpected argument(s): " \
710 << (partail) << od_endl; \
717 #define mFindMenuItem( menupath, startmenu, curitem ) \
719 const uiAction* curitem; \
720 if ( !MenuTracer(startmenu,drv_).findItem(menupath,curitem) ) \
723 #define mGetMenuInfo( menupath, allowroot, startmenu, mnuinfo ) \
726 if ( !MenuTracer(startmenu,drv_).getMenuInfo(menupath,allowroot,mnuinfo) ) \
732 #define mFindObjs3Base( objsfound, objcls1, objcls2, objcls3, keys, warn ) \
734 ObjectSet<const CallBacker> objsfound; \
736 ObjectFinder objfinder( *curWin(), isCaseSensitive() ); \
737 if ( localSearchEnv() ) \
738 objfinder.findNodes( localSearchEnv(), &objsfound ); \
740 objfinder.findNodes( ObjectFinder::Everything, &objsfound ); \
742 for ( int idx=objsfound.size()-1; idx>=0; idx-- ) \
744 mDynamicCastGet( const objcls1*, uiobj1, objsfound[idx] ); \
745 mDynamicCastGet( const objcls2*, uiobj2, objsfound[idx] ); \
746 mDynamicCastGet( const objcls3*, uiobj3, objsfound[idx] ); \
747 if ( !uiobj1 && !uiobj2 && !uiobj3 ) \
748 objsfound.removeSingle( idx ); \
752 const bool dowarn = (warn); \
753 if ( !objfinder.selectNodes(objsfound, keys, &errkeyidx) && dowarn ) \
755 mWinWarnStrm << "No object with key \"" << keys[errkeyidx] << "\" in " \
756 << ( localSearchEnv() ? "local search environment" \
757 : "current window" ) << od_endl; \
761 #define mFindObjs2Base( objsfound, objcls1, objcls2, keys, warn ) \
762 mFindObjs3Base( objsfound, objcls1, objcls1, objcls2, keys, warn )
764 #define mFindObjsBase( objsfound, objclass, keys ) \
765 mFindObjs2Base( objsfound, objclass, objclass, keys, true )
767 #define mFindObjects3( objsfound, objcls1, objcls2, objcls3, keys, nrgrey ) \
768 mFindObjs3Base( objsfound, objcls1, objcls2, objcls3, keys, true ); \
769 const int nrgrey = ObjectFinder::deleteGreys(objsfound, greyOutsSkipped());
771 #define mFindObjects2( objsfound, objcls1, objcls2, keys, nrgrey ) \
772 mFindObjs2Base( objsfound, objcls1, objcls2, keys, true ); \
773 const int nrgrey = ObjectFinder::deleteGreys(objsfound, greyOutsSkipped());
775 #define mFindObjects( objsfound, objclass, keys, nrgrey ) \
776 mFindObjsBase( objsfound, objclass, keys ); \
777 const int nrgrey = ObjectFinder::deleteGreys(objsfound, greyOutsSkipped());
779 #define mFindListTableObjs( objnm, objsfound, objclass, keys, nrgrey ) \
781 mFindObjsBase( objsfound, objclass, keys ); \
782 mFindObjs2Base( objsfound2, objclass, uiTreeView, keys, false ); \
783 const bool uilviewonly = objsfound.isEmpty() && !objsfound2.isEmpty(); \
784 const bool uilviewcloser = !objsfound.isEmpty() && \
785 objsfound2.indexOf(objsfound[0])<0; \
786 if ( uilviewonly || uilviewcloser ) \
788 mWinWarnStrm << "Skipped " << objsfound2.size() << " tree(s) " \
789 << (uilviewcloser ? "more closely" : "") \
790 << " defined by key(s): \"" << keys.buf() \
791 << "\". Possibly resembling a " << objnm \
792 << ", but requiring a \"Tree\"-command" << od_endl; \
794 const int nrgrey = ObjectFinder::deleteGreys(objsfound, greyOutsSkipped());
799 #define mActivateInGUIThread( cb, busywait ) \
801 uiMainWin* applwin = applWin(); \
803 applwin->activateInGUIThread( cb, busywait ); \
807 #define mActInGUIThread( typ, constructorcall, waitclear ) \
809 typ##Activator* activator = new typ##constructorcall; \
810 if ( prepareActivate(activator) ) \
812 CallBack cb = mCB( activator, typ##Activator, actCB ); \
813 mActivateInGUIThread( cb, false ); \
817 waitForClearance(); \
824 #define mActivate( acttyp, constructorcall ) \
825 mActInGUIThread( acttyp, constructorcall, true )
827 #define mActivateNoClearance( acttyp, constructorcall ) \
828 mActInGUIThread( acttyp, constructorcall, false )
User interface main window.
Definition: uimainwin.h:35
virtual bool act(const char *parstr)=0
static bool isQuestionName(const char *, CmdDriver &)
@ Click
Definition: cmddriver.h:152
void setWait(float time, bool regular)
void interact(const InteractSpec *)
Definition: cmddriver.h:103
bool didInterceptSucceed(const char *objnm)
#define mEndDeclCmdClass
Definition: command.h:151
mDefineFactory1ParamInClass(Command, CmdDriver &, factory)
void jump(int extralines=0)
void setOnError(CmdDriver::OnErrorTag)
Definition: interpretexpr.h:24
#define mExpClass(module)
Definition: commondefs.h:177
File pathname tools.
Definition: filepath.h:34
int actretval_
Definition: command.h:215
virtual ~Command()
Definition: command.h:45
SeparString with backquotes as separators, use in most ascii files.
Definition: separstr.h:223
virtual bool isUiObjChangeCommand() const
Definition: command.h:53
Definition: identifierman.h:23
virtual bool isLocalEnvCommand() const
Definition: command.h:163
CloseQDlgActivator(int retval)
Definition: command.h:209
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
static void closeActiveModalQDlg(int retval)
virtual bool isLocalEnvCommand() const
Definition: command.h:51
virtual void actCB(CallBacker *)=0
IdentifierManager & identifierMan()
void prepareIntercept(const FileMultiString &menupath, int onoff, CmdDriver::InterceptMode=CmdDriver::Click)
@ Text
Definition: file.h:122
#define mStartDeclCmdClassNoActNoEntry(mod, cmdkey, parentclass)
Definition: command.h:121
virtual bool isVisualCommand() const
Definition: command.h:52
FixedString Maximum()
Definition: keystrs.h:211
bool verifyWinAssert(const char *newwinstr=0)
@ NoState
Definition: cmddriver.h:99
void actCB(CallBacker *cb)
Definition: command.h:212
void setCaseSensitive(bool yn)
bool verifyWinState(const char *newwinstr=0, WinStateType newwinstate=NoState)
CloseActivator(const uiMainWin &uimw)
Definition: command.h:196
const char * outputDir() const
static BufferString createFactoryKey(const char *keyword)
uiMainWin & actmainwin_
Definition: command.h:202
@ Number
Definition: odjson.h:40
const MenuInfo & interceptedMenuInfo() const
Definition: uiaction.h:170
virtual ~Activator()
Definition: command.h:188
virtual bool isVisualCommand() const
Definition: command.h:164
virtual bool isUiObjChangeCommand() const
Definition: command.h:158
RecoveryTag
Definition: cmddriver.h:149
void setRecoveryStep(CmdDriver::RecoveryTag)
FormTag
Definition: command.h:57
void actCB(CallBacker *cb)
Definition: command.h:199
CmdDriver & drv_
Definition: command.h:64
virtual bool isLocalEnvCommand() const
Definition: command.h:157
static BufferString factoryKey(const char *name)
Definition: cmddriverbasics.h:197
WinStateType
Definition: cmddriver.h:99
const uiMainWin * curWin() const
virtual bool isOpenQDlgCommand() const
Definition: command.h:50
@ Value
Definition: command.h:57
InterceptMode
Definition: cmddriver.h:152
void setSleep(float time, bool regular)
bool isCaseSensitive() const
bool prepareActivate(Activator *)
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
virtual const char * name() const =0
FixedString Minimum()
Definition: keystrs.h:213
The base class for most UI elements.
Definition: uiobj.h:38
Command(CmdDriver &cmddrv)
Definition: command.h:42
@ Step
Definition: command.h:58
Command Drive
Definition: canvascommands.h:22
Definition: command.h:207
OnErrorTag
Definition: cmddriver.h:132
ExprInterpreter & exprInterpreter()
int lastActionIdxMove() const
bool goingToChangeUiObj() const
void skipGreyOuts(bool yn=true)
bool insertProcedure(int defidx)
CmdDriver::OnErrorTag onError() const
WildcardManager & wildcardMan()
bool switchCurWin(uiMainWin *)
Definition: command.h:194
bool tryAction(const char *identname, const char *actstr)
bool doLocalAction(uiObject *localenv, const char *actstr)
Definition: searchkey.h:57
Definition: command.h:186
static void initStandardCommands()
const uiObject * localSearchEnv() const
bool greyOutsSkipped() const
Generated at
for the OpendTect
seismic interpretation project.
Copyright (C): dGB Beheer B.V. 1995-2021