void NodeJSGetScriptHandler::Process(NodeJSDebugger* debugger, const wxString& output)
{
    JSONRoot root(output);
    wxString sourceFile = root.toElement().namedObject("body").namedObject("source").toString();
    if(!sourceFile.IsEmpty()) {
        wxFileName fn(clStandardPaths::Get().GetUserDataDir(), m_filename);
        fn.AppendDir("webtools");
        fn.AppendDir("tmp");
        fn.Mkdir(wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL);
        if(FileUtils::WriteFileContent(fn, sourceFile)) {
            CL_DEBUG("Calling marking line for %s:%d", fn.GetFullPath(), m_line);
            debugger->AddTempFile(fn.GetFullPath());
            clDebugEvent eventHighlight(wxEVT_NODEJS_DEBUGGER_MARK_LINE);
            eventHighlight.SetLineNumber(m_line);
            eventHighlight.SetFileName(fn.GetFullPath());
            EventNotifier::Get()->AddPendingEvent(eventHighlight);
        }
    }
}
void NodeJSDebuggerPane::OnFrameSelected(clDebugEvent& event)
{
    event.Skip();
    wxWindowUpdateLocker locker(m_dataviewLocals);
    m_dataviewLocalsModel->Clear();
    m_dataviewLocals->Enable(true);

    JSONRoot root(event.GetString());
    JSONElement json = root.toElement();
    JSONElement frame = json.namedObject("body");
    JSONElement refs = json.namedObject("refs");

    // Load the handlers into a map
    m_handles.clear();
    ParseRefsArray(refs);

    int index = frame.namedObject("index").toInt();
    int funcRef = frame.namedObject("func").namedObject("ref").toInt();
    int fileRef = frame.namedObject("script").namedObject("ref").toInt();
    int line = frame.namedObject("line").toInt() + 1;

    wxVector<wxVariant> cols;
    cols.push_back(wxString() << index);
    wxString file, func;
    if(m_handles.count(funcRef)) {
        func = m_handles.find(funcRef)->second.value;
    }
    if(m_handles.count(funcRef)) {
        file = m_handles.find(fileRef)->second.value;
    }
    cols.push_back(func);
    cols.push_back(file);
    cols.push_back(wxString() << line);

    // Notify the debugger to use frame #0 for the indicator
    clDebugEvent eventHighlight(wxEVT_NODEJS_DEBUGGER_MARK_LINE);
    eventHighlight.SetLineNumber(line);
    eventHighlight.SetFileName(file);
    EventNotifier::Get()->AddPendingEvent(eventHighlight);
    BuildLocals(frame);
    BuildArguments(frame);
}