Exemple #1
0
HRESULT CRunBreakPoint::OnDemandBreakpoint(CebScript *pScript, CebThread *pThread, IObjectManagement *pIOM, IStreamInfo *pISI)
{
	ASSERT(NULL != pScript);
	ASSERT(NULL != pThread);
	if (pScript == NULL || pThread == NULL) return E_POINTER;
	ASSERT(NULL != pThread->GetHandle());
	ASSERT(NULL != pScript->GetHandle());
	if (NULL == pScript->GetHandle() || NULL == pThread->GetHandle()) return E_HANDLE;

	HRESULT hr = NOERROR;
	try
	{// evtl. Debuggerfenster erzeugen
		hr = CreateDebugger(WM_CLOSEBREAKPOINTDEBUGGERDIALOG, false, 0, pIOM, pISI);
		if (FAILED(hr)) _com_issue_error(hr);
		// Fertzigen Script und Thread unterschieben
		if (!ebDebugger_SetScript(GetDebuggerWnd(), pScript->GetHandle())) _com_issue_error(E_FAIL);
		if (!ebDebugger_SetThread(GetDebuggerWnd(), pThread->GetHandle())) _com_issue_error(E_FAIL);
		// jetzt Debugger anzeigen 
		hr = m_pScriptDebugger -> RunModal();	
		if (FAILED(hr)) _com_issue_error(hr);
	}
	catch(_com_error& e)
	{
		if (m_pScriptDebugger) 
			m_pScriptDebugger -> DestroyWindow(); 
		m_pScriptDebugger = NULL;
		return _COM_ERROR(e);
	}
	return S_OK;
}
Exemple #2
0
HRESULT CRunErr::OnDemandRuntimeError(ebWORD wLinNr)
{
// testen, ob im richtigen Kontext verwendet
	ASSERT (!m_fRunModal);

// evtl. Debuggerfenster erzeugen
	m_fRTError = true;

	if (NULL == m_pScriptDebugger) {
	HRESULT hr = CreateDebugger();

		if (FAILED(hr)) 
			return hr;
		ASSERT(NULL != m_pScriptDebugger);
	}

	ebDebugger_SelectLines(GetDebuggerWnd(), wLinNr-2, wLinNr-1, true);

// jetzt, wo alles fertig ist, anzeigen
	m_pScriptDebugger -> EditOnly();	// UI richten, kein GO etc. möglich
	m_pScriptDebugger -> ShowWindow (SW_SHOWNORMAL);
	m_pScriptDebugger -> UpdateWindow();

return NOERROR;
}
Exemple #3
0
HRESULT CRunErr::CreateDebugger()
{
// Debugger-DLL nicht installiert	
	if (!g_SummitModuls[DEBUGGER].fIsInstalled) 
		return E_FAIL;

	EnableTriasWindow(false);

CMacroScriptExtension *pExt = (CMacroScriptExtension *)g_pTE;

	ASSERT(NULL != pExt);

	m_pScriptDebugger = new CBScriptDebug(pExt->ebInst(), pExt->MWind(), m_pOperateScripts); 
	ASSERT(NULL != m_pScriptDebugger);
	if (NULL == m_pScriptDebugger) return E_OUTOFMEMORY;
	
	if (NULL != m_pOperateScripts) {
	// öffnet Stream
		ASSERT(!m_strName.IsEmpty());
		if (!m_pScriptDebugger -> OpenStream((LPSTR)(LPCSTR)m_strName)) 
			return E_FAIL;
	}

	ASSERT(!m_strText.IsEmpty());
// immer
	if (!ebDebugger_SetText(GetDebuggerWnd(), m_strText)) 
		return E_FAIL;
	
return NOERROR;
}
Exemple #4
0
HRESULT CRunErr::OnDemandBreakpoint(CebScript *pScript, CebThread *pThread)
{
	ASSERT(NULL != pScript);
	ASSERT(NULL != pThread);
	if (pScript == NULL || pThread == NULL) 
		return E_POINTER;
	ASSERT(NULL != pThread->GetHandle());
	ASSERT(NULL != pScript->GetHandle());
	if (NULL == pScript->GetHandle() || NULL == pThread->GetHandle()) 
		return E_HANDLE;

// testen, ob im richtigen Kontext verwendet
	ASSERT(!m_fRTError);

	m_fRunModal = true;

// evtl. Debuggerfenster erzeugen
	if (NULL == m_pScriptDebugger) {
	HRESULT hr = CreateDebugger();

		if (FAILED(hr)) 
			return hr;
		ASSERT(NULL != m_pScriptDebugger);
	}

	if (!ebDebugger_SetScript(GetDebuggerWnd(), pScript->GetHandle())) return E_FAIL;
	if (!ebDebugger_SetThread(GetDebuggerWnd(), pThread->GetHandle())) return E_FAIL;

// jetzt Debugger anzeigen 
HRESULT hr = m_pScriptDebugger -> RunModal();	
	if (E_ABORT == hr || E_UNEXPECTED == hr)
		// Debugger wurde geschlossen
		m_fRunModal = false;

return hr;
}
Exemple #5
0
HRESULT CRunErr::CreateDebugger(UINT uiWMClose, BOOL fOpen, ebWORD wLineNr, IObjectManagement *pIOM, IStreamInfo *pISI)
{
	ASSERT(!m_strName.IsEmpty());
	if (m_strName.IsEmpty()) return E_INVALIDARG;

	EnableTriasWindow(false);
	
	HRESULT hr = NOERROR;
	
	// Neuen Debugger kreieren, Baum füllen, DebCtrl init.
	if (NULL == m_pScriptDebugger)
		hr = ::CreateDebugger(g_pBSE -> MWind(), m_strName, fOpen, uiWMClose, pIOM, pISI, &m_pScriptDebugger);
	else // Nur neuen Script öffnen
		hr = m_pScriptDebugger -> Init(m_strName, fOpen, pIOM, pISI);

	if (FAILED(hr)) return hr;
	
	m_pScriptDebugger -> SetEditOnly(true);// Nur editieren möglich	
	ebDebugger_SelectLines(GetDebuggerWnd(), wLineNr-2, wLineNr-1, true);
	
	return hr;
}