ROOT logo
ROOT » GUI » RECORDER » TRecGuiEvent

class TRecGuiEvent: public TRecEvent


ROOT EVENT RECORDING SYSTEM


TRecorder class provides interface for recording and replaying
events in ROOT.
Recorded events are:
- Commands typed by user in commandline ('new TCanvas')
- GUI events (mouse movement, button clicks, ...)

All the recorded events from one session are stored in one TFile
and can be replayed again anytime.

Recording


1] To start recording

TRecorder r(const char *filename, "NEW")
TRecorder r(const char *filename, "RECREATE")

or:

TRecorder *recorder = new TRecorder;
recorder->Start(const char *filename, ...)

-filename      Name of ROOT file in which to save
recorded events.

2] To stop recording

recorder->Stop()


IMPORTANT:
State capturing is part of recording. It means that if you want to
record events for some object (window), creation of this object
must be also recorded.

Example:

t = new TRecorder();          // Create a new recorder
t->Start("logfile.root");     // ! Start recording first

c = new TCanvas();            // ! Then, create an object
c->Dump();                    // Work with that object

t->Stop();                    // Stop recording

It is strongly recommended to start recording with empty ROOT
environment, at least with no previously created ROOT GUI.
This ensures that only events for well known windows are stored.
Events for windows, which were not created during recording,
cannot be replayed.

Replaying


1] To start replaying

TRecorder r(const char *filename)
TRecorder r(const char *filename, "READ")

or:

TRecorder *recorder = new TRecorder;
recorder->Replay(const char *filename,
Bool_t showMouseCursor = kTRUE);

-filename         A name of file with recorded events
previously created with TRecorder::Start

-showMouseCursor  If kTRUE, mouse cursor is replayed as well.
In that case it is not recommended to use mouse
during replaying.

In general, it is not recommended to use mouse to change positions
and states of ROOT windows during replaying.

IMPORTANT:
The state of ROOT environment before replaying of some events
must be exactly the same as before recording them.
Therefore it is strongly recommended to start both recording
and replaying with empty ROOT environment.

2] To pause replaying

recorder->Pause()

Replaying is stopped until recorder->Resume() is called.


3] To resume paused replaying

recorder->Resume()

Resumes previously stopped replaying.


4] To stop replaying before its end

recorder->Stop()


Function Members (Methods)

public:
TRecGuiEvent()
TRecGuiEvent(const TRecGuiEvent&)
~TRecGuiEvent()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
static Event_t*CreateEvent(TRecGuiEvent* ge)
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual TTimeTRecEvent::GetTime() const
virtual const char*TObject::GetTitle() const
virtual TRecEvent::ERecEventTypeGetType() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
TRecGuiEvent&operator=(const TRecGuiEvent&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
virtual voidReplayEvent(Bool_t showMouseCursor = kTRUE)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTRecEvent::SetTime(TTime t)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp)
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()

Data Members

public:
enum EConfigureNotifyType { kCNMove
kCNResize
kCNMoveResize
kCNFilter
};
enum ERootAtoms { kWM_DELETE_WINDOW
kROOT_MESSAGE
};
enum TRecEvent::ERecEventType { kCmdEvent
kGuiEvent
kExtraEvent
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
UInt_tfCodeKey or button code
Int_tfCountIf non-zero, at least this many more exposes
Int_tfFormatNext fields only used by kClientMessageEvent
Handle_tfHandleGeneral resource handle (used for atoms or windows)
UInt_tfHeightHeight of exposed area
Window_tfMaskedIf non-zero, event recorded in HandleMaskEvent()
Bool_tfSendEventTrue if event came from SendEvent
UInt_tfStateKey or button mask
Time_tfTimeTime event occured in ms
EGEventTypefTypeType of event (see EGEventType)
Long_tfUser[5]5 longs can be used by client message events
UInt_tfWidthWidth of exposed area
Window_tfWindowWindow ID which reported event is relative to
Int_tfXPointer x coordinate in event window
Int_tfXRootx coordinate relative to root
Int_tfYPointer y coordinate in event window
Int_tfYRooty coordinate relative to root

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

void ReplayEvent(Bool_t showMouseCursor = kTRUE)
 Replays stored GUI event
Event_t * CreateEvent(TRecGuiEvent* ge)
 Converts TRecGuiEvent type to Event_t type
ERecEventType GetType() const
 Returns what kind of event it stores