Component chooser: show aliases better
- In the listing, display alias names in italics - In the info panel, display per-alias description correctly, as well as root description Fixes: lp:1676190 * https://bugs.launchpad.net/kicad/+bug/1676190
This commit is contained in:
parent
cfac7bd31c
commit
d2b0a4b358
|
@ -310,6 +310,33 @@ void CMP_TREE_MODEL_ADAPTER::GetValue(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool CMP_TREE_MODEL_ADAPTER::GetAttr(
|
||||||
|
wxDataViewItem const& aItem,
|
||||||
|
unsigned int aCol,
|
||||||
|
wxDataViewItemAttr& aAttr ) const
|
||||||
|
{
|
||||||
|
auto node = ToNode( aItem );
|
||||||
|
wxASSERT( node );
|
||||||
|
|
||||||
|
if( node->Type != CMP_TREE_NODE::ALIAS )
|
||||||
|
{
|
||||||
|
// Currently only aliases are formatted at all
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( node->Alias && !node->Alias->IsRoot() && aCol == 0 )
|
||||||
|
{
|
||||||
|
// Names of non-root aliases are italicized
|
||||||
|
aAttr.SetItalic( true );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int CMP_TREE_MODEL_ADAPTER::ColWidth( CMP_TREE_NODE& aTree, int aCol, wxString const& aHeading )
|
int CMP_TREE_MODEL_ADAPTER::ColWidth( CMP_TREE_NODE& aTree, int aCol, wxString const& aHeading )
|
||||||
{
|
{
|
||||||
const int indent = aCol ? 0 : kDataViewIndent;
|
const int indent = aCol ? 0 : kDataViewIndent;
|
||||||
|
|
|
@ -87,6 +87,7 @@ class PART_LIBS;
|
||||||
* - `GetColumnType()` - get the data type shown in each column
|
* - `GetColumnType()` - get the data type shown in each column
|
||||||
* - `GetValue()` - get the data shown in a cell
|
* - `GetValue()` - get the data shown in a cell
|
||||||
* - `SetValue()` - edit the data in a cell (does nothing)
|
* - `SetValue()` - edit the data in a cell (does nothing)
|
||||||
|
* - `GetAttr()` - get any per-item formatting
|
||||||
* - `Compare()` - compare two rows, for sorting
|
* - `Compare()` - compare two rows, for sorting
|
||||||
* - `HasDefaultCompare()` - whether sorted by default
|
* - `HasDefaultCompare()` - whether sorted by default
|
||||||
*/
|
*/
|
||||||
|
@ -288,6 +289,19 @@ protected:
|
||||||
wxDataViewItem const& aItem,
|
wxDataViewItem const& aItem,
|
||||||
unsigned int aCol ) override { return false; }
|
unsigned int aCol ) override { return false; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get any formatting for an item.
|
||||||
|
*
|
||||||
|
* @param aItem item to get formatting for
|
||||||
|
* @param aCol column number of interest
|
||||||
|
* @param aAttr receiver for attributes
|
||||||
|
* @return true iff the item has non-default attributes
|
||||||
|
*/
|
||||||
|
virtual bool GetAttr(
|
||||||
|
wxDataViewItem const& aItem,
|
||||||
|
unsigned int aCol,
|
||||||
|
wxDataViewItemAttr& aAttr ) const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CMP_FILTER_TYPE m_filter;
|
CMP_FILTER_TYPE m_filter;
|
||||||
bool m_show_units;
|
bool m_show_units;
|
||||||
|
|
|
@ -31,7 +31,7 @@ static const wxString DescriptionFormat =
|
||||||
"__FIELDS__"
|
"__FIELDS__"
|
||||||
"</table>";
|
"</table>";
|
||||||
|
|
||||||
static const wxString AliasOfFormat = "<br><i>" + _( "Alias of " ) + "%s</i>";
|
static const wxString AliasOfFormat = "<br><i>" + _( "Alias of " ) + "%s (%s)</i>";
|
||||||
static const wxString DescFormat = "<br>%s";
|
static const wxString DescFormat = "<br>%s";
|
||||||
static const wxString KeywordsFormat = "<br>" + _( "Keywords:" ) + " %s";
|
static const wxString KeywordsFormat = "<br>" + _( "Keywords:" ) + " %s";
|
||||||
static const wxString FieldFormat =
|
static const wxString FieldFormat =
|
||||||
|
@ -90,37 +90,28 @@ protected:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
wxString root_name = _( "Unknown" );
|
||||||
|
wxString root_desc = "";
|
||||||
|
|
||||||
LIB_PART* root = m_part->GetPart();
|
LIB_PART* root = m_part->GetPart();
|
||||||
const wxString root_name = ( root ? root->GetName() : _( "Unknown" ) );
|
LIB_ALIAS* root_alias = root ? root->GetAlias( 0 ) : nullptr;
|
||||||
|
|
||||||
|
if( root )
|
||||||
|
root_name = root->GetName();
|
||||||
|
|
||||||
|
if( root_alias )
|
||||||
|
root_desc = root_alias->GetDescription();
|
||||||
|
|
||||||
m_html.Replace(
|
m_html.Replace(
|
||||||
"__ALIASOF__", wxString::Format( AliasOfFormat, EscapedHTML( root_name ) ) );
|
"__ALIASOF__", wxString::Format(
|
||||||
|
AliasOfFormat, EscapedHTML( root_name ), EscapedHTML( root_desc ) ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SetHtmlDesc()
|
void SetHtmlDesc()
|
||||||
{
|
{
|
||||||
wxString raw_desc;
|
wxString raw_desc = m_part->GetDescription();
|
||||||
|
|
||||||
if( m_part->IsRoot() )
|
|
||||||
{
|
|
||||||
raw_desc = m_part->GetDescription();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LIB_PART* root = m_part->GetPart();
|
|
||||||
|
|
||||||
for( size_t i = 0; i < root->GetAliasCount(); ++i )
|
|
||||||
{
|
|
||||||
LIB_ALIAS* alias = root->GetAlias( i );
|
|
||||||
|
|
||||||
if( alias && !alias->GetDescription().empty() )
|
|
||||||
{
|
|
||||||
raw_desc = alias->GetDescription();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
m_html.Replace( "__DESC__", wxString::Format( DescFormat, EscapedHTML( raw_desc ) ) );
|
m_html.Replace( "__DESC__", wxString::Format( DescFormat, EscapedHTML( raw_desc ) ) );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue