void WinEDA_PcbFrame::RedrawActiveWindow(wxDC * DC, bool EraseBg) /****************************************************************/ /* Trace le PCB, et les elements complementaires ( axes, grille .. ) pour l'ecran actif et ses sous ecran */ { PCB_SCREEN * Screen = GetScreen(); if ( ! m_Pcb || ! Screen ) return; ActiveScreen = GetScreen(); GRSetDrawMode(DC, GR_COPY); if ( EraseBg ) DrawPanel->EraseScreen(DC); DrawPanel->DrawBackGround(DC); Trace_Pcb(DC, GR_OR); TraceWorkSheet(DC, GetScreen()); Affiche_Status_Box(); /* Reaffichage des curseurs */ for( Screen = GetScreen(); Screen != NULL; Screen = Screen->Next() ) { if( m_CurrentScreen->ManageCurseur ) m_CurrentScreen->ManageCurseur(DrawPanel, DC, FALSE); Screen->Trace_Curseur(DrawPanel, DC); } }
void WinEDA_ModuleEditFrame::RedrawActiveWindow(wxDC * DC, bool EraseBg) /**********************************************************************/ /* Trace le PCB, et les elements complementaires ( axes, grille .. ) pour l'ecran actif et ses sous ecran */ { MODULE * Module; PCB_SCREEN * screen = GetScreen(); if ( ! m_Pcb || ! screen ) return; ActiveScreen = screen; GRSetDrawMode(DC, GR_COPY); if ( EraseBg ) DrawPanel->EraseScreen(DC); DrawPanel->DrawBackGround(DC); TraceWorkSheet(DC, screen); Module = (MODULE*) m_Pcb->m_Modules; for ( ; Module != NULL; Module = (MODULE *) Module->Pnext ) { Module->Draw(DrawPanel, DC, wxPoint(0,0), GR_OR); } Affiche_Status_Box(); if( screen->ManageCurseur ) screen->ManageCurseur(DrawPanel, DC, FALSE); /* Reaffichage du curseur */ screen->Trace_Curseur(DrawPanel, DC); screen->ClrRefreshReq(); }
void WinEDA_PcbFindFrame::FindItem(wxCommandEvent& event) /********************************************************/ { PCB_SCREEN * screen = m_Parent->GetScreen(); wxPoint locate_pos; wxString msg; bool succes = FALSE; bool FindMarker = FALSE; MODULE * Module; int StartCount; switch ( event.GetId() ) { case ID_FIND_ITEM: s_ItemCount = 0; break; case ID_FIND_MARKER: s_MarkerCount = 0; case ID_FIND_NEXT_MARKER: FindMarker = TRUE; break; } s_OldStringFound = m_NewText->GetValue(); m_Parent->DrawPanel->GetViewStart(&screen->m_StartVisu.x, &screen->m_StartVisu.y); StartCount = 0; if( FindMarker ) { MARQUEUR * Marker = (MARQUEUR *) m_Parent->m_Pcb->m_Drawings; for( ; Marker != NULL; Marker = (MARQUEUR *)Marker->Pnext) { if( Marker->m_StructType != TYPEMARQUEUR ) continue; StartCount++; if ( StartCount > s_MarkerCount ) { succes = TRUE; locate_pos = Marker->m_Pos; s_MarkerCount++; break; } } } else for ( Module = m_Parent->m_Pcb->m_Modules; Module != NULL; Module = (MODULE*)Module->Pnext) { if( WildCompareString( s_OldStringFound, Module->m_Reference->m_Text.GetData(), FALSE ) ) { StartCount++; if ( StartCount > s_ItemCount ) { succes = TRUE; locate_pos = Module->m_Pos; s_ItemCount++; break; } } if( WildCompareString( s_OldStringFound, Module->m_Value->m_Text.GetData(), FALSE ) ) { StartCount++; if ( StartCount > s_ItemCount ) { succes = TRUE; locate_pos = Module->m_Pos; s_ItemCount++; break; } } } if ( succes ) { /* Il y a peut-etre necessite de recadrer le dessin: */ if( ! m_Parent->DrawPanel->IsPointOnDisplay(locate_pos) ) { screen->m_Curseur = locate_pos; m_Parent->Recadre_Trace(TRUE); } else { // Positionnement du curseur sur l'item screen->Trace_Curseur(m_Parent->DrawPanel, m_DC); screen->m_Curseur = locate_pos; GRMouseWarp(m_Parent->DrawPanel, screen->m_Curseur ); m_Parent->DrawPanel->MouseToCursorSchema(); screen->Trace_Curseur(m_Parent->DrawPanel, m_DC); } if( FindMarker ) msg = _("Marker found"); else msg.Printf( _("<%s> Found"), s_OldStringFound.GetData() ); m_Parent->Affiche_Message(msg); EndModal(1); } else { m_Parent->Affiche_Message(wxEmptyString); if( FindMarker ) msg = _("Marker not found"); else msg.Printf( _("<%s> Not Found"), s_OldStringFound.GetData()); DisplayError(this,msg, 10); } EndModal(0); }