diff --git a/common/lib_tree_model_adapter.cpp b/common/lib_tree_model_adapter.cpp index 1dc9581688..87f8dcba64 100644 --- a/common/lib_tree_model_adapter.cpp +++ b/common/lib_tree_model_adapter.cpp @@ -128,10 +128,10 @@ LIB_TREE_NODE* LIB_TREE_MODEL_ADAPTER::ToNode( wxDataViewItem aItem ) LIB_TREE_MODEL_ADAPTER::LIB_TREE_MODEL_ADAPTER( EDA_BASE_FRAME* aParent, const wxString& aPinnedKey, APP_SETTINGS_BASE::LIB_TREE& aSettingsStruct ) : - m_widget( nullptr ), - m_lazyLoadHandler( nullptr ), m_parent( aParent ), m_cfg( aSettingsStruct ), + m_widget( nullptr ), + m_lazyLoadHandler( nullptr ), m_sort_mode( BEST_MATCH ), m_show_units( true ), m_preselect_unit( 0 ), @@ -144,6 +144,16 @@ LIB_TREE_MODEL_ADAPTER::LIB_TREE_MODEL_ADAPTER( EDA_BASE_FRAME* aParent, const w m_availableColumns = { _HKI( "Item" ), _HKI( "Description" ) }; + loadColumnConfig(); +} + + +LIB_TREE_MODEL_ADAPTER::~LIB_TREE_MODEL_ADAPTER() +{} + + +void LIB_TREE_MODEL_ADAPTER::loadColumnConfig() +{ for( const std::pair& pair : m_cfg.column_widths ) m_colWidths[pair.first] = pair.second; @@ -157,10 +167,6 @@ LIB_TREE_MODEL_ADAPTER::LIB_TREE_MODEL_ADAPTER( EDA_BASE_FRAME* aParent, const w } -LIB_TREE_MODEL_ADAPTER::~LIB_TREE_MODEL_ADAPTER() -{} - - std::vector LIB_TREE_MODEL_ADAPTER::GetOpenLibs() const { std::vector openLibs; diff --git a/eeschema/symbol_tree_model_adapter.cpp b/eeschema/symbol_tree_model_adapter.cpp index 77af78133b..3b8bd50fa7 100644 --- a/eeschema/symbol_tree_model_adapter.cpp +++ b/eeschema/symbol_tree_model_adapter.cpp @@ -36,33 +36,28 @@ #include #include -bool SYMBOL_TREE_MODEL_ADAPTER::m_show_progress = true; - #define PROGRESS_INTERVAL_MILLIS 33 // 30 FPS refresh rate wxObjectDataPtr -SYMBOL_TREE_MODEL_ADAPTER::Create( SCH_BASE_FRAME* aParent, - SYMBOL_LIBRARY_ADAPTER* aManager ) +SYMBOL_TREE_MODEL_ADAPTER::Create( SCH_BASE_FRAME* aParent, SYMBOL_LIBRARY_ADAPTER* aManager ) { auto* adapter = new SYMBOL_TREE_MODEL_ADAPTER( aParent, aManager ); return wxObjectDataPtr( adapter ); } -SYMBOL_TREE_MODEL_ADAPTER::SYMBOL_TREE_MODEL_ADAPTER( SCH_BASE_FRAME* aParent, - SYMBOL_LIBRARY_ADAPTER* aLibs ) : - LIB_TREE_MODEL_ADAPTER( aParent, "pinned_symbol_libs", - aParent->GetViewerSettingsBase()->m_LibTree ), +SYMBOL_TREE_MODEL_ADAPTER::SYMBOL_TREE_MODEL_ADAPTER( SCH_BASE_FRAME* aParent, SYMBOL_LIBRARY_ADAPTER* aLibs ) : + LIB_TREE_MODEL_ADAPTER( aParent, "pinned_symbol_libs", aParent->GetViewerSettingsBase()->m_LibTree ), m_adapter( aLibs ), m_check_pending_libraries_timer( nullptr ) { + m_colWidths[ GetDefaultFieldName( FIELD_T::VALUE, false ) ] = 300; + m_colWidths[ GetDefaultFieldName( FIELD_T::FOOTPRINT, false ) ] = 600; + m_colWidths[ GetDefaultFieldName( FIELD_T::DATASHEET, false ) ] = 600; + m_availableColumns.emplace_back( GetDefaultFieldName( FIELD_T::VALUE, false ) ); m_availableColumns.emplace_back( GetDefaultFieldName( FIELD_T::FOOTPRINT, false ) ); - - // Description is always shown - //m_availableColumns.emplace_back( GetDefaultFieldName( FIELD_T::DESCRIPTION, false ) ); - // Datasheet probably isn't useful, but better to leave that decision to the user: m_availableColumns.emplace_back( GetDefaultFieldName( FIELD_T::DATASHEET, false ) ); } @@ -72,6 +67,21 @@ SYMBOL_TREE_MODEL_ADAPTER::~SYMBOL_TREE_MODEL_ADAPTER() {} +void SYMBOL_TREE_MODEL_ADAPTER::loadColumnConfig() +{ + for( const std::pair& pair : m_cfg.column_widths ) + m_colWidths[pair.first] = pair.second; + + m_shownColumns = m_cfg.columns; + + if( m_shownColumns.empty() ) + m_shownColumns = { _HKI( "Item" ), _HKI( "Description" ), GetDefaultFieldName( FIELD_T::VALUE, false ) }; + + if( m_shownColumns[0] != _HKI( "Item" ) ) + m_shownColumns.insert( m_shownColumns.begin(), _HKI( "Item" ) ); +} + + void SYMBOL_TREE_MODEL_ADAPTER::AddLibraries( SCH_BASE_FRAME* aFrame ) { COMMON_SETTINGS* cfg = Pgm().GetCommonSettings(); diff --git a/eeschema/symbol_tree_model_adapter.h b/eeschema/symbol_tree_model_adapter.h index 780a133acc..21c5207705 100644 --- a/eeschema/symbol_tree_model_adapter.h +++ b/eeschema/symbol_tree_model_adapter.h @@ -62,14 +62,11 @@ protected: */ SYMBOL_TREE_MODEL_ADAPTER( SCH_BASE_FRAME* aParent, SYMBOL_LIBRARY_ADAPTER* aManager ); + void loadColumnConfig() override; + PROJECT::LIB_TYPE_T getLibType() override { return PROJECT::LIB_TYPE_T::SYMBOL_LIB; } private: - /** - * Flag to only show the symbol library table load progress dialog the first time. - */ - static bool m_show_progress; - SYMBOL_LIBRARY_ADAPTER* m_adapter; std::set m_pending_load_libraries; diff --git a/eeschema/symbol_viewer_frame.cpp b/eeschema/symbol_viewer_frame.cpp index cd40fef9a6..08be08cc6d 100644 --- a/eeschema/symbol_viewer_frame.cpp +++ b/eeschema/symbol_viewer_frame.cpp @@ -75,7 +75,6 @@ LIB_ID SYMBOL_VIEWER_FRAME::m_currentSymbol; int SYMBOL_VIEWER_FRAME::m_unit = 1; int SYMBOL_VIEWER_FRAME::m_bodyStyle = 1; -bool SYMBOL_VIEWER_FRAME::m_show_progress = true; BEGIN_EVENT_TABLE( SYMBOL_VIEWER_FRAME, SCH_BASE_FRAME ) diff --git a/eeschema/symbol_viewer_frame.h b/eeschema/symbol_viewer_frame.h index 82ad09d48e..49688b784d 100644 --- a/eeschema/symbol_viewer_frame.h +++ b/eeschema/symbol_viewer_frame.h @@ -171,7 +171,6 @@ private: static int m_unit; static int m_bodyStyle; - static bool m_show_progress; /** * Updated to `true` if a list rewrite on GUI activation resulted in the symbol diff --git a/include/lib_tree_model_adapter.h b/include/lib_tree_model_adapter.h index ff3932111b..27be4c39c9 100644 --- a/include/lib_tree_model_adapter.h +++ b/include/lib_tree_model_adapter.h @@ -353,6 +353,8 @@ protected: LIB_TREE_NODE_LIBRARY& DoAddLibraryNode( const wxString& aNodeName, const wxString& aDesc, bool pinned ); + virtual void loadColumnConfig(); + /** * Check whether a container has columns too */ @@ -426,18 +428,19 @@ protected: void recreateColumns(); void createMissingColumns(); - LIB_TREE_NODE_ROOT m_tree; - std::map m_colIdxMap; - std::vector m_availableColumns; - - wxDataViewCtrl* m_widget; - std::vector m_shownColumns; // Stored in display order - std::function m_lazyLoadHandler; - -private: +protected: EDA_BASE_FRAME* m_parent; APP_SETTINGS_BASE::LIB_TREE& m_cfg; + LIB_TREE_NODE_ROOT m_tree; + std::map m_colIdxMap; + std::vector m_availableColumns; + std::map m_colWidths; + std::vector m_shownColumns; // Stored in display order + wxDataViewCtrl* m_widget; + std::function m_lazyLoadHandler; + +private: SORT_MODE m_sort_mode; bool m_show_units; LIB_ID m_preselect_lib_id; @@ -448,7 +451,6 @@ private: std::vector m_columns; std::map m_colNameMap; - std::map m_colWidths; }; #endif // LIB_TREE_MODEL_ADAPTER_H