7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-20 00:11:41 +00:00

More consistent file/class naming.

This commit is contained in:
Jeff Young 2025-01-12 12:11:56 +00:00
parent b7cdbbba9f
commit e3e7a4c97a
9 changed files with 1152 additions and 188 deletions

View File

@ -18,6 +18,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <i18n_utility.h>
#include <nlohmann/json.hpp>
#include <settings/parameters.h>
@ -34,6 +35,15 @@
const int jobsFileSchemaVersion = 1;
KICOMMON_API std::map<JOBSET_OUTPUT_TYPE, JOBSET_OUTPUT_TYPE_INFO> JobsetOutputTypeInfos = {
{ JOBSET_OUTPUT_TYPE::FOLDER,
{ _HKI( "Folder" ), BITMAPS::small_folder, true, "" } },
{ JOBSET_OUTPUT_TYPE::ARCHIVE,
{ _HKI( "Archive" ), BITMAPS::zip, false, FILEEXT::ZipFileWildcard() } },
};
NLOHMANN_JSON_SERIALIZE_ENUM( JOBSET_OUTPUT_TYPE,
{
{ JOBSET_OUTPUT_TYPE::FOLDER, "folder" },

View File

@ -21,6 +21,7 @@
#ifndef JOBS_FILE_H
#define JOBS_FILE_H
#include <bitmaps/bitmaps_list.h>
#include <jobs/job.h>
#include <jobs/jobs_output.h>
#include <settings/json_settings.h>
@ -32,9 +33,15 @@ class REPORTER;
struct KICOMMON_API JOBSET_JOB
{
JOBSET_JOB() : m_job( nullptr ) {}
JOBSET_JOB() :
m_job( nullptr )
{}
JOBSET_JOB( wxString id, wxString type, JOB* job ) : m_id( id ), m_type( type ), m_job( job ) {}
JOBSET_JOB( const wxString& id, const wxString& type, JOB* job ) :
m_id( id ),
m_type( type ),
m_job( job )
{}
wxString m_id;
wxString m_type;
@ -47,12 +54,24 @@ struct KICOMMON_API JOBSET_JOB
bool operator==( const JOBSET_JOB& rhs ) const;
};
enum class JOBSET_OUTPUT_TYPE
{
FOLDER,
ARCHIVE
};
struct JOBSET_OUTPUT_TYPE_INFO
{
wxString name;
BITMAPS bitmap;
bool outputPathIsFolder;
wxString fileWildcard;
};
extern KICOMMON_API std::map<JOBSET_OUTPUT_TYPE, JOBSET_OUTPUT_TYPE_INFO> JobsetOutputTypeInfos;
struct KICOMMON_API JOBSET_OUTPUT
{
JOBSET_OUTPUT();
@ -81,6 +100,7 @@ struct KICOMMON_API JOBSET_OUTPUT
};
class KICOMMON_API JOBSET : public JSON_SETTINGS
{
public:

View File

@ -18,6 +18,8 @@ include_directories(
set( KICAD_SRCS
dialogs/dialog_job_config_base.cpp
dialogs/dialog_job_output_options.cpp
dialogs/dialog_job_output_options_base.cpp
dialogs/dialog_copyfiles_job_settings.cpp
dialogs/dialog_copyfiles_job_settings_base.cpp
dialogs/dialog_executecommand_job_settings.cpp

View File

@ -0,0 +1,198 @@
/*
* 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.
*
* 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 "dialog_job_output_options.h"
#include "dialog_copyfiles_job_settings.h"
#include <wx/aui/auibook.h>
#include <jobs/jobset.h>
#include <jobs/job_registry.h>
#include <wx/checkbox.h>
#include <wx/menu.h>
#include <bitmaps.h>
#include <jobs/jobs_output_archive.h>
#include <kicad_manager_frame.h>
#include <vector>
#include <wx/dirdlg.h>
#include <wx/filedlg.h>
#include <wildcards_and_files_ext.h>
#include <widgets/std_bitmap_button.h>
#include <widgets/wx_grid.h>
#include <widgets/grid_text_button_helpers.h>
#include <confirm.h>
extern KICOMMON_API std::map<JOBSET_OUTPUT_TYPE, JOBSET_OUTPUT_TYPE_INFO> JobsetOutputTypeInfos;
DIALOG_JOB_OUTPUT_OPTIONS::DIALOG_JOB_OUTPUT_OPTIONS( wxWindow* aParent, JOBSET* aJobsFile,
JOBSET_OUTPUT* aOutput ) :
DIALOG_JOB_OUTPUT_OPTIONS_BASE( aParent ),
m_jobsFile( aJobsFile ),
m_output( aOutput )
{
// prevent someone from failing to add the type info in the future
wxASSERT( JobsetOutputTypeInfos.contains( m_output->m_type ) );
SetTitle( wxString::Format( _( "%s Output Options" ),
m_output->m_outputHandler->GetDefaultDescription() ) );
if( m_output->m_type != JOBSET_OUTPUT_TYPE::ARCHIVE )
{
m_textArchiveFormat->Hide();
m_choiceArchiveformat->Hide();
}
m_textCtrlOutputPath->SetValue( m_output->m_outputHandler->GetOutputPath() );
m_buttonOutputPath->SetBitmap( KiBitmapBundle( BITMAPS::small_folder ) );
m_textCtrlDescription->SetValue( m_output->GetDescription() );
SetupStandardButtons();
}
void DIALOG_JOB_OUTPUT_OPTIONS::onOutputPathBrowseClicked(wxCommandEvent& event)
{
bool isFolder = false;
wxString fileWildcard = "";
isFolder = JobsetOutputTypeInfos[m_output->m_type].outputPathIsFolder;
fileWildcard = JobsetOutputTypeInfos[m_output->m_type].fileWildcard;
if( isFolder )
{
wxFileName fn;
fn.AssignDir( m_textCtrlOutputPath->GetValue() );
fn.Normalize( FN_NORMALIZE_FLAGS | wxPATH_NORM_ENV_VARS );
wxString currPath = fn.GetFullPath();
wxDirDialog dirDialog( this, _( "Select output directory" ), currPath,
wxDD_DEFAULT_STYLE );
if( dirDialog.ShowModal() != wxID_OK )
return;
wxFileName dirName = wxFileName::DirName( dirDialog.GetPath() );
m_textCtrlOutputPath->SetValue( dirName.GetFullPath() );
}
else
{
wxFileName fname( m_textCtrlOutputPath->GetValue() );
wxFileDialog dlg( this, _( "Select output path" ), fname.GetPath(), fname.GetFullName(),
fileWildcard,
wxFD_OVERWRITE_PROMPT | wxFD_SAVE );
if( dlg.ShowModal() != wxID_OK )
return;
m_textCtrlOutputPath->SetValue( dlg.GetPath() );
}
}
bool DIALOG_JOB_OUTPUT_OPTIONS::TransferDataFromWindow()
{
wxString outputPath = m_textCtrlOutputPath->GetValue().Trim().Trim( false );
if( outputPath.IsEmpty() )
{
DisplayErrorMessage( this, _( "Output path cannot be empty" ) );
return false;
}
wxArrayInt selectedItems;
m_includeJobs->GetCheckedItems( selectedItems );
// Update the only job map
m_output->m_only.clear();
if( selectedItems.size() < m_includeJobs->GetCount() )
{
for( int i : selectedItems )
{
if( m_onlyMap.contains( i ) )
m_output->m_only.emplace_back( m_onlyMap[i] );
}
}
m_output->m_outputHandler->SetOutputPath( outputPath );
if( m_output->m_type == JOBSET_OUTPUT_TYPE::ARCHIVE )
{
JOBS_OUTPUT_ARCHIVE* archive =
static_cast<JOBS_OUTPUT_ARCHIVE*>( m_output->m_outputHandler );
archive->SetFormat( JOBS_OUTPUT_ARCHIVE::FORMAT::ZIP );
}
m_output->SetDescription( m_textCtrlDescription->GetValue() );
return true;
}
bool DIALOG_JOB_OUTPUT_OPTIONS::TransferDataToWindow()
{
wxArrayString arrayStr;
std::vector<int> selectedList;
for( JOBSET_JOB& job : m_jobsFile->GetJobs() )
{
arrayStr.Add( wxString::Format( wxT( "%d. %s" ),
(int) arrayStr.size() + 1,
job.GetDescription() ) );
auto it = std::find_if( m_output->m_only.begin(), m_output->m_only.end(),
[&]( const wxString& only )
{
if( only == job.m_id )
return true;
return false;
} );
if( it != m_output->m_only.end() )
selectedList.emplace_back( arrayStr.size() - 1 );
m_onlyMap.emplace( arrayStr.size() - 1, job.m_id );
}
if( arrayStr.size() != 0 )
{
m_includeJobs->InsertItems( arrayStr, 0 );
if( selectedList.size() )
{
for( int idx : selectedList )
m_includeJobs->Check( idx );
}
else
{
for( size_t idx = 0; idx < m_includeJobs->GetCount(); ++idx )
m_includeJobs->Check( idx );
}
}
m_choiceArchiveformat->AppendString( _( "Zip" ) );
m_choiceArchiveformat->SetSelection( 0 );
return true;
}

View File

@ -0,0 +1,45 @@
/*
* 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.
*
* 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/>.
*/
#pragma once
#include "dialog_job_output_options_base.h"
class JOBSET;
struct JOBSET_OUTPUT;
class DIALOG_JOB_OUTPUT_OPTIONS : public DIALOG_JOB_OUTPUT_OPTIONS_BASE
{
public:
DIALOG_JOB_OUTPUT_OPTIONS( wxWindow* aParent, JOBSET* aJobsFile, JOBSET_OUTPUT* aOutput );
private:
virtual void onOutputPathBrowseClicked(wxCommandEvent& event) override;
bool TransferDataFromWindow() override;
bool TransferDataToWindow() override;
private:
JOBSET* m_jobsFile;
JOBSET_OUTPUT* m_output;
std::map<int, wxString> m_onlyMap;
};

View File

@ -0,0 +1,102 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "widgets/std_bitmap_button.h"
#include "dialog_job_output_options_base.h"
///////////////////////////////////////////////////////////////////////////
DIALOG_JOB_OUTPUT_OPTIONS_BASE::DIALOG_JOB_OUTPUT_OPTIONS_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 );
wxFlexGridSizer* fgSizer1;
fgSizer1 = new wxFlexGridSizer( 4, 2, 5, 5 );
fgSizer1->AddGrowableCol( 1 );
fgSizer1->AddGrowableRow( 3 );
fgSizer1->SetFlexibleDirection( wxBOTH );
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_textArchiveDesc = new wxStaticText( this, wxID_ANY, _("Description:"), wxDefaultPosition, wxDefaultSize, 0 );
m_textArchiveDesc->Wrap( -1 );
fgSizer1->Add( m_textArchiveDesc, 0, wxALIGN_CENTER_VERTICAL, 5 );
m_textCtrlDescription = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
fgSizer1->Add( m_textCtrlDescription, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
m_textArchiveFormat = new wxStaticText( this, wxID_ANY, _("Format:"), wxDefaultPosition, wxDefaultSize, 0 );
m_textArchiveFormat->Wrap( -1 );
fgSizer1->Add( m_textArchiveFormat, 0, wxALIGN_CENTER_VERTICAL, 5 );
wxArrayString m_choiceArchiveformatChoices;
m_choiceArchiveformat = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceArchiveformatChoices, 0 );
m_choiceArchiveformat->SetSelection( 0 );
m_choiceArchiveformat->SetMinSize( wxSize( 100,-1 ) );
fgSizer1->Add( m_choiceArchiveformat, 0, wxALIGN_CENTER_VERTICAL, 5 );
m_textOutputPath = new wxStaticText( this, wxID_ANY, _("Output path:"), wxDefaultPosition, wxDefaultSize, 0 );
m_textOutputPath->Wrap( -1 );
fgSizer1->Add( m_textOutputPath, 0, wxALIGN_CENTER_VERTICAL, 5 );
wxBoxSizer* bSizer16;
bSizer16 = new wxBoxSizer( wxHORIZONTAL );
m_textCtrlOutputPath = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_textCtrlOutputPath->SetMinSize( wxSize( 350,-1 ) );
bSizer16->Add( m_textCtrlOutputPath, 1, wxALIGN_CENTER_VERTICAL, 5 );
m_buttonOutputPath = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
bSizer16->Add( m_buttonOutputPath, 0, wxALIGN_CENTER_VERTICAL, 5 );
fgSizer1->Add( bSizer16, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
m_staticText10 = new wxStaticText( this, wxID_ANY, _("Include jobs:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText10->Wrap( -1 );
fgSizer1->Add( m_staticText10, 0, wxTOP, 5 );
wxArrayString m_includeJobsChoices;
m_includeJobs = new wxCheckListBox( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_includeJobsChoices, 0 );
m_includeJobs->SetMinSize( wxSize( 300,200 ) );
fgSizer1->Add( m_includeJobs, 1, wxEXPAND, 5 );
bSizerMain->Add( fgSizer1, 1, wxEXPAND|wxALL, 10 );
m_sdbSizer1 = new wxStdDialogButtonSizer();
m_sdbSizer1OK = new wxButton( this, wxID_OK );
m_sdbSizer1->AddButton( m_sdbSizer1OK );
m_sdbSizer1Cancel = new wxButton( this, wxID_CANCEL );
m_sdbSizer1->AddButton( m_sdbSizer1Cancel );
m_sdbSizer1->Realize();
bSizerMain->Add( m_sdbSizer1, 0, wxBOTTOM|wxEXPAND, 5 );
this->SetSizer( bSizerMain );
this->Layout();
bSizerMain->Fit( this );
this->Centre( wxBOTH );
// Connect Events
m_buttonOutputPath->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_JOB_OUTPUT_OPTIONS_BASE::onOutputPathBrowseClicked ), NULL, this );
}
DIALOG_JOB_OUTPUT_OPTIONS_BASE::~DIALOG_JOB_OUTPUT_OPTIONS_BASE()
{
// Disconnect Events
m_buttonOutputPath->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_JOB_OUTPUT_OPTIONS_BASE::onOutputPathBrowseClicked ), NULL, this );
}

View File

@ -0,0 +1,699 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<wxFormBuilder_Project>
<FileVersion major="1" minor="18"/>
<object class="Project" expanded="true">
<property name="code_generation">C++</property>
<property name="cpp_class_decoration">; </property>
<property name="cpp_disconnect_events">1</property>
<property name="cpp_event_generation">connect</property>
<property name="cpp_help_provider">none</property>
<property name="cpp_namespace"></property>
<property name="cpp_precompiled_header"></property>
<property name="cpp_use_array_enum">0</property>
<property name="cpp_use_enum">0</property>
<property name="embedded_files_path">res</property>
<property name="encoding">UTF-8</property>
<property name="file">dialog_job_output_options_base</property>
<property name="first_id">1000</property>
<property name="internationalize">1</property>
<property name="lua_skip_events">1</property>
<property name="lua_ui_table">UI</property>
<property name="name">DIALOG_JOB_OUTPUT_OPTIONS</property>
<property name="path">.</property>
<property name="php_disconnect_events">0</property>
<property name="php_disconnect_mode">source_name</property>
<property name="php_skip_events">1</property>
<property name="python_disconnect_events">0</property>
<property name="python_disconnect_mode">source_name</property>
<property name="python_image_path_wrapper_function_name"></property>
<property name="python_indent_with_spaces"></property>
<property name="python_skip_events">1</property>
<property name="relative_path">1</property>
<property name="use_microsoft_bom">0</property>
<property name="use_native_eol">0</property>
<object class="Dialog" expanded="true">
<property name="aui_managed">0</property>
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
<property name="bg"></property>
<property name="center">wxBOTH</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="drag_accept_files">0</property>
<property name="enabled">1</property>
<property name="event_handler">impl_virtual</property>
<property name="extra_style"></property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">DIALOG_JOB_OUTPUT_OPTIONS_BASE</property>
<property name="pos"></property>
<property name="size">-1,-1</property>
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
<property name="subclass">DIALOG_SHIM; dialog_shim.h; forward_declare</property>
<property name="title">%s Output Options</property>
<property name="tooltip"></property>
<property name="two_step_creation">0</property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bSizerMain</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="true">
<property name="border">10</property>
<property name="flag">wxEXPAND|wxALL</property>
<property name="proportion">1</property>
<object class="wxFlexGridSizer" expanded="true">
<property name="cols">2</property>
<property name="flexible_direction">wxBOTH</property>
<property name="growablecols">1</property>
<property name="growablerows">3</property>
<property name="hgap">5</property>
<property name="minimum_size"></property>
<property name="name">fgSizer1</property>
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
<property name="permission">none</property>
<property name="rows">4</property>
<property name="vgap">5</property>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="false">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</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="drag_accept_files">0</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="label">Description:</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_textArchiveDesc</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="style"></property>
<property name="subclass">; ; 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>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxTextCtrl" expanded="false">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</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="drag_accept_files">0</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="maxlength">0</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_textCtrlDescription</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="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="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="false">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</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="drag_accept_files">0</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="label">Format:</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_textArchiveFormat</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="style"></property>
<property name="subclass">; ; 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>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxChoice" expanded="false">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</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="choices"></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="drag_accept_files">0</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">100,-1</property>
<property name="moveable">1</property>
<property name="name">m_choiceArchiveformat</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="selection">0</property>
<property name="show">1</property>
<property name="size"></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>
</object>
</object>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="false">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</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="drag_accept_files">0</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="label">Output path:</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_textOutputPath</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="style"></property>
<property name="subclass">; ; 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>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="false">
<property name="minimum_size"></property>
<property name="name">bSizer16</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">1</property>
<object class="wxTextCtrl" expanded="false">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</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="drag_accept_files">0</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="maxlength">0</property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size">350,-1</property>
<property name="moveable">1</property>
<property name="name">m_textCtrlOutputPath</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="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="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxBitmapButton" expanded="false">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="auth_needed">0</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="drag_accept_files">0</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">MyButton</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_buttonOutputPath</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">STD_BITMAP_BUTTON; widgets/std_bitmap_button.h; 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">onOutputPathBrowseClicked</event>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
<property name="flag">wxTOP</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="false">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</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="drag_accept_files">0</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="label">Include jobs:</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_staticText10</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="style"></property>
<property name="subclass">; ; 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>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxCheckListBox" expanded="false">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</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="choices"></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="drag_accept_files">0</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">300,200</property>
<property name="moveable">1</property>
<property name="name">m_includeJobs</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="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>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
<property name="flag">wxBOTTOM|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxStdDialogButtonSizer" expanded="false">
<property name="Apply">0</property>
<property name="Cancel">1</property>
<property name="ContextHelp">0</property>
<property name="Help">0</property>
<property name="No">0</property>
<property name="OK">1</property>
<property name="Save">0</property>
<property name="Yes">0</property>
<property name="minimum_size"></property>
<property name="name">m_sdbSizer1</property>
<property name="permission">protected</property>
</object>
</object>
</object>
</object>
</object>
</wxFormBuilder_Project>

View File

@ -0,0 +1,67 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#pragma once
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/intl.h>
class STD_BITMAP_BUTTON;
#include "dialog_shim.h"
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/textctrl.h>
#include <wx/choice.h>
#include <wx/bmpbuttn.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/button.h>
#include <wx/sizer.h>
#include <wx/checklst.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_JOB_OUTPUT_OPTIONS_BASE
///////////////////////////////////////////////////////////////////////////////
class DIALOG_JOB_OUTPUT_OPTIONS_BASE : public DIALOG_SHIM
{
private:
protected:
wxStaticText* m_textArchiveDesc;
wxTextCtrl* m_textCtrlDescription;
wxStaticText* m_textArchiveFormat;
wxChoice* m_choiceArchiveformat;
wxStaticText* m_textOutputPath;
wxTextCtrl* m_textCtrlOutputPath;
STD_BITMAP_BUTTON* m_buttonOutputPath;
wxStaticText* m_staticText10;
wxCheckListBox* m_includeJobs;
wxStdDialogButtonSizer* m_sdbSizer1;
wxButton* m_sdbSizer1OK;
wxButton* m_sdbSizer1Cancel;
// Virtual event handlers, override them in your derived class
virtual void onOutputPathBrowseClicked( wxCommandEvent& event ) { event.Skip(); }
public:
DIALOG_JOB_OUTPUT_OPTIONS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("%s Output Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_JOB_OUTPUT_OPTIONS_BASE();
};

View File

@ -19,6 +19,7 @@
*/
#include "panel_jobs.h"
#include "dialog_job_output_options.h"
#include "dialog_copyfiles_job_settings.h"
#include <wx/aui/auibook.h>
#include <jobs/jobset.h>
@ -30,12 +31,9 @@
#include <i18n_utility.h>
#include <jobs_runner.h>
#include <widgets/wx_progress_reporters.h>
#include <jobs/jobs_output_archive.h>
#include <kicad_manager_frame.h>
#include <vector>
#include <wx/dirdlg.h>
#include <wx/filedlg.h>
#include <wildcards_and_files_ext.h>
#include <widgets/std_bitmap_button.h>
#include <widgets/wx_grid.h>
@ -48,184 +46,7 @@
#include <dialogs/dialog_executecommand_job_settings.h>
struct JOB_TYPE_INFO
{
wxString name;
BITMAPS bitmap;
bool outputPathIsFolder;
wxString fileWildcard;
};
static std::map<JOBSET_OUTPUT_TYPE, JOB_TYPE_INFO> jobTypeInfos = {
{ JOBSET_OUTPUT_TYPE::FOLDER,
{ _HKI( "Folder" ), BITMAPS::small_folder, true, "" } },
{ JOBSET_OUTPUT_TYPE::ARCHIVE,
{ _HKI( "Archive" ), BITMAPS::zip, false, FILEEXT::ZipFileWildcard() } },
};
class DIALOG_JOB_OUTPUT : public DIALOG_JOB_OUTPUT_BASE
{
public:
DIALOG_JOB_OUTPUT( wxWindow* aParent, JOBSET* aJobsFile, JOBSET_OUTPUT* aOutput ) :
DIALOG_JOB_OUTPUT_BASE( aParent ), m_jobsFile( aJobsFile ), m_output( aOutput )
{
// prevent someone from failing to add the type info in the future
wxASSERT( jobTypeInfos.contains( m_output->m_type ) );
SetTitle( wxString::Format( _( "%s Output Options" ),
m_output->m_outputHandler->GetDefaultDescription() ) );
if( m_output->m_type != JOBSET_OUTPUT_TYPE::ARCHIVE )
{
m_textArchiveFormat->Hide();
m_choiceArchiveformat->Hide();
}
m_textCtrlOutputPath->SetValue( m_output->m_outputHandler->GetOutputPath() );
m_buttonOutputPath->SetBitmap( KiBitmapBundle( BITMAPS::small_folder ) );
m_textCtrlDescription->SetValue( m_output->GetDescription() );
SetupStandardButtons();
}
virtual void onOutputPathBrowseClicked(wxCommandEvent& event) override
{
bool isFolder = false;
wxString fileWildcard = "";
isFolder = jobTypeInfos[m_output->m_type].outputPathIsFolder;
fileWildcard = jobTypeInfos[m_output->m_type].fileWildcard;
if( isFolder )
{
wxFileName fn;
fn.AssignDir( m_textCtrlOutputPath->GetValue() );
fn.Normalize( FN_NORMALIZE_FLAGS | wxPATH_NORM_ENV_VARS );
wxString currPath = fn.GetFullPath();
wxDirDialog dirDialog( this, _( "Select output directory" ), currPath,
wxDD_DEFAULT_STYLE );
if( dirDialog.ShowModal() != wxID_OK )
return;
wxFileName dirName = wxFileName::DirName( dirDialog.GetPath() );
m_textCtrlOutputPath->SetValue( dirName.GetFullPath() );
}
else
{
wxFileName fname( m_textCtrlOutputPath->GetValue() );
wxFileDialog dlg( this, _( "Select output path" ), fname.GetPath(), fname.GetFullName(),
fileWildcard,
wxFD_OVERWRITE_PROMPT | wxFD_SAVE );
if( dlg.ShowModal() != wxID_OK )
return;
m_textCtrlOutputPath->SetValue( dlg.GetPath() );
}
}
bool TransferDataFromWindow() override
{
wxString outputPath = m_textCtrlOutputPath->GetValue().Trim().Trim( false );
if( outputPath.IsEmpty() )
{
DisplayErrorMessage( this, _( "Output path cannot be empty" ) );
return false;
}
wxArrayInt selectedItems;
m_includeJobs->GetCheckedItems( selectedItems );
// Update the only job map
m_output->m_only.clear();
if( selectedItems.size() < m_includeJobs->GetCount() )
{
for( int i : selectedItems )
{
if( m_onlyMap.contains( i ) )
m_output->m_only.emplace_back( m_onlyMap[i] );
}
}
m_output->m_outputHandler->SetOutputPath( outputPath );
if( m_output->m_type == JOBSET_OUTPUT_TYPE::ARCHIVE )
{
JOBS_OUTPUT_ARCHIVE* archive =
static_cast<JOBS_OUTPUT_ARCHIVE*>( m_output->m_outputHandler );
archive->SetFormat( JOBS_OUTPUT_ARCHIVE::FORMAT::ZIP );
}
m_output->SetDescription( m_textCtrlDescription->GetValue() );
return true;
}
bool TransferDataToWindow() override
{
wxArrayString arrayStr;
std::vector<int> selectedList;
for( JOBSET_JOB& job : m_jobsFile->GetJobs() )
{
arrayStr.Add( wxString::Format( wxT( "%d. %s" ),
(int) arrayStr.size() + 1,
job.GetDescription() ) );
auto it = std::find_if( m_output->m_only.begin(), m_output->m_only.end(),
[&]( const wxString& only )
{
if( only == job.m_id )
return true;
return false;
} );
if( it != m_output->m_only.end() )
selectedList.emplace_back( arrayStr.size() - 1 );
m_onlyMap.emplace( arrayStr.size() - 1, job.m_id );
}
if( arrayStr.size() != 0 )
{
m_includeJobs->InsertItems( arrayStr, 0 );
if( selectedList.size() )
{
for( int idx : selectedList )
m_includeJobs->Check( idx );
}
else
{
for( size_t idx = 0; idx < m_includeJobs->GetCount(); ++idx )
m_includeJobs->Check( idx );
}
}
m_choiceArchiveformat->AppendString( _( "Zip" ) );
m_choiceArchiveformat->SetSelection( 0 );
return true;
}
private:
JOBSET* m_jobsFile;
JOBSET_OUTPUT* m_output;
std::map<int, wxString> m_onlyMap;
};
extern std::map<JOBSET_OUTPUT_TYPE, JOBSET_OUTPUT_TYPE_INFO> JobsetOutputTypeInfos;
class DIALOG_OUTPUT_RUN_RESULTS : public DIALOG_OUTPUT_RUN_RESULTS_BASE
@ -332,9 +153,9 @@ public:
Connect( wxEVT_MENU, wxCommandEventHandler( PANEL_JOB_OUTPUT::onMenu ), nullptr, this );
if( jobTypeInfos.contains( aOutput->m_type ) )
if( JobsetOutputTypeInfos.contains( aOutput->m_type ) )
{
JOB_TYPE_INFO& jobTypeInfo = jobTypeInfos[aOutput->m_type];
JOBSET_OUTPUT_TYPE_INFO& jobTypeInfo = JobsetOutputTypeInfos[aOutput->m_type];
m_textOutputType->SetLabel( aOutput->GetDescription() );
m_bitmapOutputType->SetBitmap( KiBitmapBundle( jobTypeInfo.bitmap ) );
}
@ -902,7 +723,7 @@ void PANEL_JOBS::OnAddOutputClick( wxCommandEvent& aEvent )
headers.Add( _( "Output Types" ) );
for( const std::pair<const JOBSET_OUTPUT_TYPE, JOB_TYPE_INFO>& outputType : jobTypeInfos )
for( const std::pair<const JOBSET_OUTPUT_TYPE, JOBSET_OUTPUT_TYPE_INFO>& outputType : JobsetOutputTypeInfos )
{
wxArrayString item;
item.Add( wxGetTranslation( outputType.second.name ) );
@ -917,13 +738,13 @@ void PANEL_JOBS::OnAddOutputClick( wxCommandEvent& aEvent )
{
wxString selectedString = dlg.GetTextSelection();
for( const std::pair<const JOBSET_OUTPUT_TYPE, JOB_TYPE_INFO>& jobType : jobTypeInfos )
for( const std::pair<const JOBSET_OUTPUT_TYPE, JOBSET_OUTPUT_TYPE_INFO>& jobType : JobsetOutputTypeInfos )
{
if( wxGetTranslation( jobType.second.name ) == selectedString )
{
JOBSET_OUTPUT* output = m_jobsFile->AddNewJobOutput( jobType.first );
DIALOG_JOB_OUTPUT dialog( m_frame, m_jobsFile.get(), output );
DIALOG_JOB_OUTPUT_OPTIONS dialog( m_frame, m_jobsFile.get(), output );
if (dialog.ShowModal() == wxID_OK)
{
Freeze();