void LIB_VIEW_FRAME::updatePreviewSymbol() { LIB_ALIAS* alias = getSelectedAlias(); KIGFX::SCH_VIEW* view = GetCanvas()->GetView(); if( m_previewItem ) { view->Remove( m_previewItem ); m_previewItem = nullptr; } ClearMsgPanel(); if( alias ) { GetRenderSettings()->m_ShowUnit = m_unit; GetRenderSettings()->m_ShowConvert = m_convert; view->Add( alias ); m_previewItem = alias; AppendMsgPanel( _( "Name" ), alias->GetName(), BLUE, 6 ); AppendMsgPanel( _( "Description" ), alias->GetDescription(), CYAN, 6 ); AppendMsgPanel( _( "Key words" ), alias->GetKeyWords(), DARKDARKGRAY ); } GetCanvas()->ForceRefresh(); }
/** * Function RedrawActiveWindow * Display the current selected component. * If the component is an alias, the ROOT component is displayed */ void LIB_VIEW_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg ) { LIB_COMPONENT* component; LIB_ALIAS* entry; CMP_LIBRARY* lib; wxString msg; wxString tmp; lib = CMP_LIBRARY::FindLibrary( m_libraryName ); if( lib == NULL ) return; entry = lib->FindEntry( m_entryName ); if( entry == NULL ) return; component = entry->GetComponent(); m_canvas->DrawBackGround( DC ); if( !entry->IsRoot() ) { if( component == NULL ) // Should not occur return; // Temporarily change the name field text to reflect the alias name. msg = entry->GetName(); tmp = component->GetName(); component->SetName( msg ); if( m_unit < 1 ) m_unit = 1; if( m_convert < 1 ) m_convert = 1; } else { msg = _( "None" ); } component->Draw( m_canvas, DC, wxPoint( 0, 0 ), m_unit, m_convert, GR_DEFAULT_DRAWMODE ); /* Redraw the cursor */ m_canvas->DrawCrossHair( DC ); if( !tmp.IsEmpty() ) component->SetName( tmp ); ClearMsgPanel(); AppendMsgPanel( _( "Part" ), component->GetName(), BLUE, 6 ); AppendMsgPanel( _( "Alias" ), msg, RED, 6 ); AppendMsgPanel( _( "Description" ), entry->GetDescription(), CYAN, 6 ); AppendMsgPanel( _( "Key words" ), entry->GetKeyWords(), DARKDARKGRAY ); }
void SetHtmlKeywords() { wxString keywords = m_part->GetKeyWords(); if( keywords.empty() ) m_html.Replace( "__KEY__", wxEmptyString ); else m_html.Replace( "__KEY__", wxString::Format( KeywordsFormat, EscapedHTML( keywords ) ) ); }
// Used in DataBaseGetName: this is a callback function for EDA_LIST_DIALOG // to display keywords and description of a component void DisplayCmpDocAndKeywords( wxString& Name ) { LIB_ALIAS* CmpEntry = NULL; CmpEntry = CMP_LIBRARY::FindLibraryEntry( Name ); if( CmpEntry == NULL ) return; Name = wxT( "Description: " ) + CmpEntry->GetDescription(); Name += wxT( "\nKey Words: " ) + CmpEntry->GetKeyWords(); }
// Used in DataBaseGetName: this is a callback function for EDA_LIST_DIALOG // to display keywords and description of a component void DisplayCmpDocAndKeywords( wxString& aName, void* aData ) { PART_LIBS* libs = (PART_LIBS*) aData; wxASSERT( libs ); LIB_ALIAS* part = libs->FindLibraryEntry( aName ); if( !part ) return; aName = wxT( "Description: " ) + part->GetDescription(); aName += wxT( "\nKey Words: " ) + part->GetKeyWords(); }
void LIB_EDIT_FRAME::DisplayCmpDoc() { LIB_ALIAS* alias; PART_LIB* lib = GetCurLib(); LIB_PART* part = GetCurPart(); ClearMsgPanel(); if( !lib || !part ) return; wxString msg = part->GetName(); AppendMsgPanel( _( "Name" ), msg, BLUE, 8 ); if( m_aliasName == part->GetName() ) msg = _( "None" ); else msg = m_aliasName; alias = part->GetAlias( m_aliasName ); wxCHECK_RET( alias != NULL, "Alias not found in component." ); AppendMsgPanel( _( "Alias" ), msg, RED, 8 ); static wxChar UnitLetter[] = wxT( "?ABCDEFGHIJKLMNOPQRSTUVWXYZ" ); msg = UnitLetter[m_unit]; AppendMsgPanel( _( "Unit" ), msg, BROWN, 8 ); if( m_convert > 1 ) msg = _( "Convert" ); else msg = _( "Normal" ); AppendMsgPanel( _( "Body" ), msg, GREEN, 8 ); if( part->IsPower() ) msg = _( "Power Symbol" ); else msg = _( "Part" ); AppendMsgPanel( _( "Type" ), msg, MAGENTA, 8 ); AppendMsgPanel( _( "Description" ), alias->GetDescription(), CYAN, 8 ); AppendMsgPanel( _( "Key words" ), alias->GetKeyWords(), DARKDARKGRAY ); AppendMsgPanel( _( "Datasheet" ), alias->GetDocFileName(), DARKDARKGRAY ); }
void LIB_VIEW_FRAME::RedrawActiveWindow( wxDC* DC, bool EraseBg ) { LIB_ALIAS* entry = Prj().SchLibs()->FindLibraryAlias( m_entryName, m_libraryName ); if( !entry ) return; LIB_PART* part = entry->GetPart(); if( !part ) return; wxString msg; wxString tmp; m_canvas->DrawBackGround( DC ); if( !entry->IsRoot() ) { // Temporarily change the name field text to reflect the alias name. msg = entry->GetName(); tmp = part->GetName(); part->SetName( msg ); if( m_unit < 1 ) m_unit = 1; if( m_convert < 1 ) m_convert = 1; } else msg = _( "None" ); part->Draw( m_canvas, DC, wxPoint( 0, 0 ), m_unit, m_convert, GR_DEFAULT_DRAWMODE ); // Redraw the cursor m_canvas->DrawCrossHair( DC ); if( !tmp.IsEmpty() ) part->SetName( tmp ); ClearMsgPanel(); AppendMsgPanel( _( "Part" ), part->GetName(), BLUE, 6 ); AppendMsgPanel( _( "Alias" ), msg, RED, 6 ); AppendMsgPanel( _( "Description" ), entry->GetDescription(), CYAN, 6 ); AppendMsgPanel( _( "Key words" ), entry->GetKeyWords(), DARKDARKGRAY ); }
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::InitPanelDoc() { LIB_ALIAS* alias; LIB_PART* component = m_Parent->GetCurPart(); if( component == NULL ) return; wxString aliasname = m_Parent->GetAliasName(); if( aliasname.IsEmpty() ) return; alias = component->GetAlias( aliasname ); if( alias != NULL ) { m_DocCtrl->SetValue( alias->GetDescription() ); m_KeywordsCtrl->SetValue( alias->GetKeyWords() ); m_DocfileCtrl->SetValue( alias->GetDocFileName() ); } }
void COMPONENT_TREE_SEARCH_CONTAINER::AddAliasList( const wxString& aNodeName, const wxArrayString& aAliasNameList, PART_LIB* aOptionalLib ) { TREE_NODE* const lib_node = new TREE_NODE( TREE_NODE::TYPE_LIB, NULL, NULL, aNodeName, wxEmptyString, wxEmptyString ); m_nodes.push_back( lib_node ); for( const wxString& aName : aAliasNameList ) { LIB_ALIAS* a; if( aOptionalLib ) a = aOptionalLib->FindAlias( aName ); else a = m_libs->FindLibraryAlias( aName, wxEmptyString ); if( a == NULL ) continue; wxString search_text; search_text = ( a->GetKeyWords().empty() ) ? wxT(" ") : a->GetKeyWords(); search_text += a->GetDescription(); wxString display_info; if( !a->GetDescription().empty() ) { // Preformatting. Unfortunately, the tree widget doesn't have columns // and using tabs does not work very well or does not work at all // (depending on OS versions). So indent with spaces in fixed-font width. // The 98%-ile of length of strings found in the standard library is 15 // characters. Use this as a reasonable cut-off point for aligned indentation. // For the few component names longer than that, the description is indented a // bit more. // The max found in the default lib would be 20 characters, but that creates too // much visible whitespace for the less extreme component names. const int COLUMN_DESCR_POS = 15; const int indent_len = COLUMN_DESCR_POS - a->GetName().length(); display_info = wxString::Format( wxT( " %*s [ %s ]" ), indent_len > 0 ? indent_len : 0, wxT( "" ), GetChars( a->GetDescription() ) ); } TREE_NODE* alias_node = new TREE_NODE( TREE_NODE::TYPE_ALIAS, lib_node, a, a->GetName(), display_info, search_text ); m_nodes.push_back( alias_node ); if( a->GetPart()->IsMulti() ) // Add all units as sub-nodes. { for( int u = 1; u <= a->GetPart()->GetUnitCount(); ++u ) { wxString unitName = _("Unit"); unitName += wxT( " " ) + LIB_PART::SubReference( u, false ); TREE_NODE* unit_node = new TREE_NODE( TREE_NODE::TYPE_UNIT, alias_node, a, unitName, wxEmptyString, wxEmptyString ); unit_node->Unit = u; m_nodes.push_back( unit_node ); } } ++m_components_added; } }
bool DIALOG_CHOOSE_COMPONENT::updateSelection() { int unit = 0; LIB_ALIAS* selection = m_search_container->GetSelectedAlias( &unit ); m_componentView->Refresh(); m_componentDetails->Clear(); if( selection == NULL ) return false; m_componentDetails->Freeze(); wxFont font_normal = m_componentDetails->GetFont(); wxFont font_bold = m_componentDetails->GetFont(); font_bold.SetWeight( wxFONTWEIGHT_BOLD ); wxTextAttr headline_attribute; headline_attribute.SetFont( font_bold ); wxTextAttr text_attribute; text_attribute.SetFont( font_normal ); const wxString name = selection->GetName(); if ( !name.empty() ) { m_componentDetails->SetDefaultStyle( headline_attribute ); m_componentDetails->AppendText( name ); } const wxString description = selection->GetDescription(); if( !description.empty() ) { if ( !m_componentDetails->IsEmpty() ) m_componentDetails->AppendText( wxT( "\n\n" ) ); m_componentDetails->SetDefaultStyle( headline_attribute ); m_componentDetails->AppendText( _( "Description\n" ) ); m_componentDetails->SetDefaultStyle( text_attribute ); m_componentDetails->AppendText( description ); } const wxString keywords = selection->GetKeyWords(); if( !keywords.empty() ) { if ( !m_componentDetails->IsEmpty() ) m_componentDetails->AppendText( wxT( "\n\n" ) ); m_componentDetails->SetDefaultStyle( headline_attribute ); m_componentDetails->AppendText( _( "Keywords\n" ) ); m_componentDetails->SetDefaultStyle( text_attribute ); m_componentDetails->AppendText( keywords ); } if ( !selection->IsRoot() ) { LIB_PART* root_part = selection->GetPart(); const wxString root_component_name( root_part ? root_part->GetName() : _( "Unknown" ) ); if ( !m_componentDetails->IsEmpty() ) m_componentDetails->AppendText( wxT( "\n\n" ) ); m_componentDetails->SetDefaultStyle( headline_attribute ); m_componentDetails->AppendText( _( "Alias of " ) ); m_componentDetails->SetDefaultStyle( text_attribute ); m_componentDetails->AppendText( root_component_name ); } m_componentDetails->SetInsertionPoint( 0 ); // scroll up. m_componentDetails->Thaw(); return true; }