Exemple #1
0
void LIB_VIEW_FRAME::ViewOneLibraryContent( CMP_LIBRARY* Lib, int Flag )
{
    int        NumOfParts = 0;
    LIB_ALIAS* LibEntry;
    wxString   CmpName;

    if( Lib )
        NumOfParts = Lib->GetCount();

    if( NumOfParts == 0 )
    {
        DisplayError( this, wxT( "No library or library is empty!" ) );
        return;
    }

    if( Lib == NULL )
        return;

    if( Flag == NEW_PART )
    {
        DisplayComponentsNamesInLib( this, Lib, CmpName, m_entryName );
    }

    if( Flag == NEXT_PART )
    {
        LibEntry = Lib->GetNextEntry( m_entryName );

        if( LibEntry )
            CmpName = LibEntry->GetName();
    }

    if( Flag == PREVIOUS_PART )
    {
        LibEntry = Lib->GetPreviousEntry( m_entryName );

        if( LibEntry )
            CmpName = LibEntry->GetName();
    }

    m_unit    = 1;
    m_convert = 1;

    LibEntry = Lib->FindEntry( CmpName );
    m_entryName = CmpName;
    DisplayLibInfos();
    Zoom_Automatique( false );
    m_canvas->Refresh( );

    if( m_CmpList )
    {
        int id = m_CmpList->FindString( m_entryName.GetData() );
        if( id >= 0 )
            m_CmpList->SetSelection( id );
    }
    ReCreateHToolbar();
}
void WinEDA_ViewlibFrame::ViewOneLibraryContent(LibraryStruct *Lib, int Flag)
{
int NumOfParts = 0;
EDA_LibComponentStruct *LibEntry, * PreviousLibEntry;
wxString CmpName;
wxClientDC dc(DrawPanel);


	DrawPanel->PrepareGraphicContext(&dc);

	if (Lib) NumOfParts = Lib->m_NumOfParts;

	if (NumOfParts == 0)
		{
		DisplayError(this, wxT("No Library or Library is empty!"));
		return;
		}

	if ( Lib == NULL ) return;

	PQCompFunc((PQCompFuncType) LibraryEntryCompare);
	LibEntry = (EDA_LibComponentStruct *) PQFirst(&Lib->m_Entries, FALSE);

	if( Flag == NEW_PART )
		{
		DisplayComponentsNamesInLib(this, Lib, CmpName, g_CurrentViewComponentName);
		}

	if( Flag == NEXT_PART )
		{
		LibEntry = (EDA_LibComponentStruct *) PQFirst(&Lib->m_Entries, FALSE);
		while ( LibEntry )
			{
			if( LibEntry->m_Name.m_Text == g_CurrentViewComponentName )
				{
				LibEntry = (EDA_LibComponentStruct *)
					PQNext(Lib->m_Entries, LibEntry, NULL);
				break;
				}
			LibEntry = (EDA_LibComponentStruct *)
					PQNext(Lib->m_Entries, LibEntry, NULL);
			}
		if(LibEntry == NULL)
				LibEntry = (EDA_LibComponentStruct *) PQFirst(&Lib->m_Entries, FALSE);
		if( LibEntry ) CmpName = LibEntry->m_Name.m_Text;
		}

	if( Flag == PREVIOUS_PART )
		{
		PreviousLibEntry = NULL;
		LibEntry = (EDA_LibComponentStruct *) PQFirst(&Lib->m_Entries, FALSE);
		while ( LibEntry )
			{
			if( LibEntry->m_Name.m_Text == g_CurrentViewComponentName )
				{
				if( PreviousLibEntry ) break;
				/* else : pointage sur 1er element :
				balayage de la liste et Previous pointera dernier element */
				}

			PreviousLibEntry = LibEntry;
			LibEntry = (EDA_LibComponentStruct *)
					PQNext(Lib->m_Entries, LibEntry, NULL);
			}
		if( PreviousLibEntry )
			CmpName = PreviousLibEntry->m_Name.m_Text;
		}

	g_ViewUnit = 1;
	g_ViewConvert = 1;

	LibEntry = FindLibPart(CmpName,Lib->m_Name, FIND_ALIAS);
	g_CurrentViewComponentName = CmpName;
	DisplayLibInfos();
	Zoom_Automatique(FALSE);
	RedrawActiveWindow(&dc, TRUE);

	if ( m_CmpList )
		{
		int id = m_CmpList->FindString(g_CurrentViewComponentName.GetData());
		if ( id >= 0 ) m_CmpList->SetSelection(id);
		}
	ReCreateHToolbar();
}