dload_menu.cpp
来自「ncbi源码」· C++ 代码 · 共 812 行 · 第 1/2 页
CPP
812 行
x_AddItem(menu_base, new COpenMenuDataEx());#else int items_added = 0; CPluginRegistry::TPlugins plugins = CPluginRegistry::GetPlugins(CPluginCommandSet::e_Data); NON_CONST_ITERATE (CPluginRegistry::TPlugins, iter, plugins) { // verify that we support the 'load' command CPluginHandle plugin = *iter; if ( !plugin.HasCommandSubtype(eDataCommand_load) ) { continue; } string s = plugin.GetMenuItem(); if ( !menu_base.empty() ) { s = menu_base + s; } x_AddItem(s, new COpenMenuData(plugin.GetClassName())); ++items_added; } if (items_added == 0) { x_AddNullItem(menu_base + "(no plugins loaded)"); }#endif}//// AddRecentMenu()// This fills out a new menu to hold the //void CDocLoaderMenuMgr::AddRecentMenu(){ string menu_base = m_Base; if ( !menu_base.empty() ) { menu_base += "/"; } menu_base += "Recent Documents/"; int items_added = 0; ITERATE (CPluginMRUList::Tdata, iter, CDocManager::GetMRUCache().Get()) { ++items_added; CRef<CPluginMRUEntry> entry = *iter; string s = menu_base + "&" + NStr::IntToString(items_added) + " " + entry->GetLabel(); x_AddItem(s, new CRecentMenuData(entry->SetMessage())); } if (items_added == 0) { x_AddNullItem(menu_base + "(no plugins loaded)"); }}//// AddImportMenu()// This fills out a dynamic menu for importing into a given document. If the// parameter 'doc' is NULL, then a menu is produced for importing into every// loaded document.//void CDocLoaderMenuMgr::AddImportMenu(IDocument* doc){ string menu_base = m_Base; if ( !menu_base.empty() ) { menu_base += "/"; } menu_base += "Import/"; int items_added = 0; if (doc) { // we add an import menu for this document only CPluginRegistry::TPlugins plugins = CPluginRegistry::GetPlugins(eDataCommand_import, doc); NON_CONST_ITERATE (CPluginRegistry::TPlugins, iter, plugins) { // verify that we support the 'load' command CPluginHandle plugin = *iter; string s = plugin.GetMenuItem(); if ( !menu_base.empty() ) { s = menu_base + s; } x_AddItem(s, new CImportMenuData(plugin, doc)); ++items_added; } } else if (CDocManager::GetDocuments().size() != 0) { // we add an import menu for all documents NON_CONST_ITERATE (CDocManager::TDocList, doc_iter, CDocManager::GetDocuments()) { doc = *doc_iter; if ( !doc ) { continue; } string base = menu_base + doc->GetShortTitle(); CPluginRegistry::TPlugins plugins = CPluginRegistry::GetPlugins(eDataCommand_import, doc); NON_CONST_ITERATE (CPluginRegistry::TPlugins, iter, plugins) { // verify that we support the 'load' command CPluginHandle plugin = *iter; string s = plugin.GetMenuItem(); if ( !base.empty() ) { s = base + "/" + s; } x_AddItem(s, new CImportMenuData(plugin, doc)); ++items_added; } } } if (items_added == 0) { x_AddNullItem(menu_base + "(no records loaded)"); }}//// AddSearchMenu()// This fills out a new menu to hold the //void CDocLoaderMenuMgr::AddSearchMenu(){ string menu_base = m_Base; if ( !menu_base.empty() ) { menu_base += "/"; } menu_base += "Search/"; int items_added = 0; CPluginRegistry::TPlugins plugins = CPluginRegistry::GetPlugins(CPluginCommandSet::e_Data); NON_CONST_ITERATE (CPluginRegistry::TPlugins, iter, plugins) { // verify that we support the 'load' command CPluginHandle plugin = *iter; if ( !plugin.HasCommandSubtype(eDataCommand_search) ) { continue; } string s = plugin.GetMenuItem(); if ( !menu_base.empty() ) { s = menu_base + s; } x_AddItem(s, new CSearchMenuData(plugin.GetClassName())); ++items_added; } if (items_added == 0) { x_AddNullItem(menu_base + "(no plugins loaded)"); }}//// AddManageMenu()// This fills out a new menu to hold the //void CDocLoaderMenuMgr::AddManageMenu(){ string menu_base = m_Base; if ( !menu_base.empty() ) { menu_base += "/"; } menu_base += "Manage Data Sources/"; int items_added = 0; CPluginRegistry::TPlugins plugins = CPluginRegistry::GetPlugins(CPluginCommandSet::e_Data); NON_CONST_ITERATE (CPluginRegistry::TPlugins, iter, plugins) { // verify that we support the 'load' command CPluginHandle plugin = *iter; if ( !plugin.HasCommandSubtype(eDataCommand_manage) ) { continue; } string s = plugin.GetMenuItem(); if ( !menu_base.empty() ) { s = menu_base + s; } x_AddItem(s, new CManageMenuData(plugin.GetClassName())); ++items_added; } if (items_added == 0) { x_AddNullItem(menu_base + "(no plugins loaded)"); }}//// AddSaveAsMenu()// This fills out a dynamic menu for saving a given document. If the// parameter 'doc' is NULL, then a menu is produced for saving every// loaded document.//void CDocLoaderMenuMgr::AddSaveAsMenu(IDocument* doc){ string menu_base = m_Base; if ( !menu_base.empty() ) { menu_base += "/"; } menu_base += "Save as/"; int items_added = 0; if (doc) { // we add an import menu for this document only CPluginRegistry::TPlugins plugins = CPluginRegistry::GetPlugins(eDataCommand_save, doc); NON_CONST_ITERATE (CPluginRegistry::TPlugins, iter, plugins) { // verify that we support the 'save' command CPluginHandle plugin = *iter; string s = plugin.GetMenuItem(); if ( !menu_base.empty() ) { s = menu_base + s; } x_AddItem(s, new CSaveMenuData(plugin, doc)); ++items_added; } } else if (CDocManager::GetDocuments().size() != 0) { // we add an import menu for all documents NON_CONST_ITERATE (CDocManager::TDocList, doc_iter, CDocManager::GetDocuments()) { doc = *doc_iter; if ( !doc ) { continue; } string base = menu_base + doc->GetShortTitle(); CPluginRegistry::TPlugins plugins = CPluginRegistry::GetPlugins(eDataCommand_save, doc); NON_CONST_ITERATE (CPluginRegistry::TPlugins, iter, plugins) { // verify that we support the 'save' command CPluginHandle plugin = *iter; string s = plugin.GetMenuItem(); if ( !base.empty() ) { s = menu_base + s; } x_AddItem(s, new CSaveMenuData(plugin, doc)); ++items_added; } } } if (items_added == 0) { x_AddNullItem(menu_base + "(no records loaded)"); }}//// AddUnloadMenu()// This produces a menu for explicitly unloading a given document//void CDocLoaderMenuMgr::AddUnloadMenu(IDocument* doc){ string menu_base = m_Base; if ( !menu_base.empty() ) { menu_base += "/"; } menu_base += "Unload/"; int items_added = 0; if (doc) { // we add an import menu for this document only x_AddItem(menu_base, new CUnloadMenuData(doc)); ++items_added; } else if (CDocManager::GetDocuments().size() != 0) { // we add an import menu for all documents NON_CONST_ITERATE (CDocManager::TDocList, doc_iter, CDocManager::GetDocuments()) { doc = *doc_iter; if ( !doc ) { continue; } string s = menu_base + doc->GetShortTitle(); x_AddItem(s, new CUnloadMenuData(*doc_iter)); ++items_added; } } if (items_added == 0) { x_AddNullItem(menu_base + "(no records loaded)"); }}END_NCBI_SCOPE/* * =========================================================================== * $Log: dload_menu.cpp,v $ * Revision 1000.3 2004/06/01 20:43:46 gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.30 * * Revision 1.30 2004/06/01 18:38:35 dicuccio * Fixed multiple definition compiler error * * Revision 1.29 2004/06/01 18:01:58 dicuccio * Updated to match new API in CDocManager. Added commented-out implementation of * new plugin options dialog * * Revision 1.28 2004/05/21 22:27:40 gorelenk * Added PCH ncbi_pch.hpp * * Revision 1.27 2004/05/18 15:06:15 friedman * Removed included tha does not exist * * Revision 1.26 2004/05/18 11:13:24 friedman * Handle adding recently loaded documents into the MRU list. * * Revision 1.25 2004/04/16 14:37:10 dicuccio * Drop unneeded selection buffer parameter * * Revision 1.24 2003/11/06 20:06:29 dicuccio * Moved USING_SCOPE(objects) to implementation files * * Revision 1.23 2003/10/27 17:36:38 dicuccio * Removed #include for pld request status enum * * Revision 1.22 2003/09/16 13:59:00 dicuccio * Code clean-up. Renamed interface class for doc loader menu data * * Revision 1.21 2003/09/04 14:01:51 dicuccio * Introduce IDocument and IView as abstract base classes for CDocument and CView * * Revision 1.20 2003/08/04 17:29:42 dicuccio * Changed menu signature for manage to 'Manage Data Sources' * * Revision 1.19 2003/07/31 16:53:21 dicuccio * Added implementations for search / manage plugin commands * * Revision 1.18 2003/07/21 19:26:48 dicuccio * Changed data class interface from Run() to DoCallback() -- more descriptive. * Modified all menu structures to accept a selection buffer; use selection * buffers internally for all operations. Fixed screening of plugins based on * selection contents * * Revision 1.17 2003/07/14 11:00:22 shomrat * Plugin messageing system related changes * * Revision 1.16 2003/06/25 17:02:54 dicuccio * Split CPluginHandle into a handle (pointer-to-implementation) and * implementation file. Lots of #include file clean-ups. * * Revision 1.15 2003/05/30 14:15:41 dicuccio * Renamed MessageBox to NcbiMessageBox because brain-dead MSVC thinks this is * ::MessageBox and rewrites the symbol as MessageBoxA, which results in an * unresolved external and conflict with the Win32 API :(. * * Revision 1.14 2003/05/30 12:56:50 dicuccio * Converted code to use MessageBox() instead of fl_ask()/fl_message()/fl_alert() * * Revision 1.13 2003/04/29 14:36:49 dicuccio * Fully implemented screening of plugins based on selection content - updated * API to match * * Revision 1.12 2003/04/24 16:26:32 dicuccio * Plugins are now responsible for marshalling documents (not the framework's * function). Also, fixed given API changes to IDocument * * Revision 1.11 2003/04/16 18:19:20 dicuccio * Modified menu handlers to use generic plugin launch mechanism (CallPlugin()) * * Revision 1.10 2003/03/10 22:58:51 kuznets * iterate -> ITERATE * * Revision 1.9 2003/02/26 17:53:31 dicuccio * Cleaned up the dynamic menus to make the dynamic menus resistant to menu * refreshes while the menu callback is running * * Revision 1.8 2003/02/24 13:03:15 dicuccio * Renamed classes in plugin spec: * CArgSeg --> CPluginArgSet * CArgument --> CPluginArg * CPluginArgs --> CPluginCommand * CPluginCommands --> CPluginCommandSet * * Revision 1.7 2003/02/20 19:49:54 dicuccio * Created new plugin architecture, based on ASN.1 spec. Moved GBENCH frameowrk * over to use new plugin architecture. * * Revision 1.6 2003/02/05 19:48:29 dicuccio * Implemented save for data loader dynamic menus * * Revision 1.5 2003/01/15 21:06:51 dicuccio * Removed useless _TRACE() * * Revision 1.4 2003/01/13 13:10:06 dicuccio * Namespace clean-up. Retired namespace gui -> converted all to namespace * ncbi. Moved all FLUID-generated code into namespace ncbi. * * Revision 1.3 2003/01/10 17:36:41 dicuccio * Changed TPluginList --> TPlugins * * Revision 1.2 2002/12/30 17:52:18 dicuccio * Added private menu callback handler - delays call to * CDocManager::UpdateAllViews(), which invalidates current menu data objects. * * Revision 1.1 2002/12/20 19:15:54 dicuccio * Initial revision. * * =========================================================================== */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?