void
ArxDbgEditorReactor::lispWillStart(const TCHAR* firstLine)
{
    CString str;

    str.Format(_T("Lisp Will Start: first line = %s"), firstLine);
    printReactorMessage(str);
}
void
ArxDbgEditorReactor::commandFailed(const TCHAR* cmdStr)
{
    CString str;

    str.Format(_T("Command Failed: %s"), cmdStr);
    printReactorMessage(str);
}
void
ArxDbgEditorReactor::undoSubcommandBack(int activity)
{
    CString str, str2;
    str.Format(_T("Undo Subcommand Back: activity = %s"), undoActivityToStr(activity, str2));

    printReactorMessage(str);
}
void
ArxDbgEditorReactor::xrefSubcommandOverlayItem(int activity, const char* pPath)
{
    CString str, str2;

    str.Format(_T("Xref sub-command overlay item: activity = %s, path = %s"), 
                            xrefActivityToStr(activity, str2), pPath);
    printReactorMessage(str);
}
void
ArxDbgEditorReactor::undoSubcommandAuto(int activity, Adesk::Boolean state)
{
    CString str, str2;
    str.Format(_T("Undo Subcommand Auto: activity = %s, state = %d"),
                    undoActivityToStr(activity, str2), state);

    printReactorMessage(str);
}
void
ArxDbgEditorReactor::xrefSubcommandPathItem(int activity, AcDbObjectId blockId, const char* pNewPath)
{
    CString str, str2;

    str.Format(_T("Xref sub-command path item: activity = %s, path = %s"), 
                            xrefActivityToStr(activity, str2), pNewPath);
    printReactorMessage(str);
}
void
ArxDbgEditorReactor::xrefSubcommandReloadItem(int activity, AcDbObjectId blockId)
{
    CString str, str2;

    str.Format(_T("Xref sub-command reload item: activity = %s"), 
                            xrefActivityToStr(activity, str2));
    printReactorMessage(str);
}
void
ArxDbgEditorReactor::xrefSubcommandBindItem(AcDbDatabase* pHost, int activity, AcDbObjectId blockId)
{
    CString str, str2;

    str.Format(_T("Xref sub-command bind item: activity = %s"),
                            xrefActivityToStr(activity, str2));
    printReactorMessage(str);
}
void
ArxDbgEditorReactor::undoSubcommandNumber(int activity, int num)
{
    CString str, str2;
    str.Format(_T("Undo Subcommand Number: activity = %s, #%d"),
                        undoActivityToStr(activity, str2), num);

    printReactorMessage(str);
}
void
ArxDbgEditorReactor::undoSubcommandControl(int activity, int option)
{
    CString str, str2;
    str.Format(_T("Undo Subcommand Control: activity = %s, option = %d"),
                    undoActivityToStr(activity, str2), option);

    printReactorMessage(str);
}
void
ArxDbgEditorReactor::beginWblock(AcDbDatabase* pTo, AcDbDatabase* pFrom, AcDbObjectId blockId)
{
    CString str, blkName;

    ArxDbgUtils::symbolIdToName(blockId, blkName);
    str.Format(_T("Begin Wblock (2): blkname = %s"), blkName);
    printReactorMessage(str, pTo, pFrom);
}
void
ArxDbgEditorReactor::sysVarChanged(const char* varName, Adesk::Boolean success)
{
    CString str;

    str.Format(_T("Sysvar Changed: %s"), varName);
    printReactorMessage(str);
    if (success != Adesk::kTrue)
        acutPrintf(_T("\n*** SYSVAR NOT CHANGED SUCCESSFULLY!!! ***"));
}
void
ArxDbgTransientEntReactor::copied(const AcDbObject* obj, const AcDbObject* newObj)
{
    CString str;

    printReactorMessage(_T("Copied"), obj);
    acutPrintf(_T("\n%-15s : {%-18s: %s, %s} "), _T(""), _T("New Object"),
            ArxDbgUtils::objToClassStr(newObj), ArxDbgUtils::objToHandleStr(newObj, str));
    ArxDbgUiTdcTransientReactors::doStateDboxCopied(obj, newObj);
}
void
ArxDbgEditorReactor::beginDeepCloneXlation(AcDbIdMapping& idMap, Acad::ErrorStatus* pRetStatus)
{
    printReactorMessage(_T("Begin Deep Clone Translation"));

	if (m_showDetails) {
		ArxDbgUiTdmIdMap dbox(&idMap, acedGetAcadDwgView(), _T("Begin Deep Clone Xlation"));
		dbox.DoModal();
	}
}
void
ArxDbgEditorReactor::otherWblock(AcDbDatabase* pTo, AcDbIdMapping& idMap, AcDbDatabase* pFrom)
{
    printReactorMessage(_T("Other Wblock"), pTo, pFrom);

	if (m_showDetails) {
		ArxDbgUiTdmIdMap dbox(&idMap, acedGetAcadDwgView(), _T("Other Wblock"));
		dbox.DoModal();
	}
}
void
ArxDbgEditorReactor::objectsLazyLoaded(const AcDbObjectIdArray& idArray)
{
    printReactorMessage(_T("Objects Lazy Loaded"));

	if (m_showDetails) {
		ArxDbgUiTdmObjects dbox(idArray, acedGetAcadDwgView(), _T("Objects Lazy Loaded"));
		dbox.DoModal();
	}
}
void
ArxDbgEditorReactor::beginWblockObjects(AcDbDatabase* pFrom, AcDbIdMapping& idMap)
{
    printReactorMessage(_T("Begin Wblock Objects"), pFrom);

	if (m_showDetails) {
		ArxDbgUiTdmIdMap dbox(&idMap, acedGetAcadDwgView(), _T("Begin Wblock Objects"));
		dbox.DoModal();
	}
}
void
ArxDbgEditorReactor::endDeepClone(AcDbIdMapping& idMap)
{
    printReactorMessage(_T("End Deep Clone"));

	if (m_showDetails) {
		ArxDbgUiTdmIdMap dbox(&idMap, acedGetAcadDwgView(), _T("End Deep Clone"));
		dbox.DoModal();
	}
}
void
ArxDbgEdInputContextReactor::endGetKeyword(Acad::PromptStatus returnStatus, const char*& pKeyword)
{
	printReactorMessage(_T("End Get Keyword"));

	if (printDetails()) {
		printReturnStatus(returnStatus);
		printValue(_T("KEYWORD"), pKeyword);
	}
}
void
ArxDbgEdInputContextReactor::beginDragSequence(const char* promptString)
{
	m_dragJustStarted = true;

	printReactorMessage(_T("Begin Drag Sequence"));

	if (m_showDetails)
		printPrompt(promptString);
}
void
ArxDbgEdInputContextReactor::endGetString(Acad::PromptStatus returnStatus, const char*& pString)
{
	printReactorMessage(_T("End Get String"));

	if (printDetails()) {
		printReturnStatus(returnStatus);
		printValue(_T("STRING"), pString);
	}
}
void
ArxDbgEdInputContextReactor::beginGetString(const char* promptString, int initGetFlags)
{
	printReactorMessage(_T("Begin Get String"));

	if (printDetails()) {
		printPrompt(promptString);
		printInitGetFlags(initGetFlags);
	}
}
void
ArxDbgPersistentObjReactor::subObjModified(const AcDbObject* obj, const AcDbObject* subObj)
{
    CString str;

    printReactorMessage(_T("Sub-Obj Modified"), obj);
    acutPrintf(_T("\n%-15s : {%-18s: %s, %s} "), _T(""), _T("Sub Object"),
            ArxDbgUtils::objToClassStr(subObj), ArxDbgUtils::objToHandleStr(subObj, str));

    ArxDbgUiTdcPersistentReactors::doStateDboxSubObjModified(obj, subObj);
}
void
ArxDbgEdInputContextReactor::endDragSequence(Acad::PromptStatus returnStatus,
                    AcGePoint3d& pickPoint, AcGeVector3d& vec)
{
	printReactorMessage(_T("End Drag Sequence"));

	if (m_showDetails) {
		CString str;
		printReturnStatus(returnStatus);
		printValue(_T("PICK POINT"), ArxDbgUtils::ptToStr(pickPoint, str));
		printValue(_T("VECTOR"), ArxDbgUtils::vectorToStr(vec, str));
	}
}
void
ArxDbgEdInputContextReactor::beginEntsel(const char* promptString,
					int initGetFlags,
					const char* pKeywords)
{
	printReactorMessage(_T("Begin Entsel"));

	if (printDetails()) {
		printPrompt(promptString);
		printInitGetFlags(initGetFlags);
		printKeywords(pKeywords);
	}
}
void
ArxDbgDatabaseReactor::proxyResurrectionCompleted(const AcDbDatabase* db,
										const char* appname, AcDbObjectIdArray& objects)
{
	printReactorMessage(db, _T("Proxy Resurrection Completed"), appname);

	if (m_showDetails) {
		CString str;
		str.Format(_T("Resurrected Proxies: %s"), appname);
		ArxDbgUiTdmObjects dbox(objects, acedGetAcadDwgView(), str);
		dbox.DoModal();
	}
}
void
ArxDbgEdInputContextReactor::endSSGet(Acad::PromptStatus returnStatus,
					const AcArray<AcDbObjectId>& ss)
{
	printReactorMessage(_T("End SSGet"));

	if (printDetails()) {
		CString str;
		printReturnStatus(returnStatus);

		ArxDbgUiTdmObjects dbox(ss, acedGetAcadDwgView(), _T("SSGet Set"));
		dbox.DoModal();
	}
}
void
ArxDbgEdInputContextReactor::endGetReal(Acad::PromptStatus returnStatus,
					double& returnValue,
					const char*& pKeyword)
{
	printReactorMessage(_T("End Get Real"));

	if (printDetails()) {
		CString str;
		printReturnStatus(returnStatus);
		printValue(_T("REAL"), ArxDbgUtils::doubleToStr(returnValue, str));
		printKeywordPicked(pKeyword);
	}
}
void
ArxDbgEdInputContextReactor::endGetColor(Acad::PromptStatus returnStatus,
					int& retValue,
					const char*& pKeyword)
{
	printReactorMessage(_T("End Get Color"));

	if (printDetails()) {
		CString str;
		printReturnStatus(returnStatus);
		printValue(_T("COLOR"), ArxDbgUtils::colorToStr(retValue, str, true));
		printKeywordPicked(pKeyword);
	}
}
void
ArxDbgEdInputContextReactor::endGetScaleFactor(Acad::PromptStatus returnStatus,
                    double& distance,
                    const char*& pKeyword)
{
	printReactorMessage(_T("End Get Scale Factor"));

	if (printDetails()) {
		CString str;
		printReturnStatus(returnStatus);
		printValue(_T("SCALE FACTOR"), ArxDbgUtils::doubleToStr(distance, str));
		printKeywordPicked(pKeyword);
	}
}