kicad-source/kicad/dialogs/dialog_executecommand_job_settings.cpp

90 lines
3.0 KiB
C++
Raw Normal View History

2024-10-22 22:29:14 -04:00
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2024 Mark Roszko <mark.roszko@gmail.com>
* Copyright The KiCad Developers, see AUTHORS.txt for contributors.
2024-10-22 22:29:14 -04:00
*
* 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/>.
*/
#include <dialogs/dialog_executecommand_job_settings.h>
2024-10-22 22:29:14 -04:00
#include <jobs/job_special_execute.h>
#include <scintilla_tricks.h>
#include <env_vars.h>
2024-10-22 22:29:14 -04:00
DIALOG_EXECUTECOMMAND_JOB_SETTINGS::DIALOG_EXECUTECOMMAND_JOB_SETTINGS( wxWindow* aParent,
JOB_SPECIAL_EXECUTE* aJob ) :
DIALOG_EXECUTECOMMAND_JOB_SETTINGS_BASE( aParent ),
m_job( aJob ),
m_scintillaTricks( nullptr )
2024-10-22 22:29:14 -04:00
{
m_scintillaTricks = new SCINTILLA_TRICKS( m_textCtrlCommand, wxT( "{}" ), false,
// onAcceptFn
[this]( wxKeyEvent& aEvent )
{
wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
},
// onCharFn
[this]( wxStyledTextEvent& aEvent )
{
m_scintillaTricks->DoTextVarAutocomplete(
// getTokensFn
[]( const wxString& xRef, wxArrayString* tokens )
{
ENV_VAR::GetEnvVarAutocompleteTokens( tokens );
} );
} );
SetupStandardButtons();
finishDialogSettings();
2024-10-22 22:29:14 -04:00
}
DIALOG_EXECUTECOMMAND_JOB_SETTINGS::~DIALOG_EXECUTECOMMAND_JOB_SETTINGS()
{
delete m_scintillaTricks;
}
bool DIALOG_EXECUTECOMMAND_JOB_SETTINGS::TransferDataFromWindow()
2024-10-22 22:29:14 -04:00
{
m_job->m_command = m_textCtrlCommand->GetValue();
m_job->m_ignoreExitcode = m_cbIgnoreExitCode->GetValue();
m_job->m_recordOutput = m_cbRecordOutput->GetValue();
m_job->SetConfiguredOutputPath( m_textCtrlOutputPath->GetValue() );
2024-10-22 22:29:14 -04:00
return true;
}
bool DIALOG_EXECUTECOMMAND_JOB_SETTINGS::TransferDataToWindow()
2024-10-22 22:29:14 -04:00
{
m_textCtrlCommand->SetValue( m_job->m_command );
m_cbIgnoreExitCode->SetValue( m_job->m_ignoreExitcode );
m_cbRecordOutput->SetValue( m_job->m_recordOutput );
m_textCtrlOutputPath->SetValue( m_job->GetConfiguredOutputPath() );
2024-10-22 22:29:14 -04:00
m_textCtrlOutputPath->Enable( m_cbRecordOutput->GetValue() );
return true;
}
void DIALOG_EXECUTECOMMAND_JOB_SETTINGS::OnRecordOutputClicked( wxCommandEvent& aEvent )
2024-10-22 22:29:14 -04:00
{
m_textCtrlOutputPath->Enable( m_cbRecordOutput->GetValue() );
}