void HelpPlugin::OnAttach() { // load configuration (only saved in our config dialog) HelpCommon::LoadHelpFilesVector(m_Vector); wxBitmap zoominbmp = wxXmlResource::Get()->LoadBitmap(_T("ZoomInBitmap")); wxBitmap zoomoutbmp = wxXmlResource::Get()->LoadBitmap(_T("ZoomOutBitmap")); m_manFrame = new MANFrame(Manager::Get()->GetAppWindow(), wxID_ANY, zoominbmp, zoomoutbmp); SetManPageDirs(m_manFrame); CodeBlocksDockEvent evt(cbEVT_ADD_DOCK_WINDOW); evt.name = _T("MANViewer"); evt.title = _("Man/Html pages viewer"); evt.pWindow = m_manFrame; evt.dockSide = CodeBlocksDockEvent::dsRight; evt.desiredSize.Set(320, 240); evt.floatingSize.Set(320, 240); evt.minimumSize.Set(240, 160); Manager::Get()->ProcessEvent(evt); int baseFont = Manager::Get()->GetConfigManager(_T("help_plugin"))->ReadInt(_T("/base_font_size"), 0); if (baseFont > 0) m_manFrame->SetBaseFontSize(baseFont); if (Manager::Get()->GetConfigManager(_T("help_plugin"))->ReadBool(_T("/show_man_viewer"), false)) ShowMANViewer(); }
void HelpPlugin::OnAttach() { // load configuration (only saved in our config dialog) HelpCommon::LoadHelpFilesVector(m_Vector); const wxString man_prefix = _T("man:"); wxString all_man_dirs(man_prefix); for (HelpCommon::HelpFilesVector::const_iterator i = m_Vector.begin(); i != m_Vector.end(); ++i) { if (i->second.name.Mid(0, man_prefix.size()).CmpNoCase(man_prefix) == 0) { // only add ; if a dir is already set if (all_man_dirs.Length() > man_prefix.Length()) { all_man_dirs += _T(";"); } all_man_dirs += i->second.name.Mid(man_prefix.Length()); } } wxBitmap zoominbmp = wxXmlResource::Get()->LoadBitmap(_T("ZoomInBitmap")); wxBitmap zoomoutbmp = wxXmlResource::Get()->LoadBitmap(_T("ZoomOutBitmap")); m_manFrame = new MANFrame(Manager::Get()->GetAppWindow(), wxID_ANY, zoominbmp, zoomoutbmp); m_manFrame->SetDirs(all_man_dirs); CodeBlocksDockEvent evt(cbEVT_ADD_DOCK_WINDOW); evt.name = _T("MANViewer"); evt.title = _("Man/Html pages viewer"); evt.pWindow = m_manFrame; evt.dockSide = CodeBlocksDockEvent::dsRight; evt.desiredSize.Set(320, 240); evt.floatingSize.Set(320, 240); evt.minimumSize.Set(240, 160); Manager::Get()->ProcessEvent(evt); int baseFont = Manager::Get()->GetConfigManager(_T("help_plugin"))->ReadInt(_T("/base_font_size"), 0); if (baseFont > 0) { m_manFrame->SetBaseFontSize(baseFont); } if (Manager::Get()->GetConfigManager(_T("help_plugin"))->ReadBool(_T("/show_man_viewer"), false)) { ShowMANViewer(); } }
void HelpPlugin::LaunchHelp(const wxString &c_helpfile, bool isExecutable, bool openEmbeddedViewer, HelpCommon::StringCase keyCase, const wxString &defkeyword, const wxString &c_keyword) { const static wxString http_prefix(_T("http://")); const static wxString man_prefix(_T("man:")); wxString helpfile(c_helpfile); // Patch by Yorgos Pagles: Use the new attributes to calculate the keyword wxString keyword = c_keyword.IsEmpty() ? defkeyword : c_keyword; if(keyCase == HelpCommon::UpperCase) { keyword.MakeUpper(); } else if (keyCase == HelpCommon::LowerCase) { keyword.MakeLower(); } helpfile.Replace(_T("$(keyword)"), keyword); Manager::Get()->GetMacrosManager()->ReplaceMacros(helpfile); if (isExecutable) { Manager::Get()->GetLogManager()->DebugLog(_T("Executing ") + helpfile); wxExecute(helpfile); return; } // Support C::B scripts if (wxFileName(helpfile).GetExt() == _T("script")) { if (Manager::Get()->GetScriptingManager()->LoadScript(helpfile)) { // help scripts must contain a function with the following signature: // function SearchHelp(keyword) try { SqPlus::SquirrelFunction<void> f("SearchHelp"); f(keyword); } catch (SquirrelError& e) { Manager::Get()->GetScriptingManager()->DisplayErrors(&e); } } else { Manager::Get()->GetLogManager()->DebugLog(_T("Couldn't run script")); } return; } // Operate on help html file links inside embedded viewer if (openEmbeddedViewer && wxFileName(helpfile).GetExt().Mid(0, 3).CmpNoCase(_T("htm")) == 0) { Manager::Get()->GetLogManager()->DebugLog(_T("Launching ") + helpfile); cbMimePlugin* p = Manager::Get()->GetPluginManager()->GetMIMEHandlerForFile(helpfile); if (p) { p->OpenFile(helpfile); } else { reinterpret_cast<MANFrame *>(m_manFrame)->LoadPage(helpfile); ShowMANViewer(); } return; } // Operate on help http (web) links if (helpfile.Mid(0, http_prefix.size()).CmpNoCase(http_prefix) == 0) { Manager::Get()->GetLogManager()->DebugLog(_T("Launching ") + helpfile); wxLaunchDefaultBrowser(helpfile); return; } // Operate on man pages if (helpfile.Mid(0, man_prefix.size()).CmpNoCase(man_prefix) == 0) { if (reinterpret_cast<MANFrame *>(m_manFrame)->SearchManPage(c_helpfile, keyword)) { Manager::Get()->GetLogManager()->DebugLog(_T("Couldn't find man page")); } else { Manager::Get()->GetLogManager()->DebugLog(_T("Launching man page")); } ShowMANViewer(); return; } wxFileName the_helpfile = wxFileName(helpfile); Manager::Get()->GetLogManager()->DebugLog(_T("Help File is ") + helpfile); if (!(the_helpfile.FileExists())) { wxString msg; msg << _("Couldn't find the help file:\n") << the_helpfile.GetFullPath() << _("\n") << _("Do you want to run the associated program anyway?"); if (!(cbMessageBox(msg, _("Warning"), wxICON_WARNING | wxYES_NO | wxNO_DEFAULT) == wxID_YES)); return; } wxString ext = the_helpfile.GetExt(); #ifdef __WXMSW__ // Operate on help files with keyword search (windows only) if (!keyword.IsEmpty()) { if (ext.CmpNoCase(_T("hlp")) == 0) { wxWinHelpController HelpCtl; HelpCtl.Initialize(helpfile); HelpCtl.KeywordSearch(keyword); return; } if (ext.CmpNoCase(_T("chm")) == 0) { LaunchCHMThread *p_thread = new LaunchCHMThread(helpfile, keyword); p_thread->Create(); p_thread->Run(); return; } } #endif // Just call it with the associated program wxFileType *filetype = wxTheMimeTypesManager->GetFileTypeFromExtension(ext); if (!filetype) { cbMessageBox(_("Couldn't find an associated program to open:\n") + the_helpfile.GetFullPath(), _("Warning"), wxOK | wxICON_EXCLAMATION); return; } wxExecute(filetype->GetOpenCommand(helpfile)); delete filetype; }