7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-14 19:39:35 +00:00

Separate Edit/Delete buttons for jobset outputs.

This commit is contained in:
Jeff Young 2025-01-03 17:41:37 +00:00
parent 0c76b723b4
commit e73bec504e
4 changed files with 184 additions and 107 deletions

View File

@ -353,11 +353,10 @@ public:
m_frame( aFrame ),
m_panelParent( aPanelParent )
{
m_buttonOutputRun->SetBitmap( KiBitmapBundle( BITMAPS::sim_run ) );
m_buttonOutputOptions->SetBitmap( KiBitmapBundle( BITMAPS::preference ) );
m_buttonProperties->SetBitmap( KiBitmapBundle( BITMAPS::small_edit ) );
m_buttonDelete->SetBitmap( KiBitmapBundle( BITMAPS::small_trash ) );
m_buttonOutputOptions->Connect( wxEVT_MENU,
wxCommandEventHandler( PANEL_JOB_OUTPUT::onMenu ), nullptr, this );
Connect( wxEVT_MENU, wxCommandEventHandler( PANEL_JOB_OUTPUT::onMenu ), nullptr, this );
if( jobTypeInfos.contains( aOutput->m_type ) )
{
@ -372,8 +371,7 @@ public:
~PANEL_JOB_OUTPUT()
{
m_buttonOutputOptions->Disconnect(
wxEVT_MENU, wxCommandEventHandler( PANEL_JOB_OUTPUT::onMenu ), nullptr, this );
Disconnect( wxEVT_MENU, wxCommandEventHandler( PANEL_JOB_OUTPUT::onMenu ), nullptr, this );
}
void UpdateStatus()
@ -398,11 +396,11 @@ public:
m_statusBitmap->SetBitmap( wxNullBitmap );
}
m_buttonOutputRun->Enable( !m_jobsFile->GetJobsForOutput( m_output ).empty() );
m_buttonGenerate->Enable( !m_jobsFile->GetJobsForOutput( m_output ).empty() );
}
virtual void OnOutputRunClick( wxCommandEvent& event ) override
virtual void OnGenerate( wxCommandEvent& event ) override
{
CallAfter(
[this]()
@ -425,28 +423,44 @@ public:
} );
}
virtual void OnLastStatusClick(wxMouseEvent& event) override
virtual void OnLastStatusClick( wxMouseEvent& aEvent ) override
{
DIALOG_OUTPUT_RUN_RESULTS dialog( m_frame, m_jobsFile, m_output );
dialog.ShowModal();
}
virtual void OnOutputOptionsClick( wxCommandEvent& event ) override
void OnRightDown( wxMouseEvent& aEvent ) override
{
wxMenu menu;
menu.Append( wxID_EDIT, _( "Edit..." ) );
menu.Append( wxID_DELETE, _( "Delete" ) );
menu.Append( wxID_EDIT, _( "Edit Output Options..." ) );
menu.Append( wxID_DELETE, _( "Delete Output" ) );
if( m_output->m_lastRunSuccess.has_value() )
{
menu.AppendSeparator();
menu.Append( wxID_VIEW_DETAILS, _( "View last run results..." ) );
}
menu.AppendSeparator();
menu.Append( wxID_VIEW_DETAILS, _( "View Last Run Results..." ) );
m_buttonOutputOptions->PopupMenu( &menu );
menu.Enable( wxID_VIEW_DETAILS, m_output->m_lastRunSuccess.has_value() );
PopupMenu( &menu );
}
void OnProperties( wxCommandEvent& aEvent ) override
{
DIALOG_JOB_OUTPUT dialog( m_frame, m_jobsFile, m_output );
if( dialog.ShowModal() == wxID_OK )
{
m_textOutputType->SetLabel( m_output->GetDescription() );
m_jobsFile->SetDirty();
m_panelParent->UpdateTitle();
}
}
virtual void OnDelete( wxCommandEvent& aEvent ) override
{
m_panelParent->RemoveOutput( m_output );
}
private:
void onMenu( wxCommandEvent& aEvent )
{
@ -454,32 +468,31 @@ private:
{
case wxID_EDIT:
{
DIALOG_JOB_OUTPUT dialog( m_frame, m_jobsFile, m_output );
if( dialog.ShowModal() == wxID_OK )
{
m_textOutputType->SetLabel( m_output->GetDescription() );
m_jobsFile->SetDirty();
m_panelParent->UpdateTitle();
}
wxCommandEvent dummy;
OnProperties( dummy );
}
break;
case wxID_DELETE:
m_panelParent->RemoveOutput( m_output );
{
wxCommandEvent dummy;
OnDelete( dummy );
}
break;
case wxID_VIEW_DETAILS:
{
DIALOG_OUTPUT_RUN_RESULTS dialog( m_frame, m_jobsFile, m_output );
dialog.ShowModal();
wxMouseEvent dummy;
OnLastStatusClick( dummy );
}
break;
break;
default:
wxFAIL_MSG( wxT( "Unknown ID in context menu event" ) );
}
}
private:
JOBSET* m_jobsFile;
JOBSET_OUTPUT* m_output;
KICAD_MANAGER_FRAME* m_frame;

View File

@ -158,10 +158,10 @@ PANEL_JOB_OUTPUT_BASE::PANEL_JOB_OUTPUT_BASE( wxWindow* parent, wxWindowID id, c
this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_3DLIGHT ) );
wxBoxSizer* bSizerMain;
bSizerMain = new wxBoxSizer( wxHORIZONTAL );
bSizerMain = new wxBoxSizer( wxVERTICAL );
wxFlexGridSizer* fgSizer3;
fgSizer3 = new wxFlexGridSizer( 2, 4, 5, 5 );
fgSizer3 = new wxFlexGridSizer( 1, 3, 5, 5 );
fgSizer3->AddGrowableCol( 1 );
fgSizer3->SetFlexibleDirection( wxBOTH );
fgSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
@ -178,23 +178,23 @@ PANEL_JOB_OUTPUT_BASE::PANEL_JOB_OUTPUT_BASE( wxWindow* parent, wxWindowID id, c
m_statusBitmap = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
fgSizer3->Add( m_statusBitmap, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
m_buttonOutputRun = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
fgSizer3->Add( m_buttonOutputRun, 0, wxALIGN_CENTER_VERTICAL, 5 );
bSizerMain->Add( fgSizer3, 0, wxEXPAND|wxALL, 5 );
wxBoxSizer* bSizerButtons;
bSizerButtons = new wxBoxSizer( wxHORIZONTAL );
m_buttonProperties = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
bSizerButtons->Add( m_buttonProperties, 0, wxALL, 5 );
m_buttonDelete = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
bSizerButtons->Add( m_buttonDelete, 0, wxALL, 5 );
m_buttonGenerate = new wxButton( this, wxID_ANY, _("Generate"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerButtons->Add( m_buttonGenerate, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
fgSizer3->Add( 0, 0, 1, wxEXPAND, 5 );
fgSizer3->Add( 0, 0, 1, wxEXPAND, 5 );
fgSizer3->Add( 0, 0, 1, wxEXPAND, 5 );
m_buttonOutputOptions = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
fgSizer3->Add( m_buttonOutputOptions, 0, wxALIGN_CENTER_VERTICAL, 5 );
bSizerMain->Add( fgSizer3, 1, wxALL, 5 );
bSizerMain->Add( bSizerButtons, 0, wxEXPAND, 5 );
this->SetSizer( bSizerMain );
@ -202,17 +202,21 @@ PANEL_JOB_OUTPUT_BASE::PANEL_JOB_OUTPUT_BASE( wxWindow* parent, wxWindowID id, c
bSizerMain->Fit( this );
// Connect Events
this->Connect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( PANEL_JOB_OUTPUT_BASE::OnRightDown ) );
m_statusBitmap->Connect( wxEVT_LEFT_DOWN, wxMouseEventHandler( PANEL_JOB_OUTPUT_BASE::OnLastStatusClick ), NULL, this );
m_buttonOutputRun->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_JOB_OUTPUT_BASE::OnOutputRunClick ), NULL, this );
m_buttonOutputOptions->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_JOB_OUTPUT_BASE::OnOutputOptionsClick ), NULL, this );
m_buttonProperties->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_JOB_OUTPUT_BASE::OnProperties ), NULL, this );
m_buttonDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_JOB_OUTPUT_BASE::OnDelete ), NULL, this );
m_buttonGenerate->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_JOB_OUTPUT_BASE::OnGenerate ), NULL, this );
}
PANEL_JOB_OUTPUT_BASE::~PANEL_JOB_OUTPUT_BASE()
{
// Disconnect Events
this->Disconnect( wxEVT_RIGHT_DOWN, wxMouseEventHandler( PANEL_JOB_OUTPUT_BASE::OnRightDown ) );
m_statusBitmap->Disconnect( wxEVT_LEFT_DOWN, wxMouseEventHandler( PANEL_JOB_OUTPUT_BASE::OnLastStatusClick ), NULL, this );
m_buttonOutputRun->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_JOB_OUTPUT_BASE::OnOutputRunClick ), NULL, this );
m_buttonOutputOptions->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_JOB_OUTPUT_BASE::OnOutputOptionsClick ), NULL, this );
m_buttonProperties->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_JOB_OUTPUT_BASE::OnProperties ), NULL, this );
m_buttonDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_JOB_OUTPUT_BASE::OnDelete ), NULL, this );
m_buttonGenerate->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_JOB_OUTPUT_BASE::OnGenerate ), NULL, this );
}

View File

@ -855,7 +855,7 @@
</object>
</object>
</object>
<object class="Panel" expanded="false">
<object class="Panel" expanded="true">
<property name="aui_managed">0</property>
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
<property name="bg">wxSYS_COLOUR_3DLIGHT</property>
@ -879,17 +879,18 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxBORDER_SIMPLE|wxTAB_TRAVERSAL</property>
<object class="wxBoxSizer" expanded="false">
<event name="OnRightDown">OnRightDown</event>
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bSizerMain</property>
<property name="orient">wxHORIZONTAL</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="false">
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">1</property>
<object class="wxFlexGridSizer" expanded="false">
<property name="cols">4</property>
<property name="flag">wxEXPAND|wxALL</property>
<property name="proportion">0</property>
<object class="wxFlexGridSizer" expanded="true">
<property name="cols">3</property>
<property name="flexible_direction">wxBOTH</property>
<property name="growablecols">1</property>
<property name="growablerows"></property>
@ -898,7 +899,7 @@
<property name="name">fgSizer3</property>
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
<property name="permission">none</property>
<property name="rows">2</property>
<property name="rows">1</property>
<property name="vgap">5</property>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
@ -1081,11 +1082,22 @@
<event name="OnLeftDown">OnLastStatusClick</event>
</object>
</object>
<object class="sizeritem" expanded="false">
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bSizerButtons</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxBitmapButton" expanded="false">
<object class="wxBitmapButton" expanded="true">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@ -1120,7 +1132,7 @@
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Run</property>
<property name="label">Edit Output Properties</property>
<property name="margins"></property>
<property name="markup">0</property>
<property name="max_size"></property>
@ -1130,7 +1142,7 @@
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_buttonOutputRun</property>
<property name="name">m_buttonProperties</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
@ -1143,7 +1155,7 @@
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></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>
@ -1153,44 +1165,14 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnButtonClick">OnOutputRunClick</event>
<event name="OnButtonClick">OnProperties</event>
</object>
</object>
<object class="sizeritem" expanded="false">
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="spacer" expanded="false">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</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="spacer" expanded="false">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</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="spacer" expanded="false">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxBitmapButton" expanded="false">
<object class="wxBitmapButton" expanded="true">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@ -1225,7 +1207,7 @@
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Options</property>
<property name="label">Delete Oputput</property>
<property name="margins"></property>
<property name="markup">0</property>
<property name="max_size"></property>
@ -1235,7 +1217,7 @@
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_buttonOutputOptions</property>
<property name="name">m_buttonDelete</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
@ -1248,7 +1230,7 @@
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></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>
@ -1258,7 +1240,82 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnButtonClick">OnOutputOptionsClick</event>
<event name="OnButtonClick">OnDelete</event>
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="true">
<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">Generate</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_buttonGenerate</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">; ; 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">OnGenerate</event>
</object>
</object>
</object>

View File

@ -91,13 +91,16 @@ class PANEL_JOB_OUTPUT_BASE : public wxPanel
wxStaticBitmap* m_bitmapOutputType;
wxStaticText* m_textOutputType;
wxStaticBitmap* m_statusBitmap;
wxBitmapButton* m_buttonOutputRun;
wxBitmapButton* m_buttonOutputOptions;
STD_BITMAP_BUTTON* m_buttonProperties;
STD_BITMAP_BUTTON* m_buttonDelete;
wxButton* m_buttonGenerate;
// Virtual event handlers, override them in your derived class
virtual void OnRightDown( wxMouseEvent& event ) { event.Skip(); }
virtual void OnLastStatusClick( wxMouseEvent& event ) { event.Skip(); }
virtual void OnOutputRunClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnOutputOptionsClick( wxCommandEvent& event ) { event.Skip(); }
virtual void OnProperties( wxCommandEvent& event ) { event.Skip(); }
virtual void OnDelete( wxCommandEvent& event ) { event.Skip(); }
virtual void OnGenerate( wxCommandEvent& event ) { event.Skip(); }
public: