Pcbnew: update immediately the 3D viewer opened from the footprint editor/viewer/wizard after a change.
This commit is contained in:
parent
b823d0b784
commit
305a166e95
|
@ -224,15 +224,23 @@ EDA_3D_VIEWER::~EDA_3D_VIEWER()
|
|||
//m_canvas = 0;
|
||||
}
|
||||
|
||||
|
||||
void EDA_3D_VIEWER::ReloadRequest()
|
||||
{
|
||||
// This will schedule a request to load later
|
||||
if( m_canvas )
|
||||
m_canvas->ReloadRequest( GetBoard(), Prj().Get3DCacheManager() );
|
||||
}
|
||||
|
||||
// This function is used by moduleframe.cpp
|
||||
// while editing the pcb board, so it will not redraw to not slow the pcbnew
|
||||
//m_canvas->Refresh();
|
||||
|
||||
void EDA_3D_VIEWER::NewDisplay( bool aForceImmediateRedraw )
|
||||
{
|
||||
ReloadRequest();
|
||||
|
||||
// After the ReloadRequest call, the refresh often takes a bit of time,
|
||||
// and it is made here only on request.
|
||||
if( aForceImmediateRedraw )
|
||||
m_canvas->Refresh();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -63,12 +63,27 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER
|
|||
|
||||
BOARD* GetBoard() { return Parent()->GetBoard(); }
|
||||
|
||||
/**
|
||||
* Request reloading the 3D view. However the request will be executed
|
||||
* only when the 3D canvas is refreshed.
|
||||
* It allows to prepare changes and request for 3D rebuild only when all
|
||||
* changes are committed.
|
||||
* This is made because the 3D rebuild can take a long time, and this rebuild
|
||||
* cannot always made after each change, for calculation time reason.
|
||||
*/
|
||||
void ReloadRequest();
|
||||
|
||||
// !TODO: review this function
|
||||
// !TODO: this need a way to tell what changed to the reload will only
|
||||
// change the things on a need base
|
||||
void NewDisplay( int dummy = 0 ) { ReloadRequest(); }
|
||||
// !TODO: review this function: it need a way to tell what changed,
|
||||
// to only reload/rebuild things that have really changed
|
||||
/**
|
||||
* Reload and refresh (rebuild) the 3D scene.
|
||||
* Warning: rebuilding the 3D scene can take a bit of time, so
|
||||
* rebuilding the scene can be immediate, or made later, during
|
||||
* the next 3D canvas refresh (on zoom for instance)
|
||||
* @param aForceImmediateRedraw = true to immediately rebuild the 3D scene,
|
||||
* false to wait a refresh later.
|
||||
*/
|
||||
void NewDisplay( bool aForceImmediateRedraw = false );
|
||||
|
||||
/**
|
||||
* Function SetDefaultFileName
|
||||
|
|
|
@ -539,7 +539,7 @@ void DISPLAY_FOOTPRINTS_FRAME::InitDisplay()
|
|||
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();
|
||||
|
||||
if( draw3DFrame )
|
||||
draw3DFrame->NewDisplay();
|
||||
draw3DFrame->NewDisplay( true );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -25,6 +25,9 @@
|
|||
One component per line
|
||||
Fields are
|
||||
Ref,Value, Footprint, Datasheet, Field5, Field4, price
|
||||
|
||||
Command line
|
||||
xsltproc -o "%O.csv" "pathToFile/bom2csv.xsl" "%I"
|
||||
-->
|
||||
|
||||
<!DOCTYPE xsl:stylesheet [
|
||||
|
|
|
@ -24,12 +24,12 @@
|
|||
-->
|
||||
<!--
|
||||
@package
|
||||
Command line:
|
||||
xsltproc -o "%O.csv" "pathToFile/bom2csv.xsl" "%I"
|
||||
|
||||
Output format
|
||||
Reference, Value, Fields[n], Library, Library Ref
|
||||
U1, PIC32MX, Fields[n], KicadLib, PIC
|
||||
|
||||
Command line:
|
||||
xsltproc -o "%O.csv" "pathToFile/bom2csv.xsl" "%I"
|
||||
-->
|
||||
|
||||
<!DOCTYPE xsl:stylesheet [
|
||||
|
|
|
@ -637,11 +637,8 @@ void FOOTPRINT_WIZARD_FRAME::Update3D_Frame( bool aForceReloadFootprint )
|
|||
|
||||
if( aForceReloadFootprint )
|
||||
{
|
||||
draw3DFrame->ReloadRequest();
|
||||
|
||||
// Force 3D screen refresh immediately
|
||||
if( GetBoard()->m_Modules )
|
||||
draw3DFrame->NewDisplay();
|
||||
draw3DFrame->NewDisplay( true );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -190,7 +190,7 @@ void FOOTPRINT_EDIT_FRAME::LoadModuleFromBoard( wxCommandEvent& event )
|
|||
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();
|
||||
|
||||
if( draw3DFrame )
|
||||
draw3DFrame->NewDisplay();
|
||||
draw3DFrame->NewDisplay( true );
|
||||
}
|
||||
|
||||
|
||||
|
@ -370,7 +370,7 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
|||
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();
|
||||
|
||||
if( draw3DFrame )
|
||||
draw3DFrame->NewDisplay();
|
||||
draw3DFrame->NewDisplay( true );
|
||||
|
||||
GetScreen()->ClrModify();
|
||||
}
|
||||
|
@ -494,7 +494,7 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
|||
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();
|
||||
|
||||
if( draw3DFrame )
|
||||
draw3DFrame->NewDisplay();
|
||||
draw3DFrame->NewDisplay( true );
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -556,7 +556,7 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
|||
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();
|
||||
|
||||
if( draw3DFrame )
|
||||
draw3DFrame->NewDisplay();
|
||||
draw3DFrame->NewDisplay( true );
|
||||
}
|
||||
|
||||
GetScreen()->ClrModify();
|
||||
|
|
|
@ -765,7 +765,9 @@ void FOOTPRINT_EDIT_FRAME::OnModify()
|
|||
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();
|
||||
|
||||
if( draw3DFrame )
|
||||
draw3DFrame->ReloadRequest();
|
||||
{
|
||||
draw3DFrame->NewDisplay( true );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -689,11 +689,8 @@ void FOOTPRINT_VIEWER_FRAME::Update3D_Frame( bool aForceReloadFootprint )
|
|||
|
||||
if( aForceReloadFootprint )
|
||||
{
|
||||
draw3DFrame->ReloadRequest();
|
||||
|
||||
// Force 3D screen refresh immediately
|
||||
if( GetBoard()->m_Modules )
|
||||
draw3DFrame->NewDisplay();
|
||||
draw3DFrame->NewDisplay( true );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue