//--------------------------------------------------------- CSG_String CSG_Module_Library::Get_Menu(int i) { CSG_String sMenu; if( Get_Module(i) != NULL ) { bool bAbsolute = false; const SG_Char *sModule = Get_Module(i)->Get_MenuPath(); if( sModule && *sModule && *(sModule + 1) == ':' ) { bAbsolute = sModule[0] == SG_T('A') || sModule[0] == SG_T('a'); sModule += 2; } if( bAbsolute ) // menu path is relative to top menu... { if( sModule && *sModule ) { sMenu.Printf(SG_T("%s"), sModule); } } else // menu path is relative to library menu... { const SG_Char *sLibrary = Get_Info(MLB_INFO_Menu_Path); if( sModule && *sModule ) { if( sLibrary && *sLibrary ) { sMenu.Printf(SG_T("%s|%s"), sLibrary, sModule); } else { sMenu.Printf(SG_T("%s"), sModule); } } else if( sLibrary && *sLibrary ) { sMenu.Printf(SG_T("%s"), sLibrary); } } if( sMenu.Length() > 0 ) { sMenu.Append(SG_T("|")); } sMenu.Append(Get_Info(MLB_INFO_Name)); } return( sMenu ); }
//--------------------------------------------------------- CSG_Module * CSG_Module_Library::Get_Module(const SG_Char *Name) { for(int i=0; i<Get_Count(); i++) { if( !SG_STR_CMP(Name, Get_Module(i)->Get_Name()) ) { return( Get_Module(i) ); } } return( NULL ); }
void DISPLAY_FOOTPRINTS_FRAME::InitDisplay() { wxString msg; CVPCB_MAINFRAME* parentframe = (CVPCB_MAINFRAME *) GetParent(); wxString footprintName = parentframe->m_footprintListBox->GetSelectedFootprint(); if( !footprintName.IsEmpty() ) { msg.Printf( _( "Footprint: %s" ), GetChars( footprintName ) ); SetTitle( msg ); const FOOTPRINT_INFO* module_info = parentframe->m_footprints.GetModuleInfo( footprintName ); const wxChar* libname; if( module_info ) libname = GetChars( module_info->GetNickname() ); else libname = GetChars( wxT( "???" ) ); msg.Printf( _( "Lib: %s" ), libname ); SetStatusText( msg, 0 ); if( GetBoard()->m_Modules.GetCount() ) { // there is only one module in the list GetBoard()->m_Modules.DeleteAll(); } MODULE* module = Get_Module( footprintName ); if( module ) GetBoard()->m_Modules.PushBack( module ); Zoom_Automatique( false ); } else // No footprint to display. Erase old footprint, if any { if( GetBoard()->m_Modules.GetCount() ) { GetBoard()->m_Modules.DeleteAll(); Zoom_Automatique( false ); SetStatusText( wxEmptyString, 0 ); } } // Display new cursor coordinates and zoom value: UpdateStatusBar(); GetCanvas()->Refresh(); EDA_3D_FRAME* draw3DFrame = Get3DViewerFrame(); if( draw3DFrame ) draw3DFrame->NewDisplay(); }
//--------------------------------------------------------- CSG_String CSG_Module_Library::Get_Summary(bool bHTML) { CSG_String s; if( bHTML ) { s.Printf( SG_T("%s: <b>%s</b><br>%s: <i>%s</i><br>%s: <i>%s</i><br>%s: <i>%s</i><hr>%s"), LNG("[CAP] Module Library") , Get_Info(MLB_INFO_Name), LNG("[CAP] Author") , Get_Info(MLB_INFO_Author), LNG("[CAP] Version") , Get_Info(MLB_INFO_Version), LNG("[CAP] File") , Get_File_Name().c_str(), Get_Info(MLB_INFO_Description) ); s.Append(CSG_String::Format(SG_T("<hr><b>%s:<ul>"), LNG("[CAP] Modules"))); for(int i=0; i<Get_Count(); i++) { s.Append(CSG_String::Format(SG_T("<li>%s</li>"), Get_Module(i)->Get_Name())); } s.Append(SG_T("</ul>")); s.Replace(SG_T("\n"), SG_T("<br>")); } else { s.Printf( SG_T("%s: %s\n%s: %s\n%s: %s\n%s: %s\n\n%s"), LNG("[CAP] Module Library") , Get_Info(MLB_INFO_Name), LNG("[CAP] Author") , Get_Info(MLB_INFO_Author), LNG("[CAP] Version") , Get_Info(MLB_INFO_Version), LNG("[CAP] File") , Get_File_Name().c_str(), Get_Info(MLB_INFO_Description) ); s.Append(CSG_String::Format(SG_T("\n\n%s:\n"), LNG("[CAP] Modules"))); for(int i=0; i<Get_Count(); i++) { s.Append(CSG_String::Format(SG_T("- %s\n"), Get_Module(i)->Get_Name())); } } return( s ); }
CSG_Module_Grid_Interactive * CSG_Module_Library::Get_Module_Grid_I(const SG_Char *Name) { CSG_Module *pModule = Get_Module(Name); return( pModule && pModule->Get_Type() == MODULE_TYPE_Grid_Interactive ? (CSG_Module_Grid_Interactive *)pModule : NULL ); }
//--------------------------------------------------------- CSG_Module_Grid_Interactive * CSG_Module_Library::Get_Module_Grid_I(int i) { CSG_Module *pModule = Get_Module(i); return( pModule && pModule->Get_Type() == MODULE_TYPE_Grid_Interactive ? (CSG_Module_Grid_Interactive *)pModule : NULL ); }
//--------------------------------------------------------- CSG_Module_Grid * CSG_Module_Library::Get_Module_Grid(int i) { CSG_Module *pModule = Get_Module(i); return( pModule && pModule->Get_Type() == MODULE_TYPE_Grid ? (CSG_Module_Grid *)pModule : NULL ); }
//--------------------------------------------------------- bool CSG_Module_Library::Create(const CSG_String &File_Name) { Destroy(); TSG_PFNC_MLB_Initialize MLB_Initialize; TSG_PFNC_MLB_Get_Interface MLB_Get_Interface; wxString sPath; wxFileName fName(File_Name.c_str()); fName.MakeAbsolute(); m_File_Name = fName.GetFullPath(); //----------------------------------------------------- if( wxGetEnv(ENV_LIB_PATH, &sPath) && sPath.Length() > 0 ) { wxSetEnv(ENV_LIB_PATH, CSG_String::Format(SG_T("%s%c%s"), sPath.c_str(), ENV_LIB_SEPA, SG_File_Get_Path(m_File_Name).c_str())); } else { wxSetEnv(ENV_LIB_PATH, SG_File_Get_Path(m_File_Name).c_str()); } //----------------------------------------------------- if( m_pLibrary->Load(m_File_Name.c_str()) && (MLB_Get_Interface = (TSG_PFNC_MLB_Get_Interface) m_pLibrary->GetSymbol(SYMBOL_MLB_Get_Interface)) != NULL && (MLB_Initialize = (TSG_PFNC_MLB_Initialize) m_pLibrary->GetSymbol(SYMBOL_MLB_Initialize) ) != NULL && MLB_Initialize(m_File_Name) ) { m_pInterface = MLB_Get_Interface(); } //----------------------------------------------------- if( sPath.Length() > 0 ) { wxSetEnv(ENV_LIB_PATH, sPath); } else { wxUnsetEnv(ENV_LIB_PATH); } //----------------------------------------------------- if( Get_Count() > 0 ) { for(int i=0; i<Get_Count(); i++) Get_Module(i)->Set_Managed(false); return( true ); } Destroy(); return( false ); }