void STDMETHODCALLTYPE IECrossfireBHO::OnBeforeNavigate2(IDispatch* pDisp, VARIANT* URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers, VARIANT_BOOL* Cancel) { m_contextCreated = false; if (!m_firstNavigate) { return; } m_firstNavigate = false; std::wstring string(URL->bstrVal); size_t index = string.find(DEBUG_START); if (index == std::string::npos) { return; } *Cancel = VARIANT_TRUE; size_t equalsIndex; if ((equalsIndex = string.find('=', index)) != index + wcslen(DEBUG_START)) { if ((equalsIndex = string.find(L"%3D", index)) != index + wcslen(DEBUG_START)) { displayHTML(L"<html><body>Did not start Crossfire Server<p>Command-line syntax: <tt>iexplore.exe -crossfire-server-port=<port></tt></body></html>"); return; } equalsIndex += 2; /* because found "%3D" instead of "=" */ } index = equalsIndex + 1; int port = _wtoi(string.substr(index, 5).c_str()); if (1000 <= port && port <= 65534) { if (startDebugging(port)) { std::wstringstream stream; stream << "<html><body>Crossfire Server started on port "; stream << port; stream << "</body></html>"; displayHTML((wchar_t*)stream.str().c_str()); } else { std::wstringstream stream; stream << "<html><body>Failed to start Crossfire Server on port "; stream << port; stream << "</body></html>"; displayHTML((wchar_t*)stream.str().c_str()); } } else { displayHTML(L"<html><body>Did not start Crossfire Server<p>Valid port range is 1000-65534</body></html>"); } }
bool DebuggerPlugin::setup(IDEApplication *app) { mApp = app; mName = tr("Debugger"); widget.reset(new DebuggerWidget); debuggedEditor = NULL; app->mainWindow()->utilityTabWidget()->addTab(widget.data(), name()); connect(widget.data(), SIGNAL(debuggerStarted()), this, SLOT(startDebugging())); connect(widget.data(), SIGNAL(debuggerStopped()), this, SLOT(stopDebugging())); connect(widget.data(), SIGNAL(sendCommand(QString)), this, SLOT(sendCommand(QString))); connect(widget.data(), SIGNAL(shouldBreakOnTrace(bool)), this, SLOT(shouldBreakOnTrace(bool))); connect(widget->treeFrames, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(treeItemClicked(QTreeWidgetItem*,int))); connect(app->mainWindow(), SIGNAL(tabChanged(bool)), this, SLOT(mainWindowTabChanged(bool))); connect(app->mainWindow(), SIGNAL(editorDeleted(Editor*)), this, SLOT(mainWindowEditorDeleted(Editor*))); return true; }