void ClangPlugin::OnAttach() { wxBitmap bmp; wxString prefix = ConfigManager::GetDataFolder() + wxT("/images/codecompletion/"); // bitmaps must be added by order of PARSER_IMG_* consts (which are also TokenCategory enums) const char* imgs[] = { "class_folder.png", // PARSER_IMG_CLASS_FOLDER "class.png", // PARSER_IMG_CLASS "class_private.png", // PARSER_IMG_CLASS_PRIVATE "class_protected.png", // PARSER_IMG_CLASS_PROTECTED "class_public.png", // PARSER_IMG_CLASS_PUBLIC "ctor_private.png", // PARSER_IMG_CTOR_PRIVATE "ctor_protected.png", // PARSER_IMG_CTOR_PROTECTED "ctor_public.png", // PARSER_IMG_CTOR_PUBLIC "dtor_private.png", // PARSER_IMG_DTOR_PRIVATE "dtor_protected.png", // PARSER_IMG_DTOR_PROTECTED "dtor_public.png", // PARSER_IMG_DTOR_PUBLIC "method_private.png", // PARSER_IMG_FUNC_PRIVATE "method_protected.png", // PARSER_IMG_FUNC_PRIVATE "method_public.png", // PARSER_IMG_FUNC_PUBLIC "var_private.png", // PARSER_IMG_VAR_PRIVATE "var_protected.png", // PARSER_IMG_VAR_PROTECTED "var_public.png", // PARSER_IMG_VAR_PUBLIC "macro_def.png", // PARSER_IMG_MACRO_DEF "enum.png", // PARSER_IMG_ENUM "enum_private.png", // PARSER_IMG_ENUM_PRIVATE "enum_protected.png", // PARSER_IMG_ENUM_PROTECTED "enum_public.png", // PARSER_IMG_ENUM_PUBLIC "enumerator.png", // PARSER_IMG_ENUMERATOR "namespace.png", // PARSER_IMG_NAMESPACE "typedef.png", // PARSER_IMG_TYPEDEF "typedef_private.png", // PARSER_IMG_TYPEDEF_PRIVATE "typedef_protected.png", // PARSER_IMG_TYPEDEF_PROTECTED "typedef_public.png", // PARSER_IMG_TYPEDEF_PUBLIC "symbols_folder.png", // PARSER_IMG_SYMBOLS_FOLDER "vars_folder.png", // PARSER_IMG_VARS_FOLDER "funcs_folder.png", // PARSER_IMG_FUNCS_FOLDER "enums_folder.png", // PARSER_IMG_ENUMS_FOLDER "macro_def_folder.png", // PARSER_IMG_MACRO_DEF_FOLDER "others_folder.png", // PARSER_IMG_OTHERS_FOLDER "typedefs_folder.png", // PARSER_IMG_TYPEDEF_FOLDER "macro_use.png", // PARSER_IMG_MACRO_USE "macro_use_private.png", // PARSER_IMG_MACRO_USE_PRIVATE "macro_use_protected.png", // PARSER_IMG_MACRO_USE_PROTECTED "macro_use_public.png", // PARSER_IMG_MACRO_USE_PUBLIC "macro_use_folder.png", // PARSER_IMG_MACRO_USE_FOLDER "cpp_lang.png", // tcLangKeyword nullptr }; for (const char** itr = imgs; *itr; ++itr) m_ImageList.Add(cbLoadBitmap(prefix + wxString::FromUTF8(*itr), wxBITMAP_TYPE_PNG)); EditorColourSet* theme = Manager::Get()->GetEditorManager()->GetColourSet(); wxStringTokenizer tokenizer(theme->GetKeywords(theme->GetHighlightLanguage(wxT("C/C++")), 0)); while (tokenizer.HasMoreTokens()) m_CppKeywords.push_back(tokenizer.GetNextToken()); std::sort(m_CppKeywords.begin(), m_CppKeywords.end()); wxStringVec(m_CppKeywords).swap(m_CppKeywords); typedef cbEventFunctor<ClangPlugin, CodeBlocksEvent> ClEvent; Manager::Get()->RegisterEventSink(cbEVT_EDITOR_OPEN, new ClEvent(this, &ClangPlugin::OnEditorOpen)); Manager::Get()->RegisterEventSink(cbEVT_EDITOR_ACTIVATED, new ClEvent(this, &ClangPlugin::OnEditorActivate)); Manager::Get()->RegisterEventSink(cbEVT_EDITOR_SAVE, new ClEvent(this, &ClangPlugin::OnEditorSave)); Manager::Get()->RegisterEventSink(cbEVT_EDITOR_CLOSE, new ClEvent(this, &ClangPlugin::OnEditorClose)); Manager::Get()->RegisterEventSink(cbEVT_PROJECT_ACTIVATE, new ClEvent(this, &ClangPlugin::OnProjectActivate)); Manager::Get()->RegisterEventSink(cbEVT_PROJECT_FILE_CHANGED, new ClEvent(this, &ClangPlugin::OnProjectFileChanged)); Manager::Get()->RegisterEventSink(cbEVT_PROJECT_OPTIONS_CHANGED, new ClEvent(this, &ClangPlugin::OnProjectOptionsChanged)); Manager::Get()->RegisterEventSink(cbEVT_PROJECT_CLOSE, new ClEvent(this, &ClangPlugin::OnProjectClose)); Connect(idReparseTimer, wxEVT_TIMER, wxTimerEventHandler(ClangPlugin::OnTimer)); Connect(idGotoDeclaration, wxEVT_COMMAND_MENU_SELECTED, /*wxMenuEventHandler*/wxCommandEventHandler(ClangPlugin::OnGotoDeclaration), nullptr, this); //Connect(idReparse, cbEVT_COMMAND_REPARSE, wxCommandEventHandler(ClangPlugin::OnReparse), nullptr, this); Connect(idClangCreateTU, cbEVT_COMMAND_CREATETU, wxCommandEventHandler(ClangPlugin::OnCreateTranslationUnit), nullptr, this); Connect(idClangCreateTU, cbEVT_CLANG_ASYNCTASK_FINISHED, wxEventHandler(ClangPlugin::OnClangCreateTUFinished), nullptr, this); Connect(idClangReparse, cbEVT_CLANG_ASYNCTASK_FINISHED, wxEventHandler(ClangPlugin::OnClangReparseFinished), nullptr, this); Connect(idClangGetDiagnostics, cbEVT_CLANG_ASYNCTASK_FINISHED, wxEventHandler(ClangPlugin::OnClangGetDiagnosticsFinished), nullptr, this); Connect(idClangSyncTask, cbEVT_CLANG_SYNCTASK_FINISHED, wxEventHandler(ClangPlugin::OnClangSyncTaskFinished), nullptr, this); Connect(idClangCodeCompleteTask, cbEVT_CLANG_SYNCTASK_FINISHED, wxEventHandler(ClangPlugin::OnClangSyncTaskFinished), nullptr, this); Connect(idClangGetOccurrencesTask, cbEVT_CLANG_SYNCTASK_FINISHED, wxEventHandler(ClangPlugin::OnClangSyncTaskFinished), nullptr, this); Connect(idClangGetCCDocumentationTask,cbEVT_CLANG_SYNCTASK_FINISHED, wxEventHandler(ClangPlugin::OnClangSyncTaskFinished), nullptr, this); m_EditorHookId = EditorHooks::RegisterHook(new EditorHooks::HookFunctor<ClangPlugin>(this, &ClangPlugin::OnEditorHook)); for ( std::vector<ClangPluginComponent*>::iterator it = m_ComponentList.begin(); it != m_ComponentList.end(); ++it) { (*it)->OnAttach(this); } }
void ClangPlugin::OnAttach() { wxBitmap bmp; wxString prefix = ConfigManager::GetDataFolder() + wxT("/images/codecompletion/"); // bitmaps must be added by order of PARSER_IMG_* consts (which are also TokenCategory enums) bmp = cbLoadBitmap(prefix + wxT("class_folder.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_CLASS_FOLDER bmp = cbLoadBitmap(prefix + wxT("class.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_CLASS bmp = cbLoadBitmap(prefix + wxT("class_private.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_CLASS_PRIVATE bmp = cbLoadBitmap(prefix + wxT("class_protected.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_CLASS_PROTECTED bmp = cbLoadBitmap(prefix + wxT("class_public.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_CLASS_PUBLIC bmp = cbLoadBitmap(prefix + wxT("ctor_private.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_CTOR_PRIVATE bmp = cbLoadBitmap(prefix + wxT("ctor_protected.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_CTOR_PROTECTED bmp = cbLoadBitmap(prefix + wxT("ctor_public.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_CTOR_PUBLIC bmp = cbLoadBitmap(prefix + wxT("dtor_private.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_DTOR_PRIVATE bmp = cbLoadBitmap(prefix + wxT("dtor_protected.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_DTOR_PROTECTED bmp = cbLoadBitmap(prefix + wxT("dtor_public.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_DTOR_PUBLIC bmp = cbLoadBitmap(prefix + wxT("method_private.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_FUNC_PRIVATE bmp = cbLoadBitmap(prefix + wxT("method_protected.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_FUNC_PRIVATE bmp = cbLoadBitmap(prefix + wxT("method_public.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_FUNC_PUBLIC bmp = cbLoadBitmap(prefix + wxT("var_private.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_VAR_PRIVATE bmp = cbLoadBitmap(prefix + wxT("var_protected.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_VAR_PROTECTED bmp = cbLoadBitmap(prefix + wxT("var_public.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_VAR_PUBLIC bmp = cbLoadBitmap(prefix + wxT("macro_def.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_MACRO_DEF bmp = cbLoadBitmap(prefix + wxT("enum.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_ENUM bmp = cbLoadBitmap(prefix + wxT("enum_private.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_ENUM_PRIVATE bmp = cbLoadBitmap(prefix + wxT("enum_protected.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_ENUM_PROTECTED bmp = cbLoadBitmap(prefix + wxT("enum_public.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_ENUM_PUBLIC bmp = cbLoadBitmap(prefix + wxT("enumerator.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_ENUMERATOR bmp = cbLoadBitmap(prefix + wxT("namespace.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_NAMESPACE bmp = cbLoadBitmap(prefix + wxT("typedef.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_TYPEDEF bmp = cbLoadBitmap(prefix + wxT("typedef_private.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_TYPEDEF_PRIVATE bmp = cbLoadBitmap(prefix + wxT("typedef_protected.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_TYPEDEF_PROTECTED bmp = cbLoadBitmap(prefix + wxT("typedef_public.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_TYPEDEF_PUBLIC bmp = cbLoadBitmap(prefix + wxT("symbols_folder.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_SYMBOLS_FOLDER bmp = cbLoadBitmap(prefix + wxT("vars_folder.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_VARS_FOLDER bmp = cbLoadBitmap(prefix + wxT("funcs_folder.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_FUNCS_FOLDER bmp = cbLoadBitmap(prefix + wxT("enums_folder.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_ENUMS_FOLDER bmp = cbLoadBitmap(prefix + wxT("macro_def_folder.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_MACRO_DEF_FOLDER bmp = cbLoadBitmap(prefix + wxT("others_folder.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_OTHERS_FOLDER bmp = cbLoadBitmap(prefix + wxT("typedefs_folder.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_TYPEDEF_FOLDER bmp = cbLoadBitmap(prefix + wxT("macro_use.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_MACRO_USE bmp = cbLoadBitmap(prefix + wxT("macro_use_private.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_MACRO_USE_PRIVATE bmp = cbLoadBitmap(prefix + wxT("macro_use_protected.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_MACRO_USE_PROTECTED bmp = cbLoadBitmap(prefix + wxT("macro_use_public.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_MACRO_USE_PUBLIC bmp = cbLoadBitmap(prefix + wxT("macro_use_folder.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // PARSER_IMG_MACRO_USE_FOLDER bmp = cbLoadBitmap(prefix + wxT("cpp_lang.png"), wxBITMAP_TYPE_PNG); m_ImageList.Add(bmp); // tcLangKeyword EditorColourSet* theme = Manager::Get()->GetEditorManager()->GetColourSet(); wxStringTokenizer tokenizer(theme->GetKeywords(theme->GetHighlightLanguage(wxT("C/C++")), 0)); while (tokenizer.HasMoreTokens()) m_CppKeywords.push_back(tokenizer.GetNextToken()); std::sort(m_CppKeywords.begin(), m_CppKeywords.end()); wxStringVec(m_CppKeywords).swap(m_CppKeywords); typedef cbEventFunctor<ClangPlugin, CodeBlocksEvent> ClEvent; Manager::Get()->RegisterEventSink(cbEVT_EDITOR_OPEN, new ClEvent(this, &ClangPlugin::OnEditorOpen)); Manager::Get()->RegisterEventSink(cbEVT_EDITOR_ACTIVATED, new ClEvent(this, &ClangPlugin::OnEditorActivate)); Connect(idEdOpenTimer, wxEVT_TIMER, wxTimerEventHandler(ClangPlugin::OnTimer)); Connect(idReparseTimer, wxEVT_TIMER, wxTimerEventHandler(ClangPlugin::OnTimer)); Connect(idDiagnosticTimer, wxEVT_TIMER, wxTimerEventHandler(ClangPlugin::OnTimer)); Connect(idGotoDeclaration, wxEVT_COMMAND_MENU_SELECTED, /*wxMenuEventHandler*/wxCommandEventHandler(ClangPlugin::OnGotoDeclaration), nullptr, this); m_EditorHookId = EditorHooks::RegisterHook(new EditorHooks::HookFunctor<ClangPlugin>(this, &ClangPlugin::OnEditorHook)); }