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
|
||||
|
||||
properties/eda_angle_variant.cpp
|
||||
properties/pg_cell_renderer.cpp
|
||||
properties/pg_editors.cpp
|
||||
properties/pg_properties.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_item.h>
|
||||
#include <import_export.h>
|
||||
#include <properties/pg_cell_renderer.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <set>
|
||||
|
@ -45,6 +46,9 @@ PROPERTIES_PANEL::PROPERTIES_PANEL( wxWindow* aParent, EDA_BASE_FRAME* aFrame )
|
|||
if( !wxPGGlobalVars )
|
||||
wxPGInitResourceModule();
|
||||
|
||||
delete wxPGGlobalVars->m_defaultRenderer;
|
||||
wxPGGlobalVars->m_defaultRenderer = new PG_CELL_RENDERER();
|
||||
|
||||
m_caption = new wxStaticText( this, wxID_ANY, _( "No objects selected" ), wxDefaultPosition,
|
||||
wxDefaultSize, 0 );
|
||||
mainSizer->Add( m_caption, 0, wxALL | wxEXPAND, 5 );
|
||||
|
|
|
@ -110,7 +110,7 @@ public:
|
|||
void SetShape( SHAPE_T aShape ) { m_shape = aShape; }
|
||||
SHAPE_T GetShape() const { return m_shape; }
|
||||
|
||||
wxString GetFriendlyName() const override;
|
||||
wxString GetFriendlyName() const;
|
||||
|
||||
/**
|
||||
* 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" );
|
||||
}
|
||||
|
||||
wxString GetFriendlyName() const override { return EDA_SHAPE::GetFriendlyName(); }
|
||||
|
||||
bool IsType( const std::vector<KICAD_T>& aScanTypes ) const override;
|
||||
|
||||
void SetPosition( const VECTOR2I& aPos ) override { setPosition( aPos ); }
|
||||
|
|
Loading…
Reference in New Issue