Properties: implement ellipsization for name column
This commit is contained in:
parent
396db7794d
commit
5061f0556f
|
@ -459,6 +459,7 @@ set( COMMON_SRCS
|
||||||
project/project_local_settings.cpp
|
project/project_local_settings.cpp
|
||||||
|
|
||||||
properties/eda_angle_variant.cpp
|
properties/eda_angle_variant.cpp
|
||||||
|
properties/pg_cell_renderer.cpp
|
||||||
properties/pg_editors.cpp
|
properties/pg_editors.cpp
|
||||||
properties/pg_properties.cpp
|
properties/pg_properties.cpp
|
||||||
properties/property_mgr.cpp
|
properties/property_mgr.cpp
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 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 <wx/control.h>
|
||||||
|
#include <wx/propgrid/propgrid.h>
|
||||||
|
#include <properties/pg_cell_renderer.h>
|
||||||
|
|
||||||
|
|
||||||
|
PG_CELL_RENDERER::PG_CELL_RENDERER() :
|
||||||
|
wxPGDefaultRenderer()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
bool PG_CELL_RENDERER::Render( wxDC &aDC, const wxRect &aRect, const wxPropertyGrid *aGrid,
|
||||||
|
wxPGProperty *aProperty, int aColumn, int aItem, int aFlags ) const
|
||||||
|
{
|
||||||
|
// Default behavior for value column
|
||||||
|
if( aColumn > 0 )
|
||||||
|
return wxPGDefaultRenderer::Render( aDC, aRect, aGrid, aProperty, aColumn, aItem, aFlags );
|
||||||
|
|
||||||
|
wxPGCell cell = aGrid->GetUnspecifiedValueAppearance();
|
||||||
|
|
||||||
|
wxString text;
|
||||||
|
int preDrawFlags = aFlags;
|
||||||
|
|
||||||
|
aProperty->GetDisplayInfo( aColumn, aItem, aFlags, &text, &cell );
|
||||||
|
|
||||||
|
text = wxControl::Ellipsize( text, aDC, wxELLIPSIZE_MIDDLE, aRect.GetWidth() );
|
||||||
|
|
||||||
|
int imageWidth = PreDrawCell( aDC, aRect, aGrid, cell, preDrawFlags );
|
||||||
|
int imageOffset = aProperty->GetImageOffset( imageWidth );
|
||||||
|
|
||||||
|
DrawEditorValue( aDC, aRect, imageOffset, text, aProperty, nullptr );
|
||||||
|
|
||||||
|
PostDrawCell( aDC, aGrid, cell, preDrawFlags );
|
||||||
|
|
||||||
|
return !text.IsEmpty();
|
||||||
|
}
|
|
@ -23,6 +23,7 @@
|
||||||
#include <eda_base_frame.h>
|
#include <eda_base_frame.h>
|
||||||
#include <eda_item.h>
|
#include <eda_item.h>
|
||||||
#include <import_export.h>
|
#include <import_export.h>
|
||||||
|
#include <properties/pg_cell_renderer.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
@ -45,6 +46,9 @@ PROPERTIES_PANEL::PROPERTIES_PANEL( wxWindow* aParent, EDA_BASE_FRAME* aFrame )
|
||||||
if( !wxPGGlobalVars )
|
if( !wxPGGlobalVars )
|
||||||
wxPGInitResourceModule();
|
wxPGInitResourceModule();
|
||||||
|
|
||||||
|
delete wxPGGlobalVars->m_defaultRenderer;
|
||||||
|
wxPGGlobalVars->m_defaultRenderer = new PG_CELL_RENDERER();
|
||||||
|
|
||||||
m_caption = new wxStaticText( this, wxID_ANY, _( "No objects selected" ), wxDefaultPosition,
|
m_caption = new wxStaticText( this, wxID_ANY, _( "No objects selected" ), wxDefaultPosition,
|
||||||
wxDefaultSize, 0 );
|
wxDefaultSize, 0 );
|
||||||
mainSizer->Add( m_caption, 0, wxALL | wxEXPAND, 5 );
|
mainSizer->Add( m_caption, 0, wxALL | wxEXPAND, 5 );
|
||||||
|
|
|
@ -110,7 +110,7 @@ public:
|
||||||
void SetShape( SHAPE_T aShape ) { m_shape = aShape; }
|
void SetShape( SHAPE_T aShape ) { m_shape = aShape; }
|
||||||
SHAPE_T GetShape() const { return m_shape; }
|
SHAPE_T GetShape() const { return m_shape; }
|
||||||
|
|
||||||
wxString GetFriendlyName() const override;
|
wxString GetFriendlyName() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the starting point of the graphic.
|
* Return the starting point of the graphic.
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2022 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 <wx/propgrid/property.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enhanced renderer to work around some limitations in wxWidgets 3.0 capabilities
|
||||||
|
*/
|
||||||
|
class PG_CELL_RENDERER : public wxPGDefaultRenderer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PG_CELL_RENDERER();
|
||||||
|
virtual ~PG_CELL_RENDERER() = default;
|
||||||
|
|
||||||
|
bool Render( wxDC &aDC, const wxRect &aRect, const wxPropertyGrid *aGrid,
|
||||||
|
wxPGProperty *aProperty, int aColumn, int aItem, int aFlags ) const override;
|
||||||
|
};
|
|
@ -57,6 +57,8 @@ public:
|
||||||
return wxT( "PCB_SHAPE" );
|
return wxT( "PCB_SHAPE" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxString GetFriendlyName() const override { return EDA_SHAPE::GetFriendlyName(); }
|
||||||
|
|
||||||
bool IsType( const std::vector<KICAD_T>& aScanTypes ) const override;
|
bool IsType( const std::vector<KICAD_T>& aScanTypes ) const override;
|
||||||
|
|
||||||
void SetPosition( const VECTOR2I& aPos ) override { setPosition( aPos ); }
|
void SetPosition( const VECTOR2I& aPos ) override { setPosition( aPos ); }
|
||||||
|
|
Loading…
Reference in New Issue