Update pcbnew to the new filedlg customize
This commit is contained in:
parent
ff94d289c7
commit
cb44d97ed4
|
@ -65,7 +65,11 @@
|
||||||
#include <wx/wupdlock.h>
|
#include <wx/wupdlock.h>
|
||||||
#include <wx/filedlg.h>
|
#include <wx/filedlg.h>
|
||||||
|
|
||||||
|
#if wxCHECK_VERSION( 3, 1, 7 )
|
||||||
|
#include "widgets/filedlg_hook_save_project.h"
|
||||||
|
#else
|
||||||
|
#include "widgets/legacyfiledlg_save_project.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
//#define USE_INSTRUMENTATION 1
|
//#define USE_INSTRUMENTATION 1
|
||||||
#define USE_INSTRUMENTATION 0
|
#define USE_INSTRUMENTATION 0
|
||||||
|
@ -204,40 +208,6 @@ bool AskLoadBoardFileName( PCB_EDIT_FRAME* aParent, int* aCtl, wxString* aFileNa
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///< Helper widget to select whether a new project should be created for a file when saving
|
|
||||||
class CREATE_PROJECT_CHECKBOX : public wxPanel
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
CREATE_PROJECT_CHECKBOX( wxWindow* aParent )
|
|
||||||
: wxPanel( aParent )
|
|
||||||
{
|
|
||||||
m_cbCreateProject = new wxCheckBox( this, wxID_ANY,
|
|
||||||
_( "Create a new project for this board" ) );
|
|
||||||
m_cbCreateProject->SetValue( true );
|
|
||||||
m_cbCreateProject->SetToolTip( _( "Creating a project will enable features such as "
|
|
||||||
"design rules, net classes, and layer presets" ) );
|
|
||||||
|
|
||||||
wxBoxSizer* sizer = new wxBoxSizer( wxHORIZONTAL );
|
|
||||||
sizer->Add( m_cbCreateProject, 0, wxALL, 8 );
|
|
||||||
|
|
||||||
SetSizerAndFit( sizer );
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GetValue() const
|
|
||||||
{
|
|
||||||
return m_cbCreateProject->GetValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
static wxWindow* Create( wxWindow* aParent )
|
|
||||||
{
|
|
||||||
return new CREATE_PROJECT_CHECKBOX( aParent );
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
|
||||||
wxCheckBox* m_cbCreateProject;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Put up a wxFileDialog asking for a BOARD filename to save.
|
* Put up a wxFileDialog asking for a BOARD filename to save.
|
||||||
*
|
*
|
||||||
|
@ -257,9 +227,20 @@ bool AskSaveBoardFileName( PCB_EDIT_FRAME* aParent, wxString* aFileName, bool* a
|
||||||
wxFileDialog dlg( aParent, _( "Save Board File As" ), fn.GetPath(), fn.GetFullName(), wildcard,
|
wxFileDialog dlg( aParent, _( "Save Board File As" ), fn.GetPath(), fn.GetFullName(), wildcard,
|
||||||
wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
|
wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
|
||||||
|
|
||||||
|
#if wxCHECK_VERSION( 3, 1, 7 )
|
||||||
|
FILEDLG_HOOK_SAVE_PROJECT newProjectHook;
|
||||||
|
bool checkHook = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if wxCHECK_VERSION( 3, 1, 7 )
|
||||||
|
dlg.SetCustomizeHook( newProjectHook );
|
||||||
|
checkHook = true;
|
||||||
|
#else
|
||||||
// Add a "Create a project" checkbox in standalone mode and one isn't loaded
|
// Add a "Create a project" checkbox in standalone mode and one isn't loaded
|
||||||
if( Kiface().IsSingle() && aParent->Prj().IsNullProject() )
|
if( Kiface().IsSingle() && aParent->Prj().IsNullProject() )
|
||||||
dlg.SetExtraControlCreator( &CREATE_PROJECT_CHECKBOX::Create );
|
dlg.SetExtraControlCreator( &LEGACYFILEDLG_SAVE_PROJECT::Create );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if( dlg.ShowModal() != wxID_OK )
|
if( dlg.ShowModal() != wxID_OK )
|
||||||
return false;
|
return false;
|
||||||
|
@ -271,10 +252,17 @@ bool AskSaveBoardFileName( PCB_EDIT_FRAME* aParent, wxString* aFileName, bool* a
|
||||||
|
|
||||||
*aFileName = fn.GetFullPath();
|
*aFileName = fn.GetFullPath();
|
||||||
|
|
||||||
if( wxWindow* extraControl = dlg.GetExtraControl() )
|
#if wxCHECK_VERSION( 3, 1, 7 )
|
||||||
*aCreateProject = static_cast<CREATE_PROJECT_CHECKBOX*>( extraControl )->GetValue();
|
if( checkHook )
|
||||||
|
*aCreateProject = newProjectHook.GetCreateNewProject();
|
||||||
else if( !aParent->Prj().IsNullProject() )
|
else if( !aParent->Prj().IsNullProject() )
|
||||||
*aCreateProject = true;
|
*aCreateProject = true;
|
||||||
|
#else
|
||||||
|
if( wxWindow* ec = dlg.GetExtraControl() )
|
||||||
|
*aCreateProject = static_cast<LEGACYFILEDLG_SAVE_PROJECT*>( ec )->GetValue();
|
||||||
|
else if( !aParent->Prj().IsNullProject() )
|
||||||
|
*aCreateProject = true;
|
||||||
|
#endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
* Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
* option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along
|
||||||
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FILEDLG_HOOK_SAVE_PROJECT_H
|
||||||
|
#define FILEDLG_HOOK_SAVE_PROJECT_H
|
||||||
|
|
||||||
|
#include <wx/filedlgcustomize.h>
|
||||||
|
|
||||||
|
class FILEDLG_HOOK_SAVE_PROJECT : public wxFileDialogCustomizeHook
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FILEDLG_HOOK_SAVE_PROJECT(){};
|
||||||
|
|
||||||
|
virtual void AddCustomControls( wxFileDialogCustomize& customizer ) override
|
||||||
|
{
|
||||||
|
m_cb = customizer.AddCheckBox( _( "Create a new project for this board" ) );
|
||||||
|
m_cb->SetValue( true );
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void TransferDataFromCustomControls() override
|
||||||
|
{
|
||||||
|
m_createNewProject = m_cb->GetValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
///< Gets the selected state of the create new project option
|
||||||
|
bool GetCreateNewProject() const { return m_createNewProject; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_createNewProject;
|
||||||
|
|
||||||
|
wxFileDialogCheckBox* m_cb;
|
||||||
|
|
||||||
|
wxDECLARE_NO_COPY_CLASS( FILEDLG_HOOK_SAVE_PROJECT );
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
* Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
* option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along
|
||||||
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LEGACYFILEDLG_SAVE_PROJ_H
|
||||||
|
#define LEGACYFILEDLG_SVE_PROJ_H
|
||||||
|
|
||||||
|
#include <wx/checkbox.h>
|
||||||
|
#include <wx/panel.h>
|
||||||
|
#include <wx/sizer.h>
|
||||||
|
|
||||||
|
///< Helper widget to select whether a new project should be created for a file when saving
|
||||||
|
class LEGACYFILEDLG_SAVE_PROJECT : public wxPanel
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LEGACYFILEDLG_SAVE_PROJECT( wxWindow* aParent ) : wxPanel( aParent )
|
||||||
|
{
|
||||||
|
m_cbCreateProject =
|
||||||
|
new wxCheckBox( this, wxID_ANY, _( "Create a new project for this board" ) );
|
||||||
|
m_cbCreateProject->SetValue( true );
|
||||||
|
m_cbCreateProject->SetToolTip( _( "Creating a project will enable features such as "
|
||||||
|
"design rules, net classes, and layer presets" ) );
|
||||||
|
|
||||||
|
wxBoxSizer* sizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
sizer->Add( m_cbCreateProject, 0, wxALL, 8 );
|
||||||
|
|
||||||
|
SetSizerAndFit( sizer );
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GetValue() const { return m_cbCreateProject->GetValue(); }
|
||||||
|
|
||||||
|
static wxWindow* Create( wxWindow* aParent )
|
||||||
|
{
|
||||||
|
return new LEGACYFILEDLG_SAVE_PROJECT( aParent );
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxCheckBox* m_cbCreateProject;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue