Upgrade BITMAP_TOGGLE and GRID_BITMAP_TOGGLE to wxBitmapBundle

This commit is contained in:
Jon Evans 2023-10-21 15:39:51 -04:00
parent 50fe585827
commit 06a4bdbf4c
5 changed files with 34 additions and 34 deletions

View File

@ -31,8 +31,9 @@
wxDEFINE_EVENT( TOGGLE_CHANGED, wxCommandEvent );
BITMAP_TOGGLE::BITMAP_TOGGLE( wxWindow *aParent, wxWindowID aId, const wxBitmap& aCheckedBitmap,
const wxBitmap& aUncheckedBitmap, bool aChecked ) :
BITMAP_TOGGLE::BITMAP_TOGGLE( wxWindow *aParent, wxWindowID aId,
const wxBitmapBundle& aCheckedBitmap,
const wxBitmapBundle& aUncheckedBitmap, bool aChecked ) :
wxPanel( aParent, aId ),
m_checked( aChecked ),
m_unchecked_bitmap( aUncheckedBitmap ),
@ -42,9 +43,9 @@ BITMAP_TOGGLE::BITMAP_TOGGLE( wxWindow *aParent, wxWindowID aId, const wxBitmap&
wxBoxSizer* sizer = new wxBoxSizer( wxHORIZONTAL );
SetSizer( sizer );
const wxBitmap& bitmap = aChecked ? m_checked_bitmap : m_unchecked_bitmap;
const wxBitmapBundle& bundle = aChecked ? m_checked_bitmap : m_unchecked_bitmap;
m_bitmap = new wxStaticBitmap( this, aId, bitmap, wxDefaultPosition );
m_bitmap = new wxStaticBitmap( this, aId, bundle, wxDefaultPosition );
sizer->Add( m_bitmap, 0, 0 );

View File

@ -24,8 +24,8 @@
#include <algorithm>
GRID_BITMAP_TOGGLE_RENDERER::GRID_BITMAP_TOGGLE_RENDERER( const wxBitmap& aCheckedBitmap,
const wxBitmap& aUncheckedBitmap ) :
GRID_BITMAP_TOGGLE_RENDERER::GRID_BITMAP_TOGGLE_RENDERER( const wxBitmapBundle& aCheckedBitmap,
const wxBitmapBundle& aUncheckedBitmap ) :
wxGridCellRenderer(),
m_bitmapChecked( aCheckedBitmap ),
m_bitmapUnchecked( aUncheckedBitmap )
@ -48,10 +48,11 @@ void GRID_BITMAP_TOGGLE_RENDERER::Draw( wxGrid& aGrid, wxGridCellAttr& aAttr, wx
wxGridCellRenderer::Draw( aGrid, aAttr, aDc, aRect, aRow, aCol, aIsSelected );
bool checked = aGrid.GetCellValue( aRow, aCol ) == "1";
const wxBitmap& bitmap = checked ? m_bitmapChecked : m_bitmapUnchecked;
const wxBitmapBundle& bundle = checked ? m_bitmapChecked : m_bitmapUnchecked;
wxBitmap bitmap = bundle.GetBitmapFor( &aGrid );
int x = std::max( 0, ( aRect.GetWidth() - m_bitmapChecked.GetWidth() ) / 2 );
int y = std::max( 0, ( aRect.GetHeight() - m_bitmapChecked.GetHeight() ) / 2 );
int x = std::max( 0, ( aRect.GetWidth() - bitmap.GetWidth() ) / 2 );
int y = std::max( 0, ( aRect.GetHeight() - bitmap.GetHeight() ) / 2 );
aDc.DrawBitmap( bitmap, aRect.GetTopLeft() + wxPoint( x, y ) );
}
@ -60,5 +61,5 @@ void GRID_BITMAP_TOGGLE_RENDERER::Draw( wxGrid& aGrid, wxGridCellAttr& aAttr, wx
wxSize GRID_BITMAP_TOGGLE_RENDERER::GetBestSize( wxGrid& aGrid, wxGridCellAttr& aAttr, wxDC& aDc,
int aRow, int aCol)
{
return m_bitmapChecked.GetSize();
return m_bitmapChecked.GetPreferredBitmapSizeFor( &aGrid );
}

View File

@ -26,6 +26,7 @@
#define _BITMAP_TOGGLE_H
#include <wx/statbmp.h>
#include <wx/bmpbndl.h>
#include <wx/panel.h>
#include <gal/color4d.h>
@ -45,8 +46,8 @@ class BITMAP_TOGGLE : public wxPanel
public:
BITMAP_TOGGLE() {}
BITMAP_TOGGLE( wxWindow* aParent, wxWindowID aId, const wxBitmap& aCheckedBitmap,
const wxBitmap& aUncheckedBitmap, bool aChecked = false );
BITMAP_TOGGLE( wxWindow* aParent, wxWindowID aId, const wxBitmapBundle& aCheckedBitmap,
const wxBitmapBundle& aUncheckedBitmap, bool aChecked = false );
///< Set the checkbox state
void SetValue( bool aValue );
@ -68,8 +69,8 @@ private:
bool m_checked;
wxStaticBitmap* m_bitmap;
wxBitmap m_unchecked_bitmap;
wxBitmap m_checked_bitmap;
wxBitmapBundle m_unchecked_bitmap;
wxBitmapBundle m_checked_bitmap;
wxLongLong m_debounce; // Timestamp for debouncing events
};

View File

@ -21,7 +21,7 @@
#ifndef KICAD_GRID_BITMAP_TOGGLE_H
#define KICAD_GRID_BITMAP_TOGGLE_H
#include <wx/bitmap.h>
#include <wx/bmpbndl.h>
#include <wx/grid.h>
@ -31,8 +31,8 @@
class GRID_BITMAP_TOGGLE_RENDERER : public wxGridCellRenderer
{
public:
GRID_BITMAP_TOGGLE_RENDERER( const wxBitmap& aCheckedBitmap,
const wxBitmap& aUncheckedBitmap );
GRID_BITMAP_TOGGLE_RENDERER( const wxBitmapBundle& aCheckedBitmap,
const wxBitmapBundle& aUncheckedBitmap );
~GRID_BITMAP_TOGGLE_RENDERER() {}
@ -45,9 +45,9 @@ public:
int aRow, int aCol) override;
private:
wxBitmap m_bitmapChecked;
wxBitmapBundle m_bitmapChecked;
wxBitmap m_bitmapUnchecked;
wxBitmapBundle m_bitmapUnchecked;
};
#endif // KICAD_GRID_BITMAP_TOGGLE_H

View File

@ -523,8 +523,8 @@ APPEARANCE_CONTROLS::APPEARANCE_CONTROLS( PCB_BASE_FRAME* aParent, wxWindow* aFo
m_frame->GetToolManager()->RunAction( PCB_ACTIONS::flipBoard );
} );
m_toggleGridRenderer = new GRID_BITMAP_TOGGLE_RENDERER( KiBitmap( BITMAPS::visibility ),
KiBitmap( BITMAPS::visibility_off ) );
m_toggleGridRenderer = new GRID_BITMAP_TOGGLE_RENDERER(
KiBitmapBundle( BITMAPS::visibility ), KiBitmapBundle( BITMAPS::visibility_off ) );
m_netsGrid->RegisterDataType( wxT( "bool" ), m_toggleGridRenderer, new wxGridCellBoolEditor );
@ -550,7 +550,7 @@ APPEARANCE_CONTROLS::APPEARANCE_CONTROLS( PCB_BASE_FRAME* aParent, wxWindow* aFo
wxSize size = ConvertDialogToPixels( SWATCH_SIZE_SMALL_DU );
m_netsGrid->SetColSize( NET_GRID_TABLE::COL_COLOR, size.x + cellPadding );
size = KiBitmap( BITMAPS::visibility ).GetSize();
size = KiBitmapBundle( BITMAPS::visibility ).GetPreferredBitmapSizeFor( this );
m_netsGrid->SetColSize( NET_GRID_TABLE::COL_VISIBILITY, size.x + cellPadding );
m_netsGrid->SetDefaultCellFont( font );
@ -1554,10 +1554,9 @@ void APPEARANCE_CONTROLS::rebuildLayers()
swatch->SetToolTip( _( "Double click or middle click for color change, "
"right click for menu" ) );
BITMAP_TOGGLE* btn_visible = new BITMAP_TOGGLE( panel, layer,
KiBitmap( BITMAPS::visibility ),
KiBitmap( BITMAPS::visibility_off ),
aSetting->visible );
BITMAP_TOGGLE* btn_visible = new BITMAP_TOGGLE(
panel, layer, KiBitmapBundle( BITMAPS::visibility ),
KiBitmapBundle( BITMAPS::visibility_off ), aSetting->visible );
btn_visible->SetToolTip( _( "Show or hide this layer" ) );
wxStaticText* label = new wxStaticText( panel, layer, aSetting->label );
@ -2159,10 +2158,9 @@ void APPEARANCE_CONTROLS::rebuildObjects()
sizer->AddSpacer( swatchWidth );
}
BITMAP_TOGGLE* btn_visible = new BITMAP_TOGGLE( m_windowObjects, layer,
KiBitmap( BITMAPS::visibility ),
KiBitmap( BITMAPS::visibility_off ),
aSetting->visible );
BITMAP_TOGGLE* btn_visible = new BITMAP_TOGGLE(
m_windowObjects, layer, KiBitmapBundle( BITMAPS::visibility ),
KiBitmapBundle( BITMAPS::visibility_off ), aSetting->visible );
wxString tip;
tip.Printf( _( "Show or hide %s" ), aSetting->label.Lower() );
@ -2392,10 +2390,9 @@ void APPEARANCE_CONTROLS::rebuildNets()
if( isDefaultClass )
setting->ctl_color->Hide();
setting->ctl_visibility = new BITMAP_TOGGLE( setting->ctl_panel, aId,
KiBitmap( BITMAPS::visibility ),
KiBitmap( BITMAPS::visibility_off ),
!hiddenClasses.count( name ) );
setting->ctl_visibility = new BITMAP_TOGGLE(
setting->ctl_panel, aId, KiBitmapBundle( BITMAPS::visibility ),
KiBitmapBundle( BITMAPS::visibility_off ), !hiddenClasses.count( name ) );
wxString tip;
tip.Printf( _( "Show or hide ratsnest for nets in %s" ), name );