Switch the board footprint properties window to use the new 3d models panel
This allows it to also get the badge showing errors in the panel.
This commit is contained in:
parent
1a4a3400ba
commit
befd30a1a1
|
@ -41,6 +41,8 @@
|
||||||
#include <widgets/wx_grid.h>
|
#include <widgets/wx_grid.h>
|
||||||
#include <settings/settings_manager.h>
|
#include <settings/settings_manager.h>
|
||||||
|
|
||||||
|
#include <panel_fp_properties_3d_model.h>
|
||||||
|
|
||||||
#include "3d_cache/dialogs/3d_cache_dialogs.h"
|
#include "3d_cache/dialogs/3d_cache_dialogs.h"
|
||||||
#include "3d_cache/dialogs/panel_preview_3d_model.h"
|
#include "3d_cache/dialogs/panel_preview_3d_model.h"
|
||||||
|
|
||||||
|
@ -53,18 +55,19 @@ int DIALOG_FOOTPRINT_PROPERTIES::m_page = 0; // remember the last open page
|
||||||
DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES( PCB_EDIT_FRAME* aParent,
|
DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES( PCB_EDIT_FRAME* aParent,
|
||||||
FOOTPRINT* aFootprint ) :
|
FOOTPRINT* aFootprint ) :
|
||||||
DIALOG_FOOTPRINT_PROPERTIES_BASE( aParent ),
|
DIALOG_FOOTPRINT_PROPERTIES_BASE( aParent ),
|
||||||
|
m_frame( aParent ),
|
||||||
|
m_footprint( aFootprint ),
|
||||||
m_posX( aParent, m_XPosLabel, m_ModPositionX, m_XPosUnit ),
|
m_posX( aParent, m_XPosLabel, m_ModPositionX, m_XPosUnit ),
|
||||||
m_posY( aParent, m_YPosLabel, m_ModPositionY, m_YPosUnit ),
|
m_posY( aParent, m_YPosLabel, m_ModPositionY, m_YPosUnit ),
|
||||||
m_orientValidator( 3, &m_orientValue ),
|
m_orientValidator( 3, &m_orientValue ),
|
||||||
m_netClearance( aParent, m_NetClearanceLabel, m_NetClearanceCtrl, m_NetClearanceUnits ),
|
m_netClearance( aParent, m_NetClearanceLabel, m_NetClearanceCtrl, m_NetClearanceUnits ),
|
||||||
m_solderMask( aParent, m_SolderMaskMarginLabel, m_SolderMaskMarginCtrl, m_SolderMaskMarginUnits ),
|
m_solderMask( aParent, m_SolderMaskMarginLabel, m_SolderMaskMarginCtrl, m_SolderMaskMarginUnits ),
|
||||||
m_solderPaste( aParent, m_SolderPasteMarginLabel, m_SolderPasteMarginCtrl, m_SolderPasteMarginUnits ),
|
m_solderPaste( aParent, m_SolderPasteMarginLabel, m_SolderPasteMarginCtrl, m_SolderPasteMarginUnits ),
|
||||||
m_initialFocus( true ),
|
m_returnValue( FP_PROPS_CANCEL )
|
||||||
m_inSelect( false )
|
|
||||||
{
|
{
|
||||||
m_frame = aParent;
|
// Create the 3D models page
|
||||||
m_footprint = aFootprint;
|
m_3dPanel = new PANEL_FP_PROPERTIES_3D_MODEL( m_frame, m_footprint, this, m_NoteBook );
|
||||||
m_returnValue = FP_PROPS_CANCEL;
|
m_NoteBook->AddPage( m_3dPanel, _("3D Models"), false );
|
||||||
|
|
||||||
// Configure display origin transforms
|
// Configure display origin transforms
|
||||||
m_posX.SetCoordType( ORIGIN_TRANSFORMS::ABS_X_COORD );
|
m_posX.SetCoordType( ORIGIN_TRANSFORMS::ABS_X_COORD );
|
||||||
|
@ -87,48 +90,19 @@ DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES( PCB_EDIT_FRAME* aParen
|
||||||
|
|
||||||
// Give a bit more room for combobox editors
|
// Give a bit more room for combobox editors
|
||||||
m_itemsGrid->SetDefaultRowSize( m_itemsGrid->GetDefaultRowSize() + 4 );
|
m_itemsGrid->SetDefaultRowSize( m_itemsGrid->GetDefaultRowSize() + 4 );
|
||||||
m_modelsGrid->SetDefaultRowSize( m_modelsGrid->GetDefaultRowSize() + 4 );
|
|
||||||
|
|
||||||
m_itemsGrid->SetTable( m_texts );
|
m_itemsGrid->SetTable( m_texts );
|
||||||
m_itemsGrid->PushEventHandler( new GRID_TRICKS( m_itemsGrid ) );
|
m_itemsGrid->PushEventHandler( new GRID_TRICKS( m_itemsGrid ) );
|
||||||
m_modelsGrid->PushEventHandler( new GRID_TRICKS( m_modelsGrid ) );
|
|
||||||
|
|
||||||
PCBNEW_SETTINGS* cfg = m_frame->GetPcbNewSettings();
|
PCBNEW_SETTINGS* cfg = m_frame->GetPcbNewSettings();
|
||||||
|
|
||||||
// Show/hide text item columns according to the user's preference
|
// Show/hide text item columns according to the user's preference
|
||||||
m_itemsGrid->ShowHideColumns( cfg->m_FootprintTextShownColumns );
|
m_itemsGrid->ShowHideColumns( cfg->m_FootprintTextShownColumns );
|
||||||
|
|
||||||
// Set up the 3D models grid
|
|
||||||
// Path selector
|
|
||||||
if( cfg->m_lastFootprint3dDir.IsEmpty() )
|
|
||||||
{
|
|
||||||
wxGetEnv( KICAD6_3DMODEL_DIR, &cfg->m_lastFootprint3dDir );
|
|
||||||
}
|
|
||||||
|
|
||||||
wxGridCellAttr* attr = new wxGridCellAttr;
|
|
||||||
attr->SetEditor( new GRID_CELL_PATH_EDITOR( this, m_modelsGrid, &cfg->m_lastFootprint3dDir,
|
|
||||||
"*.*", true, Prj().GetProjectPath() ) );
|
|
||||||
m_modelsGrid->SetColAttr( 0, attr );
|
|
||||||
|
|
||||||
// Show checkbox
|
|
||||||
attr = new wxGridCellAttr;
|
|
||||||
attr->SetRenderer( new wxGridCellBoolRenderer() );
|
|
||||||
attr->SetReadOnly(); // not really; we delegate interactivity to GRID_TRICKS
|
|
||||||
attr->SetAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
|
|
||||||
m_modelsGrid->SetColAttr( 1, attr );
|
|
||||||
m_modelsGrid->SetWindowStyleFlag( m_modelsGrid->GetWindowStyle() & ~wxHSCROLL );
|
|
||||||
m_modelsGrid->SetSelectionMode( wxGrid::wxGridSelectRows );
|
|
||||||
|
|
||||||
m_orientValidator.SetRange( -360.0, 360.0 );
|
m_orientValidator.SetRange( -360.0, 360.0 );
|
||||||
m_OrientValueCtrl->SetValidator( m_orientValidator );
|
m_OrientValueCtrl->SetValidator( m_orientValidator );
|
||||||
m_orientValidator.SetWindow( m_OrientValueCtrl );
|
m_orientValidator.SetWindow( m_OrientValueCtrl );
|
||||||
|
|
||||||
aParent->Prj().Get3DCacheManager()->GetResolver()->SetProgramBase( &Pgm() );
|
|
||||||
|
|
||||||
m_previewPane = new PANEL_PREVIEW_3D_MODEL( m_Panel3D, m_frame, m_footprint, &m_shapes3D_list );
|
|
||||||
|
|
||||||
bLowerSizer3D->Add( m_previewPane, 1, wxEXPAND, 5 );
|
|
||||||
|
|
||||||
// Set font size for items showing long strings:
|
// Set font size for items showing long strings:
|
||||||
wxFont infoFont = KIUI::GetInfoFont();
|
wxFont infoFont = KIUI::GetInfoFont();
|
||||||
#if __WXMAC__
|
#if __WXMAC__
|
||||||
|
@ -153,16 +127,10 @@ DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES( PCB_EDIT_FRAME* aParen
|
||||||
m_delayedFocusRow = 0;
|
m_delayedFocusRow = 0;
|
||||||
m_delayedFocusColumn = 0;
|
m_delayedFocusColumn = 0;
|
||||||
}
|
}
|
||||||
else if ( m_page == 1 )
|
else if( m_page == 1 )
|
||||||
{
|
{
|
||||||
SetInitialFocus( m_NetClearanceCtrl );
|
SetInitialFocus( m_NetClearanceCtrl );
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
m_delayedFocusGrid = m_modelsGrid;
|
|
||||||
m_delayedFocusRow = 0;
|
|
||||||
m_delayedFocusColumn = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_sdbSizerStdButtonsOK->SetDefault();
|
m_sdbSizerStdButtonsOK->SetDefault();
|
||||||
|
|
||||||
|
@ -171,9 +139,6 @@ DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES( PCB_EDIT_FRAME* aParen
|
||||||
// Configure button logos
|
// Configure button logos
|
||||||
m_bpAdd->SetBitmap( KiBitmap( BITMAPS::small_plus ) );
|
m_bpAdd->SetBitmap( KiBitmap( BITMAPS::small_plus ) );
|
||||||
m_bpDelete->SetBitmap( KiBitmap( BITMAPS::small_trash ) );
|
m_bpDelete->SetBitmap( KiBitmap( BITMAPS::small_trash ) );
|
||||||
m_buttonAdd->SetBitmap( KiBitmap( BITMAPS::small_plus ) );
|
|
||||||
m_buttonBrowse->SetBitmap( KiBitmap( BITMAPS::small_folder ) );
|
|
||||||
m_buttonRemove->SetBitmap( KiBitmap( BITMAPS::small_trash ) );
|
|
||||||
|
|
||||||
finishDialogSettings();
|
finishDialogSettings();
|
||||||
}
|
}
|
||||||
|
@ -189,7 +154,6 @@ DIALOG_FOOTPRINT_PROPERTIES::~DIALOG_FOOTPRINT_PROPERTIES()
|
||||||
|
|
||||||
// Delete the GRID_TRICKS.
|
// Delete the GRID_TRICKS.
|
||||||
m_itemsGrid->PopEventHandler( true );
|
m_itemsGrid->PopEventHandler( true );
|
||||||
m_modelsGrid->PopEventHandler( true );
|
|
||||||
|
|
||||||
// free the memory used by all models, otherwise models which were
|
// free the memory used by all models, otherwise models which were
|
||||||
// browsed but not used would consume memory
|
// browsed but not used would consume memory
|
||||||
|
@ -198,8 +162,6 @@ DIALOG_FOOTPRINT_PROPERTIES::~DIALOG_FOOTPRINT_PROPERTIES()
|
||||||
// the GL canvas has to be visible before it is destroyed
|
// the GL canvas has to be visible before it is destroyed
|
||||||
m_page = m_NoteBook->GetSelection();
|
m_page = m_NoteBook->GetSelection();
|
||||||
m_NoteBook->SetSelection( 1 );
|
m_NoteBook->SetSelection( 1 );
|
||||||
|
|
||||||
delete m_previewPane;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -286,11 +248,11 @@ bool DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow()
|
||||||
if( !m_PanelGeneral->TransferDataToWindow() )
|
if( !m_PanelGeneral->TransferDataToWindow() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if( !m_Panel3D->TransferDataToWindow() )
|
// Add the models to the panel
|
||||||
|
if( !m_3dPanel->TransferDataToWindow() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Footprint Texts
|
// Footprint Texts
|
||||||
|
|
||||||
m_texts->push_back( m_footprint->Reference() );
|
m_texts->push_back( m_footprint->Reference() );
|
||||||
m_texts->push_back( m_footprint->Value() );
|
m_texts->push_back( m_footprint->Value() );
|
||||||
|
|
||||||
|
@ -381,30 +343,6 @@ bool DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow()
|
||||||
case ZONE_CONNECTION::NONE: m_ZoneConnectionChoice->SetSelection( 3 ); break;
|
case ZONE_CONNECTION::NONE: m_ZoneConnectionChoice->SetSelection( 3 ); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3D Settings
|
|
||||||
m_shapes3D_list.clear();
|
|
||||||
m_modelsGrid->DeleteRows( 0, m_modelsGrid->GetNumberRows() );
|
|
||||||
|
|
||||||
wxString origPath, alias, shortPath;
|
|
||||||
FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
|
|
||||||
|
|
||||||
for( const FP_3DMODEL& model : m_footprint->Models() )
|
|
||||||
{
|
|
||||||
m_shapes3D_list.push_back( model );
|
|
||||||
origPath = model.m_Filename;
|
|
||||||
|
|
||||||
if( res && res->SplitAlias( origPath, alias, shortPath ) )
|
|
||||||
origPath = alias + wxT( ":" ) + shortPath;
|
|
||||||
|
|
||||||
m_modelsGrid->AppendRows( 1 );
|
|
||||||
int row = m_modelsGrid->GetNumberRows() - 1;
|
|
||||||
m_modelsGrid->SetCellValue( row, 0, origPath );
|
|
||||||
m_modelsGrid->SetCellValue( row, 1, model.m_Show ? wxT( "1" ) : wxT( "0" ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
select3DModel( 0 ); // will clamp idx within bounds
|
|
||||||
m_previewPane->UpdateDummyFootprint();
|
|
||||||
|
|
||||||
// Show the footprint's FPID.
|
// Show the footprint's FPID.
|
||||||
m_tcLibraryID->SetValue( m_footprint->GetFPID().Format() );
|
m_tcLibraryID->SetValue( m_footprint->GetFPID().Format() );
|
||||||
|
|
||||||
|
@ -431,7 +369,6 @@ bool DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow()
|
||||||
}
|
}
|
||||||
|
|
||||||
m_itemsGrid->SetRowLabelSize( m_itemsGrid->GetVisibleWidth( -1, false, true, true ) );
|
m_itemsGrid->SetRowLabelSize( m_itemsGrid->GetVisibleWidth( -1, false, true, true ) );
|
||||||
m_modelsGrid->SetColSize( 1, m_modelsGrid->GetVisibleWidth( 1, true, false, false ) );
|
|
||||||
|
|
||||||
Layout();
|
Layout();
|
||||||
adjustGridColumns( m_itemsGrid->GetRect().GetWidth() );
|
adjustGridColumns( m_itemsGrid->GetRect().GetWidth() );
|
||||||
|
@ -440,185 +377,6 @@ bool DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_FOOTPRINT_PROPERTIES::select3DModel( int aModelIdx )
|
|
||||||
{
|
|
||||||
m_inSelect = true;
|
|
||||||
|
|
||||||
aModelIdx = std::max( 0, aModelIdx );
|
|
||||||
aModelIdx = std::min( aModelIdx, m_modelsGrid->GetNumberRows() - 1 );
|
|
||||||
|
|
||||||
if( m_modelsGrid->GetNumberRows() )
|
|
||||||
{
|
|
||||||
m_modelsGrid->SelectRow( aModelIdx );
|
|
||||||
m_modelsGrid->SetGridCursor( aModelIdx, 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
m_previewPane->SetSelectedModel( aModelIdx );
|
|
||||||
|
|
||||||
m_inSelect = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_FOOTPRINT_PROPERTIES::On3DModelSelected( wxGridEvent& aEvent )
|
|
||||||
{
|
|
||||||
if( !m_inSelect )
|
|
||||||
select3DModel( aEvent.GetRow() );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_FOOTPRINT_PROPERTIES::On3DModelCellChanged( wxGridEvent& aEvent )
|
|
||||||
{
|
|
||||||
if( aEvent.GetCol() == 0 )
|
|
||||||
{
|
|
||||||
bool hasAlias = false;
|
|
||||||
FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
|
|
||||||
wxString filename = m_modelsGrid->GetCellValue( aEvent.GetRow(), 0 );
|
|
||||||
|
|
||||||
filename.Replace( "\n", "" );
|
|
||||||
filename.Replace( "\r", "" );
|
|
||||||
filename.Replace( "\t", "" );
|
|
||||||
|
|
||||||
if( filename.empty() || !res->ValidateFileName( filename, hasAlias ) )
|
|
||||||
{
|
|
||||||
m_delayedErrorMessage = wxString::Format( _( "Invalid filename: %s" ), filename );
|
|
||||||
m_delayedFocusGrid = m_modelsGrid;
|
|
||||||
m_delayedFocusRow = aEvent.GetRow();
|
|
||||||
m_delayedFocusColumn = aEvent.GetCol();
|
|
||||||
aEvent.Veto();
|
|
||||||
}
|
|
||||||
|
|
||||||
// if the user has specified an alias in the name then prepend ':'
|
|
||||||
if( hasAlias )
|
|
||||||
filename.insert( 0, wxT( ":" ) );
|
|
||||||
|
|
||||||
#ifdef __WINDOWS__
|
|
||||||
// In Kicad files, filenames and paths are stored using Unix notation
|
|
||||||
filename.Replace( wxT( "\\" ), wxT( "/" ) );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
m_shapes3D_list[ aEvent.GetRow() ].m_Filename = filename;
|
|
||||||
m_modelsGrid->SetCellValue( aEvent.GetRow(), 0, filename );
|
|
||||||
}
|
|
||||||
else if( aEvent.GetCol() == 1 )
|
|
||||||
{
|
|
||||||
wxString showValue = m_modelsGrid->GetCellValue( aEvent.GetRow(), 1 );
|
|
||||||
|
|
||||||
m_shapes3D_list[ aEvent.GetRow() ].m_Show = ( showValue == wxT( "1" ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
m_previewPane->UpdateDummyFootprint();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_FOOTPRINT_PROPERTIES::OnRemove3DModel( wxCommandEvent& )
|
|
||||||
{
|
|
||||||
m_modelsGrid->CommitPendingChanges( true /* quiet mode */ );
|
|
||||||
|
|
||||||
int idx = m_modelsGrid->GetGridCursorRow();
|
|
||||||
|
|
||||||
if( idx >= 0 && m_modelsGrid->GetNumberRows() && !m_shapes3D_list.empty() )
|
|
||||||
{
|
|
||||||
m_shapes3D_list.erase( m_shapes3D_list.begin() + idx );
|
|
||||||
m_modelsGrid->DeleteRows( idx, 1 );
|
|
||||||
|
|
||||||
select3DModel( idx ); // will clamp idx within bounds
|
|
||||||
m_previewPane->UpdateDummyFootprint();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_FOOTPRINT_PROPERTIES::OnAdd3DModel( wxCommandEvent& )
|
|
||||||
{
|
|
||||||
if( !m_modelsGrid->CommitPendingChanges() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
int selected = m_modelsGrid->GetGridCursorRow();
|
|
||||||
|
|
||||||
PROJECT& prj = Prj();
|
|
||||||
FP_3DMODEL model;
|
|
||||||
|
|
||||||
wxString initialpath = prj.GetRString( PROJECT::VIEWER_3D_PATH );
|
|
||||||
wxString sidx = prj.GetRString( PROJECT::VIEWER_3D_FILTER_INDEX );
|
|
||||||
int filter = 0;
|
|
||||||
|
|
||||||
// If the PROJECT::VIEWER_3D_PATH hasn't been set yet, use the KICAD6_3DMODEL_DIR environment
|
|
||||||
// variable and fall back to the project path if necessary.
|
|
||||||
if( initialpath.IsEmpty() )
|
|
||||||
{
|
|
||||||
if( !wxGetEnv( "KICAD6_3DMODEL_DIR", &initialpath ) || initialpath.IsEmpty() )
|
|
||||||
initialpath = prj.GetProjectPath();
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !sidx.empty() )
|
|
||||||
{
|
|
||||||
long tmp;
|
|
||||||
sidx.ToLong( &tmp );
|
|
||||||
|
|
||||||
if( tmp > 0 && tmp <= INT_MAX )
|
|
||||||
filter = (int) tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !S3D::Select3DModel( this, Prj().Get3DCacheManager(), initialpath, filter, &model )
|
|
||||||
|| model.m_Filename.empty() )
|
|
||||||
{
|
|
||||||
select3DModel( selected );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
prj.SetRString( PROJECT::VIEWER_3D_PATH, initialpath );
|
|
||||||
sidx = wxString::Format( wxT( "%i" ), filter );
|
|
||||||
prj.SetRString( PROJECT::VIEWER_3D_FILTER_INDEX, sidx );
|
|
||||||
FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
|
|
||||||
wxString alias;
|
|
||||||
wxString shortPath;
|
|
||||||
wxString filename = model.m_Filename;
|
|
||||||
|
|
||||||
if( res && res->SplitAlias( filename, alias, shortPath ) )
|
|
||||||
filename = alias + wxT( ":" ) + shortPath;
|
|
||||||
|
|
||||||
#ifdef __WINDOWS__
|
|
||||||
// In KiCad files, filenames and paths are stored using Unix notation
|
|
||||||
model.m_Filename.Replace( "\\", "/" );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
model.m_Show = true;
|
|
||||||
m_shapes3D_list.push_back( model );
|
|
||||||
|
|
||||||
int idx = m_modelsGrid->GetNumberRows();
|
|
||||||
m_modelsGrid->AppendRows( 1 );
|
|
||||||
m_modelsGrid->SetCellValue( idx, 0, filename );
|
|
||||||
m_modelsGrid->SetCellValue( idx, 1, wxT( "1" ) );
|
|
||||||
|
|
||||||
select3DModel( idx );
|
|
||||||
m_previewPane->UpdateDummyFootprint();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_FOOTPRINT_PROPERTIES::OnAdd3DRow( wxCommandEvent& )
|
|
||||||
{
|
|
||||||
if( !m_modelsGrid->CommitPendingChanges() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
FP_3DMODEL model;
|
|
||||||
|
|
||||||
model.m_Show = true;
|
|
||||||
m_shapes3D_list.push_back( model );
|
|
||||||
|
|
||||||
int row = m_modelsGrid->GetNumberRows();
|
|
||||||
m_modelsGrid->AppendRows( 1 );
|
|
||||||
m_modelsGrid->SetCellValue( row, 1, wxT( "1" ) );
|
|
||||||
|
|
||||||
select3DModel( row );
|
|
||||||
|
|
||||||
m_modelsGrid->SetFocus();
|
|
||||||
m_modelsGrid->MakeCellVisible( row, 0 );
|
|
||||||
m_modelsGrid->SetGridCursor( row, 0 );
|
|
||||||
|
|
||||||
m_modelsGrid->EnableCellEditControl( true );
|
|
||||||
m_modelsGrid->ShowCellEditControl();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool DIALOG_FOOTPRINT_PROPERTIES::Validate()
|
bool DIALOG_FOOTPRINT_PROPERTIES::Validate()
|
||||||
{
|
{
|
||||||
if( !m_itemsGrid->CommitPendingChanges() )
|
if( !m_itemsGrid->CommitPendingChanges() )
|
||||||
|
@ -661,7 +419,9 @@ bool DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow()
|
||||||
if( !m_itemsGrid->CommitPendingChanges() )
|
if( !m_itemsGrid->CommitPendingChanges() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if( !m_modelsGrid->CommitPendingChanges() )
|
// This only commits the editor, model updating is done below so it is inside
|
||||||
|
// the commit
|
||||||
|
if( !m_3dPanel->TransferDataFromWindow() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
auto view = m_frame->GetCanvas()->GetView();
|
auto view = m_frame->GetCanvas()->GetView();
|
||||||
|
@ -774,9 +534,11 @@ bool DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow()
|
||||||
if( change_layer )
|
if( change_layer )
|
||||||
m_footprint->Flip( m_footprint->GetPosition(), m_frame->Settings().m_FlipLeftRight );
|
m_footprint->Flip( m_footprint->GetPosition(), m_frame->Settings().m_FlipLeftRight );
|
||||||
|
|
||||||
std::list<FP_3DMODEL>* draw3D = &m_footprint->Models();
|
// Copy the models from the panel to the footprint
|
||||||
draw3D->clear();
|
std::vector<FP_3DMODEL>& panelList = m_3dPanel->GetModelList();
|
||||||
draw3D->insert( draw3D->end(), m_shapes3D_list.begin(), m_shapes3D_list.end() );
|
std::list<FP_3DMODEL>* fpList = &m_footprint->Models();
|
||||||
|
fpList->clear();
|
||||||
|
fpList->insert( fpList->end(), panelList.begin(), panelList.end() );
|
||||||
|
|
||||||
// This is a simple edit, we must create an undo entry
|
// This is a simple edit, we must create an undo entry
|
||||||
if( m_footprint->GetEditFlags() == 0 ) // i.e. not edited, or moved
|
if( m_footprint->GetEditFlags() == 0 ) // i.e. not edited, or moved
|
||||||
|
@ -850,18 +612,10 @@ void DIALOG_FOOTPRINT_PROPERTIES::OnDeleteField( wxCommandEvent& )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_FOOTPRINT_PROPERTIES::Cfg3DPath( wxCommandEvent& )
|
|
||||||
{
|
|
||||||
if( S3D::Configure3DPaths( this, Prj().Get3DCacheManager()->GetResolver() ) )
|
|
||||||
m_previewPane->UpdateDummyFootprint();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_FOOTPRINT_PROPERTIES::adjustGridColumns( int aWidth )
|
void DIALOG_FOOTPRINT_PROPERTIES::adjustGridColumns( int aWidth )
|
||||||
{
|
{
|
||||||
// Account for scroll bars
|
// Account for scroll bars
|
||||||
int itemsWidth = aWidth - ( m_itemsGrid->GetSize().x - m_itemsGrid->GetClientSize().x );
|
int itemsWidth = aWidth - ( m_itemsGrid->GetSize().x - m_itemsGrid->GetClientSize().x );
|
||||||
int modelsWidth = aWidth - ( m_modelsGrid->GetSize().x - m_modelsGrid->GetClientSize().x );
|
|
||||||
|
|
||||||
itemsWidth -= m_itemsGrid->GetRowLabelSize();
|
itemsWidth -= m_itemsGrid->GetRowLabelSize();
|
||||||
|
|
||||||
|
@ -874,13 +628,14 @@ void DIALOG_FOOTPRINT_PROPERTIES::adjustGridColumns( int aWidth )
|
||||||
m_itemsGrid->GetVisibleWidth( 0, true, false, false ) ) );
|
m_itemsGrid->GetVisibleWidth( 0, true, false, false ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_modelsGrid->SetColSize( 0, modelsWidth - m_modelsGrid->GetColSize( 1 ) - 6 );
|
// Update the width of the 3D panel
|
||||||
|
m_3dPanel->AdjustGridColumnWidths( aWidth );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_FOOTPRINT_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& )
|
void DIALOG_FOOTPRINT_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& )
|
||||||
{
|
{
|
||||||
if( !m_itemsGrid->IsCellEditControlShown() && !m_modelsGrid->IsCellEditControlShown() )
|
if( !m_itemsGrid->IsCellEditControlShown() )
|
||||||
adjustGridColumns( m_itemsGrid->GetRect().GetWidth() );
|
adjustGridColumns( m_itemsGrid->GetRect().GetWidth() );
|
||||||
|
|
||||||
// Handle a grid error. This is delayed to OnUpdateUI so that we can change focus
|
// Handle a grid error. This is delayed to OnUpdateUI so that we can change focus
|
||||||
|
@ -930,8 +685,6 @@ void DIALOG_FOOTPRINT_PROPERTIES::OnUpdateUI( wxUpdateUIEvent& )
|
||||||
}
|
}
|
||||||
m_initialFocus = false;
|
m_initialFocus = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_buttonRemove->Enable( m_modelsGrid->GetNumberRows() > 0 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -35,8 +35,7 @@
|
||||||
|
|
||||||
|
|
||||||
class PCB_EDIT_FRAME;
|
class PCB_EDIT_FRAME;
|
||||||
class PANEL_PREVIEW_3D_MODEL;
|
class PANEL_FP_PROPERTIES_3D_MODEL;
|
||||||
|
|
||||||
|
|
||||||
class DIALOG_FOOTPRINT_PROPERTIES: public DIALOG_FOOTPRINT_PROPERTIES_BASE
|
class DIALOG_FOOTPRINT_PROPERTIES: public DIALOG_FOOTPRINT_PROPERTIES_BASE
|
||||||
{
|
{
|
||||||
|
@ -65,18 +64,12 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// virtual event functions
|
// virtual event functions
|
||||||
void On3DModelSelected( wxGridEvent& ) override;
|
|
||||||
void On3DModelCellChanged( wxGridEvent& aEvent ) override;
|
|
||||||
void OnRemove3DModel( wxCommandEvent& ) override;
|
|
||||||
void OnAdd3DModel( wxCommandEvent& ) override;
|
|
||||||
void OnAdd3DRow( wxCommandEvent& ) override;
|
|
||||||
void EditFootprint( wxCommandEvent& ) override;
|
void EditFootprint( wxCommandEvent& ) override;
|
||||||
void EditLibraryFootprint( wxCommandEvent& ) override;
|
void EditLibraryFootprint( wxCommandEvent& ) override;
|
||||||
void UpdateFootprint( wxCommandEvent& ) override;
|
void UpdateFootprint( wxCommandEvent& ) override;
|
||||||
void ChangeFootprint( wxCommandEvent& ) override;
|
void ChangeFootprint( wxCommandEvent& ) override;
|
||||||
void FootprintOrientEvent( wxCommandEvent& ) override;
|
void FootprintOrientEvent( wxCommandEvent& ) override;
|
||||||
void OnOtherOrientation( wxCommandEvent& aEvent ) override;
|
void OnOtherOrientation( wxCommandEvent& aEvent ) override;
|
||||||
void Cfg3DPath( wxCommandEvent& ) override;
|
|
||||||
void OnGridSize( wxSizeEvent& aEvent ) override;
|
void OnGridSize( wxSizeEvent& aEvent ) override;
|
||||||
void OnAddField( wxCommandEvent& ) override;
|
void OnAddField( wxCommandEvent& ) override;
|
||||||
void OnDeleteField( wxCommandEvent& ) override;
|
void OnDeleteField( wxCommandEvent& ) override;
|
||||||
|
@ -109,18 +102,16 @@ private:
|
||||||
UNIT_BINDER m_solderMask;
|
UNIT_BINDER m_solderMask;
|
||||||
UNIT_BINDER m_solderPaste;
|
UNIT_BINDER m_solderPaste;
|
||||||
|
|
||||||
std::vector<FP_3DMODEL> m_shapes3D_list;
|
|
||||||
PANEL_PREVIEW_3D_MODEL* m_previewPane;
|
|
||||||
|
|
||||||
wxString m_delayedErrorMessage;
|
wxString m_delayedErrorMessage;
|
||||||
wxGrid* m_delayedFocusGrid;
|
wxGrid* m_delayedFocusGrid;
|
||||||
int m_delayedFocusRow;
|
int m_delayedFocusRow;
|
||||||
int m_delayedFocusColumn;
|
int m_delayedFocusColumn;
|
||||||
bool m_initialFocus;
|
bool m_initialFocus;
|
||||||
|
|
||||||
bool m_inSelect;
|
|
||||||
std::vector<bool> m_macHack;
|
std::vector<bool> m_macHack;
|
||||||
enum FP_PROPS_RETVALUE m_returnValue; // the option that closed the dialog
|
enum FP_PROPS_RETVALUE m_returnValue; // the option that closed the dialog
|
||||||
|
|
||||||
|
PANEL_FP_PROPERTIES_3D_MODEL* m_3dPanel;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -431,81 +431,6 @@ DIALOG_FOOTPRINT_PROPERTIES_BASE::DIALOG_FOOTPRINT_PROPERTIES_BASE( wxWindow* pa
|
||||||
m_PanelClearances->Layout();
|
m_PanelClearances->Layout();
|
||||||
bSizerPanelClearances->Fit( m_PanelClearances );
|
bSizerPanelClearances->Fit( m_PanelClearances );
|
||||||
m_NoteBook->AddPage( m_PanelClearances, _("Clearance Overrides and Settings"), true );
|
m_NoteBook->AddPage( m_PanelClearances, _("Clearance Overrides and Settings"), true );
|
||||||
m_Panel3D = new wxPanel( m_NoteBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
|
||||||
bSizerMain3D = new wxBoxSizer( wxVERTICAL );
|
|
||||||
|
|
||||||
wxStaticBoxSizer* sbSizer3;
|
|
||||||
sbSizer3 = new wxStaticBoxSizer( new wxStaticBox( m_Panel3D, wxID_ANY, wxEmptyString ), wxVERTICAL );
|
|
||||||
|
|
||||||
m_modelsGrid = new WX_GRID( sbSizer3->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
|
||||||
|
|
||||||
// Grid
|
|
||||||
m_modelsGrid->CreateGrid( 3, 2 );
|
|
||||||
m_modelsGrid->EnableEditing( true );
|
|
||||||
m_modelsGrid->EnableGridLines( true );
|
|
||||||
m_modelsGrid->EnableDragGridSize( false );
|
|
||||||
m_modelsGrid->SetMargins( 0, 0 );
|
|
||||||
|
|
||||||
// Columns
|
|
||||||
m_modelsGrid->SetColSize( 0, 650 );
|
|
||||||
m_modelsGrid->SetColSize( 1, 65 );
|
|
||||||
m_modelsGrid->EnableDragColMove( false );
|
|
||||||
m_modelsGrid->EnableDragColSize( false );
|
|
||||||
m_modelsGrid->SetColLabelSize( 24 );
|
|
||||||
m_modelsGrid->SetColLabelValue( 0, _("3D Model(s)") );
|
|
||||||
m_modelsGrid->SetColLabelValue( 1, _("Show") );
|
|
||||||
m_modelsGrid->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
|
|
||||||
|
|
||||||
// Rows
|
|
||||||
m_modelsGrid->EnableDragRowSize( false );
|
|
||||||
m_modelsGrid->SetRowLabelSize( 0 );
|
|
||||||
m_modelsGrid->SetRowLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
|
|
||||||
|
|
||||||
// Label Appearance
|
|
||||||
|
|
||||||
// Cell Defaults
|
|
||||||
m_modelsGrid->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
|
|
||||||
m_modelsGrid->SetMinSize( wxSize( -1,56 ) );
|
|
||||||
|
|
||||||
sbSizer3->Add( m_modelsGrid, 1, wxALL|wxEXPAND, 5 );
|
|
||||||
|
|
||||||
wxBoxSizer* bSizer3DButtons;
|
|
||||||
bSizer3DButtons = new wxBoxSizer( wxHORIZONTAL );
|
|
||||||
|
|
||||||
m_buttonAdd = new wxBitmapButton( sbSizer3->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
|
|
||||||
bSizer3DButtons->Add( m_buttonAdd, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
|
|
||||||
|
|
||||||
m_buttonBrowse = new wxBitmapButton( sbSizer3->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
|
|
||||||
bSizer3DButtons->Add( m_buttonBrowse, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
|
|
||||||
|
|
||||||
|
|
||||||
bSizer3DButtons->Add( 20, 0, 0, wxEXPAND, 5 );
|
|
||||||
|
|
||||||
m_buttonRemove = new wxBitmapButton( sbSizer3->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( -1,-1 ), wxBU_AUTODRAW|0 );
|
|
||||||
bSizer3DButtons->Add( m_buttonRemove, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
|
|
||||||
|
|
||||||
|
|
||||||
bSizer3DButtons->Add( 0, 0, 1, wxEXPAND, 5 );
|
|
||||||
|
|
||||||
m_buttonCfgPath = new wxButton( sbSizer3->GetStaticBox(), wxID_ANY, _("Configure Paths..."), wxDefaultPosition, wxDefaultSize, 0 );
|
|
||||||
bSizer3DButtons->Add( m_buttonCfgPath, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT, 5 );
|
|
||||||
|
|
||||||
|
|
||||||
sbSizer3->Add( bSizer3DButtons, 0, wxEXPAND, 5 );
|
|
||||||
|
|
||||||
|
|
||||||
bSizerMain3D->Add( sbSizer3, 4, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
|
||||||
|
|
||||||
bLowerSizer3D = new wxBoxSizer( wxHORIZONTAL );
|
|
||||||
|
|
||||||
|
|
||||||
bSizerMain3D->Add( bLowerSizer3D, 11, wxEXPAND, 5 );
|
|
||||||
|
|
||||||
|
|
||||||
m_Panel3D->SetSizer( bSizerMain3D );
|
|
||||||
m_Panel3D->Layout();
|
|
||||||
bSizerMain3D->Fit( m_Panel3D );
|
|
||||||
m_NoteBook->AddPage( m_Panel3D, _("3D Models"), false );
|
|
||||||
|
|
||||||
m_GeneralBoxSizer->Add( m_NoteBook, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
m_GeneralBoxSizer->Add( m_NoteBook, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||||
|
|
||||||
|
@ -570,12 +495,6 @@ DIALOG_FOOTPRINT_PROPERTIES_BASE::DIALOG_FOOTPRINT_PROPERTIES_BASE( wxWindow* pa
|
||||||
m_buttonExchange->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::ChangeFootprint ), NULL, this );
|
m_buttonExchange->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::ChangeFootprint ), NULL, this );
|
||||||
m_buttonModuleEditor->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::EditFootprint ), NULL, this );
|
m_buttonModuleEditor->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::EditFootprint ), NULL, this );
|
||||||
m_button5->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::EditLibraryFootprint ), NULL, this );
|
m_button5->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::EditLibraryFootprint ), NULL, this );
|
||||||
m_modelsGrid->Connect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::On3DModelCellChanged ), NULL, this );
|
|
||||||
m_modelsGrid->Connect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::On3DModelSelected ), NULL, this );
|
|
||||||
m_buttonAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnAdd3DRow ), NULL, this );
|
|
||||||
m_buttonBrowse->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnAdd3DModel ), NULL, this );
|
|
||||||
m_buttonRemove->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnRemove3DModel ), NULL, this );
|
|
||||||
m_buttonCfgPath->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::Cfg3DPath ), NULL, this );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DIALOG_FOOTPRINT_PROPERTIES_BASE::~DIALOG_FOOTPRINT_PROPERTIES_BASE()
|
DIALOG_FOOTPRINT_PROPERTIES_BASE::~DIALOG_FOOTPRINT_PROPERTIES_BASE()
|
||||||
|
@ -597,11 +516,5 @@ DIALOG_FOOTPRINT_PROPERTIES_BASE::~DIALOG_FOOTPRINT_PROPERTIES_BASE()
|
||||||
m_buttonExchange->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::ChangeFootprint ), NULL, this );
|
m_buttonExchange->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::ChangeFootprint ), NULL, this );
|
||||||
m_buttonModuleEditor->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::EditFootprint ), NULL, this );
|
m_buttonModuleEditor->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::EditFootprint ), NULL, this );
|
||||||
m_button5->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::EditLibraryFootprint ), NULL, this );
|
m_button5->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::EditLibraryFootprint ), NULL, this );
|
||||||
m_modelsGrid->Disconnect( wxEVT_GRID_CELL_CHANGED, wxGridEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::On3DModelCellChanged ), NULL, this );
|
|
||||||
m_modelsGrid->Disconnect( wxEVT_GRID_SELECT_CELL, wxGridEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::On3DModelSelected ), NULL, this );
|
|
||||||
m_buttonAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnAdd3DRow ), NULL, this );
|
|
||||||
m_buttonBrowse->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnAdd3DModel ), NULL, this );
|
|
||||||
m_buttonRemove->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::OnRemove3DModel ), NULL, this );
|
|
||||||
m_buttonCfgPath->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_FOOTPRINT_PROPERTIES_BASE::Cfg3DPath ), NULL, this );
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3795,507 +3795,6 @@
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="notebookpage" expanded="1">
|
|
||||||
<property name="bitmap"></property>
|
|
||||||
<property name="label">3D Models</property>
|
|
||||||
<property name="select">0</property>
|
|
||||||
<object class="wxPanel" expanded="1">
|
|
||||||
<property name="BottomDockable">1</property>
|
|
||||||
<property name="LeftDockable">1</property>
|
|
||||||
<property name="RightDockable">1</property>
|
|
||||||
<property name="TopDockable">1</property>
|
|
||||||
<property name="aui_layer"></property>
|
|
||||||
<property name="aui_name"></property>
|
|
||||||
<property name="aui_position"></property>
|
|
||||||
<property name="aui_row"></property>
|
|
||||||
<property name="best_size"></property>
|
|
||||||
<property name="bg"></property>
|
|
||||||
<property name="caption"></property>
|
|
||||||
<property name="caption_visible">1</property>
|
|
||||||
<property name="center_pane">0</property>
|
|
||||||
<property name="close_button">1</property>
|
|
||||||
<property name="context_help"></property>
|
|
||||||
<property name="context_menu">1</property>
|
|
||||||
<property name="default_pane">0</property>
|
|
||||||
<property name="dock">Dock</property>
|
|
||||||
<property name="dock_fixed">0</property>
|
|
||||||
<property name="docking">Left</property>
|
|
||||||
<property name="enabled">1</property>
|
|
||||||
<property name="fg"></property>
|
|
||||||
<property name="floatable">1</property>
|
|
||||||
<property name="font"></property>
|
|
||||||
<property name="gripper">0</property>
|
|
||||||
<property name="hidden">0</property>
|
|
||||||
<property name="id">wxID_ANY</property>
|
|
||||||
<property name="max_size"></property>
|
|
||||||
<property name="maximize_button">0</property>
|
|
||||||
<property name="maximum_size"></property>
|
|
||||||
<property name="min_size"></property>
|
|
||||||
<property name="minimize_button">0</property>
|
|
||||||
<property name="minimum_size"></property>
|
|
||||||
<property name="moveable">1</property>
|
|
||||||
<property name="name">m_Panel3D</property>
|
|
||||||
<property name="pane_border">1</property>
|
|
||||||
<property name="pane_position"></property>
|
|
||||||
<property name="pane_size"></property>
|
|
||||||
<property name="permission">protected</property>
|
|
||||||
<property name="pin_button">1</property>
|
|
||||||
<property name="pos"></property>
|
|
||||||
<property name="resize">Resizable</property>
|
|
||||||
<property name="show">1</property>
|
|
||||||
<property name="size"></property>
|
|
||||||
<property name="subclass"></property>
|
|
||||||
<property name="toolbar_pane">0</property>
|
|
||||||
<property name="tooltip"></property>
|
|
||||||
<property name="window_extra_style"></property>
|
|
||||||
<property name="window_name"></property>
|
|
||||||
<property name="window_style">wxTAB_TRAVERSAL</property>
|
|
||||||
<object class="wxBoxSizer" expanded="1">
|
|
||||||
<property name="minimum_size"></property>
|
|
||||||
<property name="name">bSizerMain3D</property>
|
|
||||||
<property name="orient">wxVERTICAL</property>
|
|
||||||
<property name="permission">protected</property>
|
|
||||||
<object class="sizeritem" expanded="1">
|
|
||||||
<property name="border">5</property>
|
|
||||||
<property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
|
|
||||||
<property name="proportion">4</property>
|
|
||||||
<object class="wxStaticBoxSizer" expanded="1">
|
|
||||||
<property name="id">wxID_ANY</property>
|
|
||||||
<property name="label"></property>
|
|
||||||
<property name="minimum_size"></property>
|
|
||||||
<property name="name">sbSizer3</property>
|
|
||||||
<property name="orient">wxVERTICAL</property>
|
|
||||||
<property name="parent">1</property>
|
|
||||||
<property name="permission">none</property>
|
|
||||||
<object class="sizeritem" expanded="0">
|
|
||||||
<property name="border">5</property>
|
|
||||||
<property name="flag">wxALL|wxEXPAND</property>
|
|
||||||
<property name="proportion">1</property>
|
|
||||||
<object class="wxGrid" expanded="0">
|
|
||||||
<property name="BottomDockable">1</property>
|
|
||||||
<property name="LeftDockable">1</property>
|
|
||||||
<property name="RightDockable">1</property>
|
|
||||||
<property name="TopDockable">1</property>
|
|
||||||
<property name="aui_layer"></property>
|
|
||||||
<property name="aui_name"></property>
|
|
||||||
<property name="aui_position"></property>
|
|
||||||
<property name="aui_row"></property>
|
|
||||||
<property name="autosize_cols">0</property>
|
|
||||||
<property name="autosize_rows">0</property>
|
|
||||||
<property name="best_size"></property>
|
|
||||||
<property name="bg"></property>
|
|
||||||
<property name="caption"></property>
|
|
||||||
<property name="caption_visible">1</property>
|
|
||||||
<property name="cell_bg"></property>
|
|
||||||
<property name="cell_font"></property>
|
|
||||||
<property name="cell_horiz_alignment">wxALIGN_LEFT</property>
|
|
||||||
<property name="cell_text"></property>
|
|
||||||
<property name="cell_vert_alignment">wxALIGN_TOP</property>
|
|
||||||
<property name="center_pane">0</property>
|
|
||||||
<property name="close_button">1</property>
|
|
||||||
<property name="col_label_horiz_alignment">wxALIGN_CENTER</property>
|
|
||||||
<property name="col_label_size">24</property>
|
|
||||||
<property name="col_label_values">"3D Model(s)" "Show"</property>
|
|
||||||
<property name="col_label_vert_alignment">wxALIGN_CENTER</property>
|
|
||||||
<property name="cols">2</property>
|
|
||||||
<property name="column_sizes">650,65</property>
|
|
||||||
<property name="context_help"></property>
|
|
||||||
<property name="context_menu">1</property>
|
|
||||||
<property name="default_pane">0</property>
|
|
||||||
<property name="dock">Dock</property>
|
|
||||||
<property name="dock_fixed">0</property>
|
|
||||||
<property name="docking">Left</property>
|
|
||||||
<property name="drag_col_move">0</property>
|
|
||||||
<property name="drag_col_size">0</property>
|
|
||||||
<property name="drag_grid_size">0</property>
|
|
||||||
<property name="drag_row_size">0</property>
|
|
||||||
<property name="editing">1</property>
|
|
||||||
<property name="enabled">1</property>
|
|
||||||
<property name="fg"></property>
|
|
||||||
<property name="floatable">1</property>
|
|
||||||
<property name="font"></property>
|
|
||||||
<property name="grid_line_color"></property>
|
|
||||||
<property name="grid_lines">1</property>
|
|
||||||
<property name="gripper">0</property>
|
|
||||||
<property name="hidden">0</property>
|
|
||||||
<property name="id">wxID_ANY</property>
|
|
||||||
<property name="label_bg"></property>
|
|
||||||
<property name="label_font"></property>
|
|
||||||
<property name="label_text"></property>
|
|
||||||
<property name="margin_height">0</property>
|
|
||||||
<property name="margin_width">0</property>
|
|
||||||
<property name="max_size"></property>
|
|
||||||
<property name="maximize_button">0</property>
|
|
||||||
<property name="maximum_size"></property>
|
|
||||||
<property name="min_size"></property>
|
|
||||||
<property name="minimize_button">0</property>
|
|
||||||
<property name="minimum_size">-1,56</property>
|
|
||||||
<property name="moveable">1</property>
|
|
||||||
<property name="name">m_modelsGrid</property>
|
|
||||||
<property name="pane_border">1</property>
|
|
||||||
<property name="pane_position"></property>
|
|
||||||
<property name="pane_size"></property>
|
|
||||||
<property name="permission">protected</property>
|
|
||||||
<property name="pin_button">1</property>
|
|
||||||
<property name="pos"></property>
|
|
||||||
<property name="resize">Resizable</property>
|
|
||||||
<property name="row_label_horiz_alignment">wxALIGN_CENTER</property>
|
|
||||||
<property name="row_label_size">0</property>
|
|
||||||
<property name="row_label_values"></property>
|
|
||||||
<property name="row_label_vert_alignment">wxALIGN_CENTER</property>
|
|
||||||
<property name="row_sizes"></property>
|
|
||||||
<property name="rows">3</property>
|
|
||||||
<property name="show">1</property>
|
|
||||||
<property name="size"></property>
|
|
||||||
<property name="subclass">WX_GRID; widgets/wx_grid.h; forward_declare</property>
|
|
||||||
<property name="toolbar_pane">0</property>
|
|
||||||
<property name="tooltip"></property>
|
|
||||||
<property name="window_extra_style"></property>
|
|
||||||
<property name="window_name"></property>
|
|
||||||
<property name="window_style"></property>
|
|
||||||
<event name="OnGridCmdCellChange">On3DModelCellChanged</event>
|
|
||||||
<event name="OnGridSelectCell">On3DModelSelected</event>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
<object class="sizeritem" expanded="1">
|
|
||||||
<property name="border">5</property>
|
|
||||||
<property name="flag">wxEXPAND</property>
|
|
||||||
<property name="proportion">0</property>
|
|
||||||
<object class="wxBoxSizer" expanded="1">
|
|
||||||
<property name="minimum_size"></property>
|
|
||||||
<property name="name">bSizer3DButtons</property>
|
|
||||||
<property name="orient">wxHORIZONTAL</property>
|
|
||||||
<property name="permission">none</property>
|
|
||||||
<object class="sizeritem" expanded="0">
|
|
||||||
<property name="border">5</property>
|
|
||||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxLEFT</property>
|
|
||||||
<property name="proportion">0</property>
|
|
||||||
<object class="wxBitmapButton" expanded="0">
|
|
||||||
<property name="BottomDockable">1</property>
|
|
||||||
<property name="LeftDockable">1</property>
|
|
||||||
<property name="RightDockable">1</property>
|
|
||||||
<property name="TopDockable">1</property>
|
|
||||||
<property name="aui_layer"></property>
|
|
||||||
<property name="aui_name"></property>
|
|
||||||
<property name="aui_position"></property>
|
|
||||||
<property name="aui_row"></property>
|
|
||||||
<property name="best_size"></property>
|
|
||||||
<property name="bg"></property>
|
|
||||||
<property name="bitmap"></property>
|
|
||||||
<property name="caption"></property>
|
|
||||||
<property name="caption_visible">1</property>
|
|
||||||
<property name="center_pane">0</property>
|
|
||||||
<property name="close_button">1</property>
|
|
||||||
<property name="context_help"></property>
|
|
||||||
<property name="context_menu">1</property>
|
|
||||||
<property name="current"></property>
|
|
||||||
<property name="default">0</property>
|
|
||||||
<property name="default_pane">0</property>
|
|
||||||
<property name="disabled"></property>
|
|
||||||
<property name="dock">Dock</property>
|
|
||||||
<property name="dock_fixed">0</property>
|
|
||||||
<property name="docking">Left</property>
|
|
||||||
<property name="enabled">1</property>
|
|
||||||
<property name="fg"></property>
|
|
||||||
<property name="floatable">1</property>
|
|
||||||
<property name="focus"></property>
|
|
||||||
<property name="font"></property>
|
|
||||||
<property name="gripper">0</property>
|
|
||||||
<property name="hidden">0</property>
|
|
||||||
<property name="id">wxID_ANY</property>
|
|
||||||
<property name="label">Add 3D Model</property>
|
|
||||||
<property name="margins"></property>
|
|
||||||
<property name="markup">0</property>
|
|
||||||
<property name="max_size"></property>
|
|
||||||
<property name="maximize_button">0</property>
|
|
||||||
<property name="maximum_size"></property>
|
|
||||||
<property name="min_size"></property>
|
|
||||||
<property name="minimize_button">0</property>
|
|
||||||
<property name="minimum_size">-1,-1</property>
|
|
||||||
<property name="moveable">1</property>
|
|
||||||
<property name="name">m_buttonAdd</property>
|
|
||||||
<property name="pane_border">1</property>
|
|
||||||
<property name="pane_position"></property>
|
|
||||||
<property name="pane_size"></property>
|
|
||||||
<property name="permission">protected</property>
|
|
||||||
<property name="pin_button">1</property>
|
|
||||||
<property name="pos"></property>
|
|
||||||
<property name="position"></property>
|
|
||||||
<property name="pressed"></property>
|
|
||||||
<property name="resize">Resizable</property>
|
|
||||||
<property name="show">1</property>
|
|
||||||
<property name="size">-1,-1</property>
|
|
||||||
<property name="style"></property>
|
|
||||||
<property name="subclass">; forward_declare</property>
|
|
||||||
<property name="toolbar_pane">0</property>
|
|
||||||
<property name="tooltip"></property>
|
|
||||||
<property name="validator_data_type"></property>
|
|
||||||
<property name="validator_style">wxFILTER_NONE</property>
|
|
||||||
<property name="validator_type">wxDefaultValidator</property>
|
|
||||||
<property name="validator_variable"></property>
|
|
||||||
<property name="window_extra_style"></property>
|
|
||||||
<property name="window_name"></property>
|
|
||||||
<property name="window_style"></property>
|
|
||||||
<event name="OnButtonClick">OnAdd3DRow</event>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
<object class="sizeritem" expanded="0">
|
|
||||||
<property name="border">5</property>
|
|
||||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxLEFT</property>
|
|
||||||
<property name="proportion">0</property>
|
|
||||||
<object class="wxBitmapButton" expanded="0">
|
|
||||||
<property name="BottomDockable">1</property>
|
|
||||||
<property name="LeftDockable">1</property>
|
|
||||||
<property name="RightDockable">1</property>
|
|
||||||
<property name="TopDockable">1</property>
|
|
||||||
<property name="aui_layer"></property>
|
|
||||||
<property name="aui_name"></property>
|
|
||||||
<property name="aui_position"></property>
|
|
||||||
<property name="aui_row"></property>
|
|
||||||
<property name="best_size"></property>
|
|
||||||
<property name="bg"></property>
|
|
||||||
<property name="bitmap"></property>
|
|
||||||
<property name="caption"></property>
|
|
||||||
<property name="caption_visible">1</property>
|
|
||||||
<property name="center_pane">0</property>
|
|
||||||
<property name="close_button">1</property>
|
|
||||||
<property name="context_help"></property>
|
|
||||||
<property name="context_menu">1</property>
|
|
||||||
<property name="current"></property>
|
|
||||||
<property name="default">0</property>
|
|
||||||
<property name="default_pane">0</property>
|
|
||||||
<property name="disabled"></property>
|
|
||||||
<property name="dock">Dock</property>
|
|
||||||
<property name="dock_fixed">0</property>
|
|
||||||
<property name="docking">Left</property>
|
|
||||||
<property name="enabled">1</property>
|
|
||||||
<property name="fg"></property>
|
|
||||||
<property name="floatable">1</property>
|
|
||||||
<property name="focus"></property>
|
|
||||||
<property name="font"></property>
|
|
||||||
<property name="gripper">0</property>
|
|
||||||
<property name="hidden">0</property>
|
|
||||||
<property name="id">wxID_ANY</property>
|
|
||||||
<property name="label">Browse</property>
|
|
||||||
<property name="margins"></property>
|
|
||||||
<property name="markup">0</property>
|
|
||||||
<property name="max_size"></property>
|
|
||||||
<property name="maximize_button">0</property>
|
|
||||||
<property name="maximum_size"></property>
|
|
||||||
<property name="min_size"></property>
|
|
||||||
<property name="minimize_button">0</property>
|
|
||||||
<property name="minimum_size">-1,-1</property>
|
|
||||||
<property name="moveable">1</property>
|
|
||||||
<property name="name">m_buttonBrowse</property>
|
|
||||||
<property name="pane_border">1</property>
|
|
||||||
<property name="pane_position"></property>
|
|
||||||
<property name="pane_size"></property>
|
|
||||||
<property name="permission">protected</property>
|
|
||||||
<property name="pin_button">1</property>
|
|
||||||
<property name="pos"></property>
|
|
||||||
<property name="position"></property>
|
|
||||||
<property name="pressed"></property>
|
|
||||||
<property name="resize">Resizable</property>
|
|
||||||
<property name="show">1</property>
|
|
||||||
<property name="size">-1,-1</property>
|
|
||||||
<property name="style"></property>
|
|
||||||
<property name="subclass">; forward_declare</property>
|
|
||||||
<property name="toolbar_pane">0</property>
|
|
||||||
<property name="tooltip"></property>
|
|
||||||
<property name="validator_data_type"></property>
|
|
||||||
<property name="validator_style">wxFILTER_NONE</property>
|
|
||||||
<property name="validator_type">wxDefaultValidator</property>
|
|
||||||
<property name="validator_variable"></property>
|
|
||||||
<property name="window_extra_style"></property>
|
|
||||||
<property name="window_name"></property>
|
|
||||||
<property name="window_style"></property>
|
|
||||||
<event name="OnButtonClick">OnAdd3DModel</event>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
<object class="sizeritem" expanded="0">
|
|
||||||
<property name="border">5</property>
|
|
||||||
<property name="flag">wxEXPAND</property>
|
|
||||||
<property name="proportion">0</property>
|
|
||||||
<object class="spacer" expanded="0">
|
|
||||||
<property name="height">0</property>
|
|
||||||
<property name="permission">protected</property>
|
|
||||||
<property name="width">20</property>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
<object class="sizeritem" expanded="0">
|
|
||||||
<property name="border">5</property>
|
|
||||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxLEFT</property>
|
|
||||||
<property name="proportion">0</property>
|
|
||||||
<object class="wxBitmapButton" expanded="0">
|
|
||||||
<property name="BottomDockable">1</property>
|
|
||||||
<property name="LeftDockable">1</property>
|
|
||||||
<property name="RightDockable">1</property>
|
|
||||||
<property name="TopDockable">1</property>
|
|
||||||
<property name="aui_layer"></property>
|
|
||||||
<property name="aui_name"></property>
|
|
||||||
<property name="aui_position"></property>
|
|
||||||
<property name="aui_row"></property>
|
|
||||||
<property name="best_size"></property>
|
|
||||||
<property name="bg"></property>
|
|
||||||
<property name="bitmap"></property>
|
|
||||||
<property name="caption"></property>
|
|
||||||
<property name="caption_visible">1</property>
|
|
||||||
<property name="center_pane">0</property>
|
|
||||||
<property name="close_button">1</property>
|
|
||||||
<property name="context_help"></property>
|
|
||||||
<property name="context_menu">1</property>
|
|
||||||
<property name="current"></property>
|
|
||||||
<property name="default">0</property>
|
|
||||||
<property name="default_pane">0</property>
|
|
||||||
<property name="disabled"></property>
|
|
||||||
<property name="dock">Dock</property>
|
|
||||||
<property name="dock_fixed">0</property>
|
|
||||||
<property name="docking">Left</property>
|
|
||||||
<property name="enabled">1</property>
|
|
||||||
<property name="fg"></property>
|
|
||||||
<property name="floatable">1</property>
|
|
||||||
<property name="focus"></property>
|
|
||||||
<property name="font"></property>
|
|
||||||
<property name="gripper">0</property>
|
|
||||||
<property name="hidden">0</property>
|
|
||||||
<property name="id">wxID_ANY</property>
|
|
||||||
<property name="label">Remove 3D Model</property>
|
|
||||||
<property name="margins"></property>
|
|
||||||
<property name="markup">0</property>
|
|
||||||
<property name="max_size"></property>
|
|
||||||
<property name="maximize_button">0</property>
|
|
||||||
<property name="maximum_size"></property>
|
|
||||||
<property name="min_size"></property>
|
|
||||||
<property name="minimize_button">0</property>
|
|
||||||
<property name="minimum_size">-1,-1</property>
|
|
||||||
<property name="moveable">1</property>
|
|
||||||
<property name="name">m_buttonRemove</property>
|
|
||||||
<property name="pane_border">1</property>
|
|
||||||
<property name="pane_position"></property>
|
|
||||||
<property name="pane_size"></property>
|
|
||||||
<property name="permission">protected</property>
|
|
||||||
<property name="pin_button">1</property>
|
|
||||||
<property name="pos"></property>
|
|
||||||
<property name="position"></property>
|
|
||||||
<property name="pressed"></property>
|
|
||||||
<property name="resize">Resizable</property>
|
|
||||||
<property name="show">1</property>
|
|
||||||
<property name="size">-1,-1</property>
|
|
||||||
<property name="style"></property>
|
|
||||||
<property name="subclass">; forward_declare</property>
|
|
||||||
<property name="toolbar_pane">0</property>
|
|
||||||
<property name="tooltip"></property>
|
|
||||||
<property name="validator_data_type"></property>
|
|
||||||
<property name="validator_style">wxFILTER_NONE</property>
|
|
||||||
<property name="validator_type">wxDefaultValidator</property>
|
|
||||||
<property name="validator_variable"></property>
|
|
||||||
<property name="window_extra_style"></property>
|
|
||||||
<property name="window_name"></property>
|
|
||||||
<property name="window_style"></property>
|
|
||||||
<event name="OnButtonClick">OnRemove3DModel</event>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
<object class="sizeritem" expanded="0">
|
|
||||||
<property name="border">5</property>
|
|
||||||
<property name="flag">wxEXPAND</property>
|
|
||||||
<property name="proportion">1</property>
|
|
||||||
<object class="spacer" expanded="0">
|
|
||||||
<property name="height">0</property>
|
|
||||||
<property name="permission">protected</property>
|
|
||||||
<property name="width">0</property>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
<object class="sizeritem" expanded="0">
|
|
||||||
<property name="border">5</property>
|
|
||||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT</property>
|
|
||||||
<property name="proportion">0</property>
|
|
||||||
<object class="wxButton" expanded="0">
|
|
||||||
<property name="BottomDockable">1</property>
|
|
||||||
<property name="LeftDockable">1</property>
|
|
||||||
<property name="RightDockable">1</property>
|
|
||||||
<property name="TopDockable">1</property>
|
|
||||||
<property name="aui_layer"></property>
|
|
||||||
<property name="aui_name"></property>
|
|
||||||
<property name="aui_position"></property>
|
|
||||||
<property name="aui_row"></property>
|
|
||||||
<property name="best_size"></property>
|
|
||||||
<property name="bg"></property>
|
|
||||||
<property name="bitmap"></property>
|
|
||||||
<property name="caption"></property>
|
|
||||||
<property name="caption_visible">1</property>
|
|
||||||
<property name="center_pane">0</property>
|
|
||||||
<property name="close_button">1</property>
|
|
||||||
<property name="context_help"></property>
|
|
||||||
<property name="context_menu">1</property>
|
|
||||||
<property name="current"></property>
|
|
||||||
<property name="default">0</property>
|
|
||||||
<property name="default_pane">0</property>
|
|
||||||
<property name="disabled"></property>
|
|
||||||
<property name="dock">Dock</property>
|
|
||||||
<property name="dock_fixed">0</property>
|
|
||||||
<property name="docking">Left</property>
|
|
||||||
<property name="enabled">1</property>
|
|
||||||
<property name="fg"></property>
|
|
||||||
<property name="floatable">1</property>
|
|
||||||
<property name="focus"></property>
|
|
||||||
<property name="font"></property>
|
|
||||||
<property name="gripper">0</property>
|
|
||||||
<property name="hidden">0</property>
|
|
||||||
<property name="id">wxID_ANY</property>
|
|
||||||
<property name="label">Configure Paths...</property>
|
|
||||||
<property name="margins"></property>
|
|
||||||
<property name="markup">0</property>
|
|
||||||
<property name="max_size"></property>
|
|
||||||
<property name="maximize_button">0</property>
|
|
||||||
<property name="maximum_size"></property>
|
|
||||||
<property name="min_size"></property>
|
|
||||||
<property name="minimize_button">0</property>
|
|
||||||
<property name="minimum_size"></property>
|
|
||||||
<property name="moveable">1</property>
|
|
||||||
<property name="name">m_buttonCfgPath</property>
|
|
||||||
<property name="pane_border">1</property>
|
|
||||||
<property name="pane_position"></property>
|
|
||||||
<property name="pane_size"></property>
|
|
||||||
<property name="permission">protected</property>
|
|
||||||
<property name="pin_button">1</property>
|
|
||||||
<property name="pos"></property>
|
|
||||||
<property name="position"></property>
|
|
||||||
<property name="pressed"></property>
|
|
||||||
<property name="resize">Resizable</property>
|
|
||||||
<property name="show">1</property>
|
|
||||||
<property name="size"></property>
|
|
||||||
<property name="style"></property>
|
|
||||||
<property name="subclass"></property>
|
|
||||||
<property name="toolbar_pane">0</property>
|
|
||||||
<property name="tooltip"></property>
|
|
||||||
<property name="validator_data_type"></property>
|
|
||||||
<property name="validator_style">wxFILTER_NONE</property>
|
|
||||||
<property name="validator_type">wxDefaultValidator</property>
|
|
||||||
<property name="validator_variable"></property>
|
|
||||||
<property name="window_extra_style"></property>
|
|
||||||
<property name="window_name"></property>
|
|
||||||
<property name="window_style"></property>
|
|
||||||
<event name="OnButtonClick">Cfg3DPath</event>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
<object class="sizeritem" expanded="0">
|
|
||||||
<property name="border">5</property>
|
|
||||||
<property name="flag">wxEXPAND</property>
|
|
||||||
<property name="proportion">11</property>
|
|
||||||
<object class="wxBoxSizer" expanded="0">
|
|
||||||
<property name="minimum_size"></property>
|
|
||||||
<property name="name">bLowerSizer3D</property>
|
|
||||||
<property name="orient">wxHORIZONTAL</property>
|
|
||||||
<property name="permission">protected</property>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
</object>
|
|
||||||
</object>
|
</object>
|
||||||
</object>
|
</object>
|
||||||
<object class="sizeritem" expanded="1">
|
<object class="sizeritem" expanded="1">
|
||||||
|
|
|
@ -109,14 +109,6 @@ class DIALOG_FOOTPRINT_PROPERTIES_BASE : public DIALOG_SHIM
|
||||||
wxStaticText* m_staticTextInfoPaste;
|
wxStaticText* m_staticTextInfoPaste;
|
||||||
wxStaticText* m_staticText16;
|
wxStaticText* m_staticText16;
|
||||||
wxChoice* m_ZoneConnectionChoice;
|
wxChoice* m_ZoneConnectionChoice;
|
||||||
wxPanel* m_Panel3D;
|
|
||||||
wxBoxSizer* bSizerMain3D;
|
|
||||||
WX_GRID* m_modelsGrid;
|
|
||||||
wxBitmapButton* m_buttonAdd;
|
|
||||||
wxBitmapButton* m_buttonBrowse;
|
|
||||||
wxBitmapButton* m_buttonRemove;
|
|
||||||
wxButton* m_buttonCfgPath;
|
|
||||||
wxBoxSizer* bLowerSizer3D;
|
|
||||||
wxStaticText* m_libraryIDLabel;
|
wxStaticText* m_libraryIDLabel;
|
||||||
wxTextCtrl* m_tcLibraryID;
|
wxTextCtrl* m_tcLibraryID;
|
||||||
wxStdDialogButtonSizer* m_sdbSizerStdButtons;
|
wxStdDialogButtonSizer* m_sdbSizerStdButtons;
|
||||||
|
@ -136,12 +128,6 @@ class DIALOG_FOOTPRINT_PROPERTIES_BASE : public DIALOG_SHIM
|
||||||
virtual void ChangeFootprint( wxCommandEvent& event ) { event.Skip(); }
|
virtual void ChangeFootprint( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void EditFootprint( wxCommandEvent& event ) { event.Skip(); }
|
virtual void EditFootprint( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void EditLibraryFootprint( wxCommandEvent& event ) { event.Skip(); }
|
virtual void EditLibraryFootprint( wxCommandEvent& event ) { event.Skip(); }
|
||||||
virtual void On3DModelCellChanged( wxGridEvent& event ) { event.Skip(); }
|
|
||||||
virtual void On3DModelSelected( wxGridEvent& event ) { event.Skip(); }
|
|
||||||
virtual void OnAdd3DRow( wxCommandEvent& event ) { event.Skip(); }
|
|
||||||
virtual void OnAdd3DModel( wxCommandEvent& event ) { event.Skip(); }
|
|
||||||
virtual void OnRemove3DModel( wxCommandEvent& event ) { event.Skip(); }
|
|
||||||
virtual void Cfg3DPath( wxCommandEvent& event ) { event.Skip(); }
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -93,7 +93,6 @@ DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(
|
||||||
m_itemsGrid->SetTable( m_texts );
|
m_itemsGrid->SetTable( m_texts );
|
||||||
m_itemsGrid->PushEventHandler( new GRID_TRICKS( m_itemsGrid ) );
|
m_itemsGrid->PushEventHandler( new GRID_TRICKS( m_itemsGrid ) );
|
||||||
|
|
||||||
|
|
||||||
// Show/hide columns according to the user's preference
|
// Show/hide columns according to the user's preference
|
||||||
m_itemsGrid->ShowHideColumns( m_frame->GetSettings()->m_FootprintTextShownColumns );
|
m_itemsGrid->ShowHideColumns( m_frame->GetSettings()->m_FootprintTextShownColumns );
|
||||||
|
|
||||||
|
@ -126,14 +125,6 @@ DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(
|
||||||
{
|
{
|
||||||
SetInitialFocus( m_NetClearanceCtrl );
|
SetInitialFocus( m_NetClearanceCtrl );
|
||||||
}
|
}
|
||||||
/* else
|
|
||||||
{
|
|
||||||
m_delayedFocusGrid = m_modelsGrid;
|
|
||||||
m_delayedFocusRow = 0;
|
|
||||||
m_delayedFocusColumn = 0;
|
|
||||||
m_delayedFocusPage = NOTEBOOK_PAGES::PAGE_3D_MODELS;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
m_sdbSizerStdButtonsOK->SetDefault();
|
m_sdbSizerStdButtonsOK->SetDefault();
|
||||||
|
|
||||||
|
@ -188,11 +179,11 @@ bool DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataToWindow()
|
||||||
if( !m_PanelGeneral->TransferDataToWindow() )
|
if( !m_PanelGeneral->TransferDataToWindow() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// Add the models to the panel
|
||||||
if( !m_3dPanel->TransferDataToWindow() )
|
if( !m_3dPanel->TransferDataToWindow() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Module Texts
|
// Footprint Texts
|
||||||
|
|
||||||
m_texts->push_back( m_footprint->Reference() );
|
m_texts->push_back( m_footprint->Reference() );
|
||||||
m_texts->push_back( m_footprint->Value() );
|
m_texts->push_back( m_footprint->Value() );
|
||||||
|
|
||||||
|
@ -204,7 +195,7 @@ bool DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataToWindow()
|
||||||
m_texts->push_back( *textItem );
|
m_texts->push_back( *textItem );
|
||||||
}
|
}
|
||||||
|
|
||||||
// notify the grid
|
// Notify the grid
|
||||||
wxGridTableMessage tmsg( m_texts, wxGRIDTABLE_NOTIFY_ROWS_APPENDED, m_texts->GetNumberRows() );
|
wxGridTableMessage tmsg( m_texts, wxGRIDTABLE_NOTIFY_ROWS_APPENDED, m_texts->GetNumberRows() );
|
||||||
m_itemsGrid->ProcessTableMessage( tmsg );
|
m_itemsGrid->ProcessTableMessage( tmsg );
|
||||||
|
|
||||||
|
@ -247,23 +238,12 @@ bool DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataToWindow()
|
||||||
switch( m_footprint->GetZoneConnection() )
|
switch( m_footprint->GetZoneConnection() )
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case ZONE_CONNECTION::INHERITED:
|
case ZONE_CONNECTION::INHERITED: m_ZoneConnectionChoice->SetSelection( 0 ); break;
|
||||||
m_ZoneConnectionChoice->SetSelection( 0 );
|
case ZONE_CONNECTION::FULL: m_ZoneConnectionChoice->SetSelection( 1 ); break;
|
||||||
break;
|
case ZONE_CONNECTION::THERMAL: m_ZoneConnectionChoice->SetSelection( 2 ); break;
|
||||||
case ZONE_CONNECTION::FULL:
|
case ZONE_CONNECTION::NONE: m_ZoneConnectionChoice->SetSelection( 3 ); break;
|
||||||
m_ZoneConnectionChoice->SetSelection( 1 );
|
|
||||||
break;
|
|
||||||
case ZONE_CONNECTION::THERMAL:
|
|
||||||
m_ZoneConnectionChoice->SetSelection( 2 );
|
|
||||||
break;
|
|
||||||
case ZONE_CONNECTION::NONE:
|
|
||||||
m_ZoneConnectionChoice->SetSelection( 3 );
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3D Settings
|
|
||||||
m_3dPanel->ReloadModelsFromFootprint();
|
|
||||||
|
|
||||||
// Items grid
|
// Items grid
|
||||||
for( int col = 0; col < m_itemsGrid->GetNumberCols(); col++ )
|
for( int col = 0; col < m_itemsGrid->GetNumberCols(); col++ )
|
||||||
{
|
{
|
||||||
|
@ -374,7 +354,8 @@ bool DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataFromWindow()
|
||||||
if( !m_itemsGrid->CommitPendingChanges() )
|
if( !m_itemsGrid->CommitPendingChanges() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// This only commits the editor, model updating is done below
|
// This only commits the editor, model updating is done below so it is inside
|
||||||
|
// the commit
|
||||||
if( !m_3dPanel->TransferDataFromWindow() )
|
if( !m_3dPanel->TransferDataFromWindow() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -555,7 +536,9 @@ void DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnDeleteField( wxCommandEvent& event
|
||||||
int curRow = m_itemsGrid->GetGridCursorRow();
|
int curRow = m_itemsGrid->GetGridCursorRow();
|
||||||
|
|
||||||
if( curRow < 0 )
|
if( curRow < 0 )
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
else if( curRow < 2 )
|
else if( curRow < 2 )
|
||||||
{
|
{
|
||||||
DisplayError( nullptr, _( "Reference and value are mandatory." ) );
|
DisplayError( nullptr, _( "Reference and value are mandatory." ) );
|
||||||
|
@ -602,11 +585,6 @@ void DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::OnUpdateUI( wxUpdateUIEvent& event )
|
||||||
if( !m_itemsGrid->IsCellEditControlShown() )
|
if( !m_itemsGrid->IsCellEditControlShown() )
|
||||||
adjustGridColumns( m_itemsGrid->GetRect().GetWidth() );
|
adjustGridColumns( m_itemsGrid->GetRect().GetWidth() );
|
||||||
|
|
||||||
if( m_itemsGrid->IsCellEditControlShown() )
|
|
||||||
{
|
|
||||||
// Currently: nothing to do
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle a delayed focus. The delay allows us to:
|
// Handle a delayed focus. The delay allows us to:
|
||||||
// a) change focus when the error was triggered from within a killFocus handler
|
// a) change focus when the error was triggered from within a killFocus handler
|
||||||
// b) show the correct notebook page in the background before the error dialog comes up
|
// b) show the correct notebook page in the background before the error dialog comes up
|
||||||
|
|
|
@ -52,7 +52,7 @@ enum MODELS_TABLE_COLUMNS
|
||||||
};
|
};
|
||||||
|
|
||||||
PANEL_FP_PROPERTIES_3D_MODEL::PANEL_FP_PROPERTIES_3D_MODEL(
|
PANEL_FP_PROPERTIES_3D_MODEL::PANEL_FP_PROPERTIES_3D_MODEL(
|
||||||
FOOTPRINT_EDIT_FRAME* aFrame, FOOTPRINT* aFootprint, DIALOG_SHIM* aDialogParent,
|
PCB_BASE_EDIT_FRAME* aFrame, FOOTPRINT* aFootprint, DIALOG_SHIM* aDialogParent,
|
||||||
wxWindow* aParent, wxWindowID aId, const wxPoint& aPos, const wxSize& aSize, long aStyle,
|
wxWindow* aParent, wxWindowID aId, const wxPoint& aPos, const wxSize& aSize, long aStyle,
|
||||||
const wxString& aName ) :
|
const wxString& aName ) :
|
||||||
PANEL_FP_PROPERTIES_3D_MODEL_BASE( aParent, aId, aPos, aSize, aStyle, aName ),
|
PANEL_FP_PROPERTIES_3D_MODEL_BASE( aParent, aId, aPos, aSize, aStyle, aName ),
|
||||||
|
@ -119,6 +119,12 @@ PANEL_FP_PROPERTIES_3D_MODEL::~PANEL_FP_PROPERTIES_3D_MODEL()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PANEL_FP_PROPERTIES_3D_MODEL::TransferDataToWindow()
|
||||||
|
{
|
||||||
|
ReloadModelsFromFootprint();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool PANEL_FP_PROPERTIES_3D_MODEL::TransferDataFromWindow()
|
bool PANEL_FP_PROPERTIES_3D_MODEL::TransferDataFromWindow()
|
||||||
{
|
{
|
||||||
// Only commit changes in the editor, not the models
|
// Only commit changes in the editor, not the models
|
||||||
|
@ -163,9 +169,9 @@ void PANEL_FP_PROPERTIES_3D_MODEL::ReloadModelsFromFootprint()
|
||||||
updateValidateStatus( row );
|
updateValidateStatus( row );
|
||||||
}
|
}
|
||||||
|
|
||||||
select3DModel( 0 ); // will clamp idx within bounds
|
select3DModel( 0 );
|
||||||
m_previewPane->UpdateDummyFootprint();
|
|
||||||
|
|
||||||
|
m_previewPane->UpdateDummyFootprint();
|
||||||
m_modelsGrid->SetColSize( COL_SHOWN, m_modelsGrid->GetVisibleWidth( COL_SHOWN, true, false, false ) );
|
m_modelsGrid->SetColSize( COL_SHOWN, m_modelsGrid->GetVisibleWidth( COL_SHOWN, true, false, false ) );
|
||||||
|
|
||||||
Layout();
|
Layout();
|
||||||
|
@ -210,6 +216,7 @@ void PANEL_FP_PROPERTIES_3D_MODEL::On3DModelCellChanged( wxGridEvent& aEvent )
|
||||||
filename.Replace( "\r", "" );
|
filename.Replace( "\r", "" );
|
||||||
filename.Replace( "\t", "" );
|
filename.Replace( "\t", "" );
|
||||||
|
|
||||||
|
// The user is warned about failed validation through the updateValidateStatus call below
|
||||||
if( filename.empty() || !res->ValidateFileName( filename, hasAlias ) )
|
if( filename.empty() || !res->ValidateFileName( filename, hasAlias ) )
|
||||||
aEvent.Veto();
|
aEvent.Veto();
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,8 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
class DIALOG_SHIM;
|
class DIALOG_SHIM;
|
||||||
class FOOTPRINT_EDIT_FRAME;
|
|
||||||
class PANEL_PREVIEW_3D_MODEL;
|
class PANEL_PREVIEW_3D_MODEL;
|
||||||
|
class PCB_BASE_EDIT_FRAME;
|
||||||
|
|
||||||
enum class MODEL_VALIDATE_ERRORS
|
enum class MODEL_VALIDATE_ERRORS
|
||||||
{
|
{
|
||||||
|
@ -45,7 +45,7 @@ class PANEL_FP_PROPERTIES_3D_MODEL : public PANEL_FP_PROPERTIES_3D_MODEL_BASE
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
PANEL_FP_PROPERTIES_3D_MODEL( FOOTPRINT_EDIT_FRAME* aFrame, FOOTPRINT* aFootprint,
|
PANEL_FP_PROPERTIES_3D_MODEL( PCB_BASE_EDIT_FRAME* aFrame, FOOTPRINT* aFootprint,
|
||||||
DIALOG_SHIM* aDialogParent, wxWindow* aParent,
|
DIALOG_SHIM* aDialogParent, wxWindow* aParent,
|
||||||
wxWindowID aId = wxID_ANY,
|
wxWindowID aId = wxID_ANY,
|
||||||
const wxPoint& aPos = wxDefaultPosition,
|
const wxPoint& aPos = wxDefaultPosition,
|
||||||
|
@ -55,6 +55,7 @@ public:
|
||||||
|
|
||||||
~PANEL_FP_PROPERTIES_3D_MODEL() override;
|
~PANEL_FP_PROPERTIES_3D_MODEL() override;
|
||||||
|
|
||||||
|
bool TransferDataToWindow() override;
|
||||||
bool TransferDataFromWindow() override;
|
bool TransferDataFromWindow() override;
|
||||||
|
|
||||||
void ReloadModelsFromFootprint();
|
void ReloadModelsFromFootprint();
|
||||||
|
@ -85,7 +86,7 @@ private:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DIALOG_SHIM* m_parentDialog;
|
DIALOG_SHIM* m_parentDialog;
|
||||||
FOOTPRINT_EDIT_FRAME* m_frame;
|
PCB_BASE_EDIT_FRAME* m_frame;
|
||||||
FOOTPRINT* m_footprint;
|
FOOTPRINT* m_footprint;
|
||||||
|
|
||||||
std::vector<FP_3DMODEL> m_shapes3D_list;
|
std::vector<FP_3DMODEL> m_shapes3D_list;
|
||||||
|
|
Loading…
Reference in New Issue