diff --git a/common/jobs/job_special_execute.cpp b/common/jobs/job_special_execute.cpp index 634f55cd22..99d0f5e0ea 100644 --- a/common/jobs/job_special_execute.cpp +++ b/common/jobs/job_special_execute.cpp @@ -36,8 +36,8 @@ JOB_SPECIAL_EXECUTE::JOB_SPECIAL_EXECUTE( bool aIsCli ) : wxString JOB_SPECIAL_EXECUTE::GetDescription() { - return wxString( "Execute command: " ) + m_command; + return wxString( "Execute command: " ) + m_command; } -REGISTER_JOB( special_execute, _HKI( "Execute Command" ), KIWAY::KIWAY_FACE_COUNT, +REGISTER_JOB( special_execute, _HKI( "Special: Execute Command" ), KIWAY::KIWAY_FACE_COUNT, JOB_SPECIAL_EXECUTE ); \ No newline at end of file diff --git a/kicad/CMakeLists.txt b/kicad/CMakeLists.txt index 9b03358f0c..63a5146725 100644 --- a/kicad/CMakeLists.txt +++ b/kicad/CMakeLists.txt @@ -17,6 +17,8 @@ include_directories( ) set( KICAD_SRCS + dialogs/dialog_job_config_base.cpp + dialogs/dialog_special_execute.cpp dialogs/dialog_update_check_prompt_base.cpp dialogs/dialog_update_check_prompt.cpp dialogs/dialog_update_notice_base.cpp @@ -25,7 +27,6 @@ set( KICAD_SRCS dialogs/dialog_template_selector.cpp dialogs/panel_kicad_launcher_base.cpp dialogs/panel_kicad_launcher.cpp - dialogs/dialog_job_config_base.cpp dialogs/panel_jobs_base.cpp dialogs/panel_jobs.cpp files-io.cpp diff --git a/kicad/dialogs/dialog_special_execute.cpp b/kicad/dialogs/dialog_special_execute.cpp new file mode 100644 index 0000000000..f757dd79c4 --- /dev/null +++ b/kicad/dialogs/dialog_special_execute.cpp @@ -0,0 +1,58 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2024 Mark Roszko + * Copyright (C) 2024 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 . + */ + +#include +#include + +DIALOG_SPECIAL_EXECUTE::DIALOG_SPECIAL_EXECUTE( wxWindow* aParent, JOB_SPECIAL_EXECUTE* aJob ) : + DIALOG_SPECIAL_EXECUTE_BASE( aParent ), + m_job( aJob ) +{ + SetAffirmativeId( wxID_SAVE ); +} + + +bool DIALOG_SPECIAL_EXECUTE::TransferDataFromWindow() +{ + m_job->m_command = m_textCtrlCommand->GetValue(); + m_job->m_ignoreExitcode = m_cbIgnoreExitCode->GetValue(); + m_job->m_recordOutput = m_cbRecordOutput->GetValue(); + m_job->SetOutputPath( m_textCtrlOutputPath->GetValue() ); + + return true; +} + + +bool DIALOG_SPECIAL_EXECUTE::TransferDataToWindow() +{ + m_textCtrlCommand->SetValue( m_job->m_command ); + m_cbIgnoreExitCode->SetValue( m_job->m_ignoreExitcode ); + m_cbRecordOutput->SetValue( m_job->m_recordOutput ); + + m_textCtrlOutputPath->Enable( m_cbRecordOutput->GetValue() ); + + return true; +} + + +void DIALOG_SPECIAL_EXECUTE::OnRecordOutputClicked( wxCommandEvent& aEvent ) +{ + m_textCtrlOutputPath->Enable( m_cbRecordOutput->GetValue() ); +} \ No newline at end of file diff --git a/kicad/dialogs/dialog_special_execute.h b/kicad/dialogs/dialog_special_execute.h new file mode 100644 index 0000000000..b01a4ebaae --- /dev/null +++ b/kicad/dialogs/dialog_special_execute.h @@ -0,0 +1,37 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2024 Mark Roszko + * Copyright (C) 2024 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 . + */ + +#include + +class JOB_SPECIAL_EXECUTE; + +class DIALOG_SPECIAL_EXECUTE: public DIALOG_SPECIAL_EXECUTE_BASE +{ +public: + DIALOG_SPECIAL_EXECUTE( wxWindow* aParent, JOB_SPECIAL_EXECUTE* aJob ); + + bool TransferDataFromWindow() override; + bool TransferDataToWindow() override; + +private: + JOB_SPECIAL_EXECUTE* m_job; + + void OnRecordOutputClicked( wxCommandEvent& event ) override; +}; \ No newline at end of file diff --git a/kicad/dialogs/panel_jobs.cpp b/kicad/dialogs/panel_jobs.cpp index e93236cdb6..99aa4665bf 100644 --- a/kicad/dialogs/panel_jobs.cpp +++ b/kicad/dialogs/panel_jobs.cpp @@ -42,6 +42,9 @@ #include +#include +#include + struct JOB_TYPE_INFO { @@ -408,13 +411,27 @@ void PANEL_JOBS::buildOutputList() void PANEL_JOBS::openJobOptionsForListItem( size_t aItemIndex ) { - EnsurePcbSchFramesOpen(); - JOBSET_JOB& job = m_jobsFile->GetJobs()[aItemIndex]; KIWAY::FACE_T iface = JOB_REGISTRY::GetKifaceType( job.m_type ); - m_frame->Kiway().ProcessJobConfigDialog( iface, job.m_job, m_frame ); + if( iface < KIWAY::KIWAY_FACE_COUNT ) + { + EnsurePcbSchFramesOpen(); + + m_frame->Kiway().ProcessJobConfigDialog( iface, job.m_job, m_frame ); + } + else + { + // special jobs + if( job.m_job->GetType() == "special_execute" ) + { + JOB_SPECIAL_EXECUTE* specialJob = static_cast( job.m_job ); + + DIALOG_SPECIAL_EXECUTE dialog( m_frame, specialJob ); + dialog.ShowModal(); + } + } } diff --git a/kicad/dialogs/panel_jobs_base.cpp b/kicad/dialogs/panel_jobs_base.cpp index 4f5691a109..6ef826c8f4 100644 --- a/kicad/dialogs/panel_jobs_base.cpp +++ b/kicad/dialogs/panel_jobs_base.cpp @@ -13,8 +13,8 @@ PANEL_JOBS_BASE::PANEL_JOBS_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : PANEL_NOTEBOOK_BASE( parent, id, pos, size, style, name ) { - wxBoxSizer* bSizer1; - bSizer1 = new wxBoxSizer( wxHORIZONTAL ); + wxBoxSizer* bSizerMain; + bSizerMain = new wxBoxSizer( wxHORIZONTAL ); wxBoxSizer* bSizer3; bSizer3 = new wxBoxSizer( wxVERTICAL ); @@ -48,7 +48,7 @@ PANEL_JOBS_BASE::PANEL_JOBS_BASE( wxWindow* parent, wxWindowID id, const wxPoint bSizer3->Add( bSizer2, 0, wxEXPAND, 5 ); - bSizer1->Add( bSizer3, 2, wxEXPAND, 5 ); + bSizerMain->Add( bSizer3, 2, wxEXPAND, 5 ); wxBoxSizer* bSizer4; bSizer4 = new wxBoxSizer( wxVERTICAL ); @@ -82,10 +82,10 @@ PANEL_JOBS_BASE::PANEL_JOBS_BASE( wxWindow* parent, wxWindowID id, const wxPoint bSizer4->Add( m_buttonRunAllOutputs, 0, wxALIGN_RIGHT|wxALL, 5 ); - bSizer1->Add( bSizer4, 1, wxEXPAND, 5 ); + bSizerMain->Add( bSizer4, 1, wxEXPAND, 5 ); - this->SetSizer( bSizer1 ); + this->SetSizer( bSizerMain ); this->Layout(); // Connect Events @@ -117,11 +117,11 @@ PANEL_JOB_OUTPUT_BASE::PANEL_JOB_OUTPUT_BASE( wxWindow* parent, wxWindowID id, c { this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_3DLIGHT ) ); - wxBoxSizer* bSizer11; - bSizer11 = new wxBoxSizer( wxHORIZONTAL ); + wxBoxSizer* bSizerMain; + bSizerMain = new wxBoxSizer( wxHORIZONTAL ); m_bitmapOutputType = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); - bSizer11->Add( m_bitmapOutputType, 0, wxALL, 5 ); + bSizerMain->Add( m_bitmapOutputType, 0, wxALL, 5 ); wxBoxSizer* bSizer12; bSizer12 = new wxBoxSizer( wxVERTICAL ); @@ -133,7 +133,7 @@ PANEL_JOB_OUTPUT_BASE::PANEL_JOB_OUTPUT_BASE( wxWindow* parent, wxWindowID id, c bSizer12->Add( m_textOutputType, 0, wxALL, 5 ); - bSizer11->Add( bSizer12, 1, wxEXPAND, 5 ); + bSizerMain->Add( bSizer12, 1, wxEXPAND, 5 ); wxBoxSizer* bSizer13; bSizer13 = new wxBoxSizer( wxVERTICAL ); @@ -145,12 +145,12 @@ PANEL_JOB_OUTPUT_BASE::PANEL_JOB_OUTPUT_BASE( wxWindow* parent, wxWindowID id, c bSizer13->Add( m_buttonOutputOptions, 0, wxALL, 5 ); - bSizer11->Add( bSizer13, 0, wxEXPAND, 5 ); + bSizerMain->Add( bSizer13, 0, wxEXPAND, 5 ); - this->SetSizer( bSizer11 ); + this->SetSizer( bSizerMain ); this->Layout(); - bSizer11->Fit( this ); + bSizerMain->Fit( this ); // Connect Events m_buttonOutputRun->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_JOB_OUTPUT_BASE::OnOutputRunClick ), NULL, this ); @@ -169,14 +169,14 @@ DIALOG_JOB_OUTPUT_BASE::DIALOG_JOB_OUTPUT_BASE( wxWindow* parent, wxWindowID id, { this->SetSizeHints( wxDefaultSize, wxDefaultSize ); - wxBoxSizer* bSizer15; - bSizer15 = new wxBoxSizer( wxVERTICAL ); + wxBoxSizer* bSizerMain; + bSizerMain = new wxBoxSizer( wxVERTICAL ); m_staticText9 = new wxStaticText( this, wxID_ANY, wxT("Options"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText9->Wrap( -1 ); m_staticText9->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); - bSizer15->Add( m_staticText9, 0, wxALL, 5 ); + bSizerMain->Add( m_staticText9, 0, wxALL, 5 ); m_panel9 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); wxFlexGridSizer* fgSizer1; @@ -224,7 +224,7 @@ DIALOG_JOB_OUTPUT_BASE::DIALOG_JOB_OUTPUT_BASE( wxWindow* parent, wxWindowID id, m_panel9->SetSizer( fgSizer1 ); m_panel9->Layout(); fgSizer1->Fit( m_panel9 ); - bSizer15->Add( m_panel9, 1, wxEXPAND | wxALL, 5 ); + bSizerMain->Add( m_panel9, 1, wxEXPAND | wxALL, 5 ); m_sdbSizer1 = new wxStdDialogButtonSizer(); m_sdbSizer1Save = new wxButton( this, wxID_SAVE ); @@ -233,10 +233,10 @@ DIALOG_JOB_OUTPUT_BASE::DIALOG_JOB_OUTPUT_BASE( wxWindow* parent, wxWindowID id, m_sdbSizer1->AddButton( m_sdbSizer1Cancel ); m_sdbSizer1->Realize(); - bSizer15->Add( m_sdbSizer1, 0, wxEXPAND, 5 ); + bSizerMain->Add( m_sdbSizer1, 0, wxEXPAND, 5 ); - this->SetSizer( bSizer15 ); + this->SetSizer( bSizerMain ); this->Layout(); this->Centre( wxBOTH ); @@ -251,3 +251,85 @@ DIALOG_JOB_OUTPUT_BASE::~DIALOG_JOB_OUTPUT_BASE() m_buttonOutputPath->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_JOB_OUTPUT_BASE::onOutputPathBrowseClicked ), NULL, this ); } + +DIALOG_SPECIAL_EXECUTE_BASE::DIALOG_SPECIAL_EXECUTE_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizerMain; + bSizerMain = new wxBoxSizer( wxVERTICAL ); + + m_staticText9 = new wxStaticText( this, wxID_ANY, wxT("Options"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText9->Wrap( -1 ); + m_staticText9->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + + bSizerMain->Add( m_staticText9, 0, wxALL, 5 ); + + m_panel9 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer1; + fgSizer1 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer1->SetFlexibleDirection( wxBOTH ); + fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_textCommand = new wxStaticText( m_panel9, wxID_ANY, wxT("Command"), wxDefaultPosition, wxDefaultSize, 0 ); + m_textCommand->Wrap( -1 ); + fgSizer1->Add( m_textCommand, 0, wxALL, 5 ); + + m_textCtrlCommand = new wxTextCtrl( m_panel9, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_textCtrlCommand->SetMinSize( wxSize( 350,-1 ) ); + + fgSizer1->Add( m_textCtrlCommand, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + + fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_cbRecordOutput = new wxCheckBox( m_panel9, wxID_ANY, wxT("Record Output"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer1->Add( m_cbRecordOutput, 0, wxALL, 5 ); + + m_textOutputPath = new wxStaticText( m_panel9, wxID_ANY, wxT("Output Path"), wxDefaultPosition, wxDefaultSize, 0 ); + m_textOutputPath->Wrap( -1 ); + fgSizer1->Add( m_textOutputPath, 0, wxALL, 5 ); + + m_textCtrlOutputPath = new wxTextCtrl( m_panel9, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_textCtrlOutputPath->SetMinSize( wxSize( 350,-1 ) ); + + fgSizer1->Add( m_textCtrlOutputPath, 0, wxALL, 5 ); + + + fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 ); + + m_cbIgnoreExitCode = new wxCheckBox( m_panel9, wxID_ANY, wxT("Ignore non-zero exit code"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer1->Add( m_cbIgnoreExitCode, 1, wxALL, 5 ); + + + m_panel9->SetSizer( fgSizer1 ); + m_panel9->Layout(); + fgSizer1->Fit( m_panel9 ); + bSizerMain->Add( m_panel9, 1, wxEXPAND | wxALL, 5 ); + + m_sdbSizer1 = new wxStdDialogButtonSizer(); + m_sdbSizer1Save = new wxButton( this, wxID_SAVE ); + m_sdbSizer1->AddButton( m_sdbSizer1Save ); + m_sdbSizer1Cancel = new wxButton( this, wxID_CANCEL ); + m_sdbSizer1->AddButton( m_sdbSizer1Cancel ); + m_sdbSizer1->Realize(); + + bSizerMain->Add( m_sdbSizer1, 0, wxEXPAND, 5 ); + + + this->SetSizer( bSizerMain ); + this->Layout(); + bSizerMain->Fit( this ); + + this->Centre( wxBOTH ); + + // Connect Events + m_cbRecordOutput->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SPECIAL_EXECUTE_BASE::OnRecordOutputClicked ), NULL, this ); +} + +DIALOG_SPECIAL_EXECUTE_BASE::~DIALOG_SPECIAL_EXECUTE_BASE() +{ + // Disconnect Events + m_cbRecordOutput->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_SPECIAL_EXECUTE_BASE::OnRecordOutputClicked ), NULL, this ); + +} diff --git a/kicad/dialogs/panel_jobs_base.fbp b/kicad/dialogs/panel_jobs_base.fbp index cce31bc59e..78667d5d30 100644 --- a/kicad/dialogs/panel_jobs_base.fbp +++ b/kicad/dialogs/panel_jobs_base.fbp @@ -57,7 +57,7 @@ wxTAB_TRAVERSAL - bSizer1 + bSizerMain wxHORIZONTAL none @@ -847,7 +847,7 @@ wxBORDER_SIMPLE|wxTAB_TRAVERSAL - bSizer11 + bSizerMain wxHORIZONTAL none @@ -1175,7 +1175,7 @@ - bSizer15 + bSizerMain wxVERTICAL none @@ -1797,5 +1797,596 @@ + + 0 + wxAUI_MGR_DEFAULT + + wxBOTH + + 1 + 0 + 1 + impl_virtual + + + + 0 + wxID_ANY + + + DIALOG_SPECIAL_EXECUTE_BASE + + + wxDEFAULT_DIALOG_STYLE + DIALOG_SHIM; dialog_shim.h; forward_declare + + + 0 + + + + + + bSizerMain + wxVERTICAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + ,90,700,-1,70,0 + 0 + 0 + wxID_ANY + Options + 0 + + 0 + + + 0 + + 1 + m_staticText9 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxEXPAND | wxALL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panel9 + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + + + + wxTAB_TRAVERSAL + + 2 + wxBOTH + + + 0 + + fgSizer1 + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Command + 0 + + 0 + + + 0 + + 1 + m_textCommand + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + 350,-1 + 1 + m_textCtrlCommand + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Record Output + + 0 + + + 0 + + 1 + m_cbRecordOutput + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnRecordOutputClicked + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Output Path + 0 + + 0 + + + 0 + + 1 + m_textOutputPath + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + 350,-1 + 1 + m_textCtrlOutputPath + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxEXPAND + 1 + + 0 + protected + 0 + + + + 5 + wxALL + 1 + + 1 + 1 + 1 + 1 + 0 + + 0 + 0 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 0 + 1 + + 1 + + 0 + 0 + wxID_ANY + Ignore non-zero exit code + + 0 + + + 0 + + 1 + m_cbIgnoreExitCode + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + 5 + wxEXPAND + 0 + + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + m_sdbSizer1 + protected + + + + diff --git a/kicad/dialogs/panel_jobs_base.h b/kicad/dialogs/panel_jobs_base.h index 8aef5b3433..3a461a3826 100644 --- a/kicad/dialogs/panel_jobs_base.h +++ b/kicad/dialogs/panel_jobs_base.h @@ -33,6 +33,7 @@ class STD_BITMAP_BUTTON; #include #include #include +#include /////////////////////////////////////////////////////////////////////////// @@ -134,3 +135,35 @@ class DIALOG_JOB_OUTPUT_BASE : public DIALOG_SHIM }; +/////////////////////////////////////////////////////////////////////////////// +/// Class DIALOG_SPECIAL_EXECUTE_BASE +/////////////////////////////////////////////////////////////////////////////// +class DIALOG_SPECIAL_EXECUTE_BASE : public DIALOG_SHIM +{ + private: + + protected: + wxStaticText* m_staticText9; + wxPanel* m_panel9; + wxStaticText* m_textCommand; + wxTextCtrl* m_textCtrlCommand; + wxCheckBox* m_cbRecordOutput; + wxStaticText* m_textOutputPath; + wxTextCtrl* m_textCtrlOutputPath; + wxCheckBox* m_cbIgnoreExitCode; + wxStdDialogButtonSizer* m_sdbSizer1; + wxButton* m_sdbSizer1Save; + wxButton* m_sdbSizer1Cancel; + + // Virtual event handlers, override them in your derived class + virtual void OnRecordOutputClicked( wxCommandEvent& event ) { event.Skip(); } + + + public: + + DIALOG_SPECIAL_EXECUTE_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE ); + + ~DIALOG_SPECIAL_EXECUTE_BASE(); + +}; +