Fix the build messages fall-behind problem...
... by getting rid of the separate window. It makes more sense to put the messages into the wizard anyway. Fixes: lp:1492836 * https://bugs.launchpad.net/kicad/+bug/1492836
This commit is contained in:
parent
e27d31d51d
commit
8badfea17a
|
@ -118,7 +118,6 @@ FOOTPRINT_WIZARD_FRAME::FOOTPRINT_WIZARD_FRAME( KIWAY* aKiway,
|
|||
// This frame is always show modal:
|
||||
SetModal( true );
|
||||
|
||||
m_messagesFrame = NULL; // This windows will be created the first time a wizard is loaded
|
||||
m_showAxis = true; // true to draw axis.
|
||||
|
||||
// Give an icon
|
||||
|
@ -153,18 +152,30 @@ FOOTPRINT_WIZARD_FRAME::FOOTPRINT_WIZARD_FRAME( KIWAY* aKiway,
|
|||
ReCreateVToolbar();
|
||||
SetActiveLayer( F_Cu );
|
||||
|
||||
// Creates the parameter pages list
|
||||
m_pageList = new wxListBox( this, ID_FOOTPRINT_WIZARD_PAGE_LIST,
|
||||
// Create the parameters panel
|
||||
m_parametersPanel = new wxPanel( this, wxID_ANY );
|
||||
|
||||
m_pageList = new wxListBox( m_parametersPanel, ID_FOOTPRINT_WIZARD_PAGE_LIST,
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
0, NULL, wxLB_HSCROLL );
|
||||
|
||||
// Creates the list of parameters for the current parameter page
|
||||
m_parameterGridPage = -1;
|
||||
m_parameterGrid = new wxGrid( m_parametersPanel, ID_FOOTPRINT_WIZARD_PARAMETER_LIST );
|
||||
initParameterGrid();
|
||||
m_parameterGrid->PushEventHandler( new GRID_TRICKS( m_parameterGrid ) );
|
||||
|
||||
ReCreatePageList();
|
||||
|
||||
wxBoxSizer* parametersSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
parametersSizer->Add( m_pageList, 0, wxEXPAND|wxALL, 5 );
|
||||
parametersSizer->Add( m_parameterGrid, 1, wxEXPAND|wxALL, 5 );
|
||||
m_parametersPanel->SetSizer( parametersSizer );
|
||||
m_parametersPanel->Layout();
|
||||
|
||||
// Create the build message box
|
||||
m_buildMessageBox = new wxTextCtrl( this, wxID_ANY, wxEmptyString,
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
wxTE_MULTILINE|wxTE_READONLY );
|
||||
|
||||
DisplayWizardInfos();
|
||||
|
||||
m_auimgr.SetManagedWindow( this );
|
||||
|
@ -182,15 +193,15 @@ FOOTPRINT_WIZARD_FRAME::FOOTPRINT_WIZARD_FRAME( KIWAY* aKiway,
|
|||
m_auimgr.AddPane( m_mainToolBar, wxAuiPaneInfo( horiztb ).
|
||||
Name( wxT ("m_mainToolBar" ) ).Top().Row( 0 ) );
|
||||
|
||||
// Manage the left window (list of parameter pages)
|
||||
EDA_PANEINFO paneList;
|
||||
paneList.InfoToolbarPane().Name( wxT( "m_pageList" ) ).Left().Row( 0 );
|
||||
m_auimgr.AddPane( m_pageList, wxAuiPaneInfo( paneList ) );
|
||||
// Manage the parameters panel
|
||||
EDA_PANEINFO parametersPaneInfo;
|
||||
parametersPaneInfo.InfoToolbarPane().Name( wxT( "m_parametersPanel" ) ).Left().Position( 0 );
|
||||
m_auimgr.AddPane( m_parametersPanel, wxAuiPaneInfo( parametersPaneInfo ) );
|
||||
|
||||
// Manage the parameters grid editor for the current parameter page
|
||||
EDA_PANEINFO panePrms;
|
||||
panePrms.InfoToolbarPane().Name( wxT( "m_parameterGrid" ) ).Left().Row( 1 );
|
||||
m_auimgr.AddPane( m_parameterGrid, wxAuiPaneInfo( panePrms ) );
|
||||
// Manage the build message box
|
||||
EDA_PANEINFO buildMessageBoxInfo;
|
||||
buildMessageBoxInfo.InfoToolbarPane().Name( wxT( "m_buildMessageBox" ) ).Left().Position( 1 );
|
||||
m_auimgr.AddPane( m_buildMessageBox, wxAuiPaneInfo( buildMessageBoxInfo ) );
|
||||
|
||||
// Manage the draw panel
|
||||
m_auimgr.AddPane( m_canvas,
|
||||
|
@ -200,14 +211,10 @@ FOOTPRINT_WIZARD_FRAME::FOOTPRINT_WIZARD_FRAME( KIWAY* aKiway,
|
|||
m_auimgr.AddPane( m_messagePanel,
|
||||
wxAuiPaneInfo( mesg ).Name( wxT( "MsgPanel" ) ).Bottom().Layer(1) );
|
||||
|
||||
// Gives a min size and the last saved size to left windows
|
||||
m_auimgr.GetPane( m_pageList ).MinSize( wxSize(60, -1 ) );
|
||||
m_auimgr.GetPane( m_pageList ).BestSize( wxSize(m_pageListWidth, -1) );
|
||||
// Give a min size to the parameters
|
||||
m_auimgr.GetPane( m_parametersPanel ).MinSize( wxSize( 360, 180 ) );
|
||||
|
||||
m_auimgr.GetPane( m_parameterGrid ).MinSize( wxSize( 120, -1 ) );
|
||||
m_auimgr.GetPane( m_parameterGrid ).BestSize( wxSize(m_parameterGridWidth, -1) );
|
||||
|
||||
m_auimgr.Update();
|
||||
m_auimgr.LoadPerspective( m_auiPerspective );
|
||||
|
||||
// Now Drawpanel is sized, we can use BestZoom to show the component (if any)
|
||||
#ifdef USE_WX_GRAPHICS_CONTEXT
|
||||
|
@ -239,9 +246,6 @@ FOOTPRINT_WIZARD_FRAME::~FOOTPRINT_WIZARD_FRAME()
|
|||
|
||||
void FOOTPRINT_WIZARD_FRAME::OnCloseWindow( wxCloseEvent& Event )
|
||||
{
|
||||
if( m_messagesFrame )
|
||||
m_messagesFrame->SaveSettings();
|
||||
|
||||
SaveSettings( config() );
|
||||
|
||||
if( IsModal() )
|
||||
|
@ -264,6 +268,7 @@ void FOOTPRINT_WIZARD_FRAME::ExportSelectedFootprint( wxCommandEvent& aEvent )
|
|||
Close();
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::OnGridSize( wxSizeEvent& aSizeEvent )
|
||||
{
|
||||
// Resize the parameter columns
|
||||
|
@ -272,6 +277,7 @@ void FOOTPRINT_WIZARD_FRAME::OnGridSize( wxSizeEvent& aSizeEvent )
|
|||
aSizeEvent.Skip();
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::OnSize( wxSizeEvent& SizeEv )
|
||||
{
|
||||
if( m_auimgr.GetManagedWindow() )
|
||||
|
@ -287,24 +293,25 @@ void FOOTPRINT_WIZARD_FRAME::OnSetRelativeOffset( wxCommandEvent& event )
|
|||
UpdateStatusBar();
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::initParameterGrid()
|
||||
{
|
||||
m_parameterGridPage = -1;
|
||||
|
||||
// Prepare the grid where parameters are displayed
|
||||
m_parameterGrid = new wxGrid( this, ID_FOOTPRINT_WIZARD_PARAMETER_LIST );
|
||||
|
||||
m_parameterGrid->CreateGrid( 0, 3 );
|
||||
|
||||
// Columns
|
||||
m_parameterGrid->SetColLabelValue( WIZ_COL_NAME, _( "Parameter" ) );
|
||||
m_parameterGrid->SetColLabelValue( WIZ_COL_VALUE, _( "Value" ) );
|
||||
m_parameterGrid->SetColLabelValue( WIZ_COL_UNITS, _( "Units" ) );
|
||||
|
||||
m_parameterGrid->SetColLabelSize( 22 );
|
||||
m_parameterGrid->SetColLabelAlignment( wxALIGN_LEFT, wxALIGN_CENTRE );
|
||||
m_parameterGrid->AutoSizeColumns();
|
||||
|
||||
// Rows
|
||||
m_parameterGrid->AutoSizeRows();
|
||||
m_parameterGrid->SetRowLabelSize( 25 );
|
||||
m_parameterGrid->SetRowLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
|
||||
m_parameterGrid->SetRowLabelSize( 0 );
|
||||
|
||||
m_parameterGrid->DisableDragGridSize();
|
||||
m_parameterGrid->DisableDragColSize();
|
||||
|
@ -387,7 +394,6 @@ void FOOTPRINT_WIZARD_FRAME::ReCreateParameterList()
|
|||
// Set the 'Name'
|
||||
m_parameterGrid->SetCellValue( i, WIZ_COL_NAME, name );
|
||||
m_parameterGrid->SetReadOnly( i, WIZ_COL_NAME );
|
||||
m_parameterGrid->SetCellAlignment( i, WIZ_COL_NAME, wxALIGN_LEFT, wxALIGN_CENTRE );
|
||||
|
||||
// Boolean parameters are displayed using a checkbox
|
||||
if( units == WIZARD_PARAM_UNITS_BOOL )
|
||||
|
@ -434,11 +440,9 @@ void FOOTPRINT_WIZARD_FRAME::ReCreateParameterList()
|
|||
// Set the 'Units'
|
||||
m_parameterGrid->SetCellValue( i, WIZ_COL_UNITS, units );
|
||||
m_parameterGrid->SetReadOnly( i, WIZ_COL_UNITS );
|
||||
m_parameterGrid->SetCellAlignment( i, WIZ_COL_UNITS, wxALIGN_LEFT, wxALIGN_CENTRE );
|
||||
|
||||
// Set the 'Value'
|
||||
m_parameterGrid->SetCellValue( i, WIZ_COL_VALUE, value );
|
||||
m_parameterGrid->SetCellAlignment( i, WIZ_COL_VALUE, wxALIGN_CENTRE, wxALIGN_CENTRE );
|
||||
}
|
||||
|
||||
ResizeParamColumns();
|
||||
|
@ -480,23 +484,14 @@ void FOOTPRINT_WIZARD_FRAME::ClickOnPageList( wxCommandEvent& event )
|
|||
}
|
||||
|
||||
|
||||
#define PAGE_LIST_WIDTH_KEY wxT( "Fpwizard_Pagelist_width" )
|
||||
#define PARAMLIST_WIDTH_KEY wxT( "Fpwizard_Paramlist_width" )
|
||||
#define AUI_PERSPECTIVE_KEY wxT( "Fpwizard_auiPerspective" )
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_FRAME::LoadSettings( wxConfigBase* aCfg )
|
||||
{
|
||||
EDA_DRAW_FRAME::LoadSettings( aCfg );
|
||||
|
||||
aCfg->Read( PAGE_LIST_WIDTH_KEY, &m_pageListWidth, 100 );
|
||||
aCfg->Read( PARAMLIST_WIDTH_KEY, &m_parameterGridWidth, 200 );
|
||||
|
||||
// Set parameters to a reasonable value.
|
||||
if( m_pageListWidth > m_FrameSize.x / 3 )
|
||||
m_pageListWidth = m_FrameSize.x / 3;
|
||||
|
||||
if( m_parameterGridWidth > m_FrameSize.x / 2 )
|
||||
m_parameterGridWidth = m_FrameSize.x / 2;
|
||||
aCfg->Read( AUI_PERSPECTIVE_KEY, &m_auiPerspective );
|
||||
}
|
||||
|
||||
|
||||
|
@ -504,8 +499,7 @@ void FOOTPRINT_WIZARD_FRAME::SaveSettings( wxConfigBase* aCfg )
|
|||
{
|
||||
EDA_DRAW_FRAME::SaveSettings( aCfg );
|
||||
|
||||
aCfg->Write( PAGE_LIST_WIDTH_KEY, m_pageList->GetSize().x );
|
||||
aCfg->Write( PARAMLIST_WIDTH_KEY, m_parameterGrid->GetSize().x );
|
||||
aCfg->Write( AUI_PERSPECTIVE_KEY, m_auimgr.SavePerspective() );
|
||||
}
|
||||
|
||||
|
||||
|
@ -739,91 +733,4 @@ void FOOTPRINT_WIZARD_FRAME::PythonPluginsReload()
|
|||
}
|
||||
#endif
|
||||
|
||||
// frame to display messages from footprint builder scripts
|
||||
FOOTPRINT_WIZARD_MESSAGES::FOOTPRINT_WIZARD_MESSAGES( FOOTPRINT_WIZARD_FRAME* aParent, wxConfigBase* aCfg ) :
|
||||
wxMiniFrame( aParent, wxID_ANY, _( "Footprint Builder Messages" ),
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
wxCAPTION | wxRESIZE_BORDER | wxFRAME_FLOAT_ON_PARENT )
|
||||
{
|
||||
m_canClose = false;
|
||||
wxBoxSizer* bSizer = new wxBoxSizer( wxVERTICAL );
|
||||
SetSizer( bSizer );
|
||||
|
||||
m_messageWindow = new wxTextCtrl( this, wxID_ANY, wxEmptyString,
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
wxTE_MULTILINE|wxTE_READONLY );
|
||||
bSizer->Add( m_messageWindow, 1, wxEXPAND, 0 );
|
||||
|
||||
m_config = aCfg;
|
||||
|
||||
LoadSettings();
|
||||
|
||||
SetSize( m_position.x, m_position.y, m_size.x, m_size.y );
|
||||
|
||||
m_messageWindow->SetMinSize( wxSize( 350, 250 ) );
|
||||
Layout();
|
||||
|
||||
bSizer->SetSizeHints( this );
|
||||
}
|
||||
|
||||
|
||||
FOOTPRINT_WIZARD_MESSAGES::~FOOTPRINT_WIZARD_MESSAGES()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BEGIN_EVENT_TABLE( FOOTPRINT_WIZARD_MESSAGES, wxMiniFrame )
|
||||
EVT_CLOSE( FOOTPRINT_WIZARD_MESSAGES::OnCloseMsgWindow )
|
||||
END_EVENT_TABLE()
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_MESSAGES::OnCloseMsgWindow( wxCloseEvent& aEvent )
|
||||
{
|
||||
if( !m_canClose )
|
||||
aEvent.Veto();
|
||||
else
|
||||
aEvent.Skip();
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_MESSAGES::PrintMessage( const wxString& aMessage )
|
||||
{
|
||||
m_messageWindow->SetValue( aMessage );
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_MESSAGES::ClearScreen()
|
||||
{
|
||||
m_messageWindow->Clear();
|
||||
}
|
||||
|
||||
|
||||
#define MESSAGE_BOX_POSX_KEY wxT( "Fpwizard_Msg_PosX" )
|
||||
#define MESSAGE_BOX_POSY_KEY wxT( "Fpwizard_Msg_PosY" )
|
||||
#define MESSAGE_BOX_SIZEX_KEY wxT( "Fpwizard_Msg_SIZEX" )
|
||||
#define MESSAGE_BOX_SIZEY_KEY wxT( "Fpwizard_Msg_SIZEY" )
|
||||
|
||||
void FOOTPRINT_WIZARD_MESSAGES::SaveSettings()
|
||||
{
|
||||
if( !IsIconized() )
|
||||
{
|
||||
m_position = GetPosition();
|
||||
m_size = GetSize();
|
||||
}
|
||||
|
||||
m_config->Write( MESSAGE_BOX_POSX_KEY, m_position.x );
|
||||
m_config->Write( MESSAGE_BOX_POSY_KEY, m_position.y );
|
||||
m_config->Write( MESSAGE_BOX_SIZEX_KEY, m_size.x );
|
||||
m_config->Write( MESSAGE_BOX_SIZEY_KEY, m_size.y );
|
||||
|
||||
m_canClose = false; // close event now allowed
|
||||
}
|
||||
|
||||
|
||||
void FOOTPRINT_WIZARD_MESSAGES::LoadSettings()
|
||||
{
|
||||
m_config->Read( MESSAGE_BOX_POSX_KEY, &m_position.x, -1 );
|
||||
m_config->Read( MESSAGE_BOX_POSY_KEY, &m_position.y, -1 );
|
||||
m_config->Read( MESSAGE_BOX_SIZEX_KEY, &m_size.x, 350 );
|
||||
m_config->Read( MESSAGE_BOX_SIZEY_KEY, &m_size.y, 250 );
|
||||
}
|
||||
|
|
|
@ -39,8 +39,6 @@ class wxGrid;
|
|||
class wxGridEvent;
|
||||
class FOOTPRINT_EDIT_FRAME;
|
||||
|
||||
// A helper class to display messages when building a footprint
|
||||
class FOOTPRINT_WIZARD_MESSAGES;
|
||||
|
||||
enum WizardParameterColumnNames
|
||||
{
|
||||
|
@ -55,14 +53,15 @@ enum WizardParameterColumnNames
|
|||
class FOOTPRINT_WIZARD_FRAME : public PCB_BASE_FRAME
|
||||
{
|
||||
private:
|
||||
wxPanel* m_parametersPanel; ///< Panel for the page list and parameter grid
|
||||
wxListBox* m_pageList; ///< The list of pages
|
||||
int m_pageListWidth; ///< width of the window
|
||||
wxGrid* m_parameterGrid; ///< The list of parameters
|
||||
int m_parameterGridWidth; ///< size of the grid
|
||||
int m_parameterGridPage; ///< the page currently displayed by m_parameterGrid
|
||||
///< it is most of time the m_pageList selection, but can differ
|
||||
///< during transitions between pages.
|
||||
FOOTPRINT_WIZARD_MESSAGES* m_messagesFrame;
|
||||
wxTextCtrl* m_buildMessageBox;
|
||||
|
||||
wxString m_auiPerspective; ///< Encoded string describing the AUI layout
|
||||
|
||||
protected:
|
||||
wxString m_wizardName; ///< name of the current wizard
|
||||
|
@ -225,27 +224,5 @@ private:
|
|||
};
|
||||
|
||||
|
||||
// A miniframe to display messages from the builder
|
||||
class FOOTPRINT_WIZARD_MESSAGES: public wxMiniFrame
|
||||
{
|
||||
public:
|
||||
FOOTPRINT_WIZARD_MESSAGES( FOOTPRINT_WIZARD_FRAME* aParent, wxConfigBase* aCfg );
|
||||
~FOOTPRINT_WIZARD_MESSAGES();
|
||||
void PrintMessage( const wxString& aMessage );
|
||||
void ClearScreen();
|
||||
void SaveSettings();
|
||||
void LoadSettings();
|
||||
|
||||
private:
|
||||
wxTextCtrl* m_messageWindow;
|
||||
wxPoint m_position;
|
||||
wxSize m_size;
|
||||
wxConfigBase* m_config;
|
||||
bool m_canClose; // false to veto a close event, true to allow it
|
||||
|
||||
void OnCloseMsgWindow( wxCloseEvent& aEvent );
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
#endif // FOOTPRINT_WIZARD_FRM_H_
|
||||
|
|
|
@ -146,17 +146,7 @@ void FOOTPRINT_WIZARD_FRAME::ReloadFootprint()
|
|||
|
||||
void FOOTPRINT_WIZARD_FRAME::DisplayBuildMessage( wxString& aMessage )
|
||||
{
|
||||
if( m_messagesFrame == NULL )
|
||||
{
|
||||
// Prepare the window to display the message generated by the footprint script builder
|
||||
m_messagesFrame = new FOOTPRINT_WIZARD_MESSAGES( this, config() );
|
||||
m_messagesFrame->Show( true );
|
||||
}
|
||||
|
||||
m_messagesFrame->ClearScreen();
|
||||
|
||||
if( !aMessage.IsEmpty() )
|
||||
m_messagesFrame->PrintMessage( aMessage );
|
||||
m_buildMessageBox->SetValue( aMessage );
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue