Hi all,
Attached are three patches to fix a few issues noted by JP and Clemens.
These need to be applied after my patches from yesterday which are not yet
merged.
Best,
Jon
From 0d0a6cb24f14e3da98d7d941a7a4cf96dcab8e12 Mon Sep 17 00:00:00 2001
From: Jon Evans
Date: Tue, 27 Feb 2018 21:33:41 -0500
Subject: [PATCH 3/3] GerbView: Fix DCode reordering; ensure loaded layers are
visible
---
gerbview/files.cpp | 5 +
gerbview/gerbview_frame.cpp| 21 +
gerbview/gerbview_frame.h | 2 ++
gerbview/gerbview_layer_widget.cpp | 15 +--
gerbview/job_file_reader.cpp | 14 +-
5 files changed, 30 insertions(+), 27 deletions(-)
diff --git a/gerbview/files.cpp b/gerbview/files.cpp
index d19c18f25..2ed1945db 100644
--- a/gerbview/files.cpp
+++ b/gerbview/files.cpp
@@ -231,6 +231,7 @@ bool GERBVIEW_FRAME::loadListOfGerberFiles( const wxString& aPath,
// Read gerber files: each file is loaded on a new GerbView layer
bool success = true;
int layer = GetActiveLayer();
+int visibility = GetVisibleLayers();
// Manage errors when loading files
wxString msg;
@@ -265,6 +266,8 @@ bool GERBVIEW_FRAME::loadListOfGerberFiles( const wxString& aPath,
SetActiveLayer( layer, false );
+visibility |= ( 1 << layer );
+
if( Read_GERBER_File( filename.GetFullPath() ) )
{
UpdateFileHistory( m_lastFileName );
@@ -305,6 +308,8 @@ bool GERBVIEW_FRAME::loadListOfGerberFiles( const wxString& aPath,
mbox.ShowModal();
}
+SetVisibleLayers( visibility );
+
Zoom_Automatique( false );
// Synchronize layers tools with actual active layer:
diff --git a/gerbview/gerbview_frame.cpp b/gerbview/gerbview_frame.cpp
index f73e2afd2..26babda31 100644
--- a/gerbview/gerbview_frame.cpp
+++ b/gerbview/gerbview_frame.cpp
@@ -668,6 +668,27 @@ void GERBVIEW_FRAME::Liste_D_Codes()
}
+void GERBVIEW_FRAME::SortLayersByX2Attributes()
+{
+auto remapping = GetImagesList()->SortImagesByZOrder();
+
+ReFillLayerWidget();
+syncLayerBox( true );
+
+std::unordered_map view_remapping;
+
+for( auto it : remapping )
+{
+view_remapping[ GERBER_DRAW_LAYER( it.first) ] = GERBER_DRAW_LAYER( it.second );
+view_remapping[ GERBER_DCODE_LAYER( GERBER_DRAW_LAYER( it.first) ) ] =
+GERBER_DCODE_LAYER( GERBER_DRAW_LAYER( it.second ) );
+}
+
+GetGalCanvas()->GetView()->ReorderLayerData( view_remapping );
+GetCanvas()->Refresh();
+}
+
+
void GERBVIEW_FRAME::UpdateTitleAndInfo()
{
GERBER_FILE_IMAGE* gerber = GetGbrImage( GetActiveLayer() );
diff --git a/gerbview/gerbview_frame.h b/gerbview/gerbview_frame.h
index ca7e35d12..244f76464 100644
--- a/gerbview/gerbview_frame.h
+++ b/gerbview/gerbview_frame.h
@@ -701,6 +701,8 @@ public:
boolClear_DrawLayers( bool query );
voidErase_Current_DrawLayer( bool query );
+voidSortLayersByX2Attributes();
+
// Conversion function
voidExportDataInPcbnewFormat( wxCommandEvent& event );
diff --git a/gerbview/gerbview_layer_widget.cpp b/gerbview/gerbview_layer_widget.cpp
index 4b7407a86..20e2cd2d1 100644
--- a/gerbview/gerbview_layer_widget.cpp
+++ b/gerbview/gerbview_layer_widget.cpp
@@ -209,20 +209,7 @@ void GERBER_LAYER_WIDGET::onPopupSelection( wxCommandEvent& event )
break;
case ID_SORT_GBR_LAYERS:
-auto remapping = GetImagesList()->SortImagesByZOrder();
-myframe->ReFillLayerWidget();
-myframe->syncLayerBox( true );
-
-std::unordered_map view_remapping;
-
-for( auto it : remapping )
-{
-view_remapping[ GERBER_DRAW_LAYER( it.first) ] = GERBER_DRAW_LAYER( it.second );
-}
-
-myframe->GetGalCanvas()->GetView()->ReorderLayerData( view_remapping );
-
-myframe->GetCanvas()->Refresh();
+myframe->SortLayersByX2Attributes();
break;
}
}
diff --git a/gerbview/job_file_reader.cpp b/gerbview/job_file_reader.cpp
index f6a4b470f..93a1eb226 100644
--- a/gerbview/job_file_reader.cpp
+++ b/gerbview/job_file_reader.cpp
@@ -197,19 +197,7 @@ bool GERBVIEW_FRAME::LoadGerberJobFile( const wxString& aFullFileName )
Zoom_Automatique( false );
-auto remapping = GetImagesList()->SortImagesByZOrder();
-
-ReFillLayerWidget();
-syncLayerBox( true );
-
-std::unordered_map view_remapping;
-
-for( auto it : remapping )
-{
-view_remapping[ GERBER_DRAW_LAYER( it.first) ] = GERBER_DRAW_LAYER( it.second );
-}
-
-GetGalCanvas()->GetView()->ReorderLayerData( view_remapping );
+SortLayersByX2Attributes();
if( !msg.IsEmpty() )
{
--
2.14.1
From 4f01cfacd1699daf5c4627cd48632966af5d6262 Mon Sep 17 00:00:00 2001
From: Jon Evans
Date: Tue, 27 Feb 2018 20:59:47 -0500
Subject: [PATCH 2/3]