listboxes.cpp problem solved (see change_log)
This commit is contained in:
parent
7eff222c34
commit
d5d16186a6
|
@ -4,6 +4,14 @@ Started 2007-June-11
|
||||||
Please add newer entries at the top, list the date and your name with
|
Please add newer entries at the top, list the date and your name with
|
||||||
email address.
|
email address.
|
||||||
|
|
||||||
|
2007-Oct-29 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||||
|
================================================================================
|
||||||
|
+cvpcb: listboxes.cpp problem solved: Workaround for a curious bug in wxWidgets:
|
||||||
|
if we switch from a long list of footprints to a short list (a filtered footprint list),
|
||||||
|
and if the selected item is near the end of the long list,
|
||||||
|
the new list is not displayed from the top of the list box
|
||||||
|
|
||||||
|
|
||||||
2007-Oct-27 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
2007-Oct-27 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||||
================================================================================
|
================================================================================
|
||||||
+ all:
|
+ all:
|
||||||
|
|
|
@ -54,21 +54,21 @@
|
||||||
* The real font size will be computed at run time */
|
* The real font size will be computed at run time */
|
||||||
|
|
||||||
|
|
||||||
/*****************************/
|
/**************************/
|
||||||
/* Constructeur de WinEDA_App */
|
/* WinEDA_App Constructor */
|
||||||
/*****************************/
|
/**************************/
|
||||||
|
|
||||||
WinEDA_App::WinEDA_App()
|
WinEDA_App::WinEDA_App()
|
||||||
{
|
{
|
||||||
m_Checker = NULL;
|
m_Checker = NULL;
|
||||||
m_MainFrame = NULL;
|
m_MainFrame = NULL;
|
||||||
m_PcbFrame = NULL;
|
m_PcbFrame = NULL;
|
||||||
m_ModuleEditFrame = NULL; // Edition des modules
|
m_ModuleEditFrame = NULL; // Frame for footprint edition
|
||||||
m_SchematicFrame = NULL; // Edition des Schemas
|
m_SchematicFrame = NULL; // Frame for schematic edition
|
||||||
m_LibeditFrame = NULL; // Edition des composants
|
m_LibeditFrame = NULL; // Frame for component edition
|
||||||
m_ViewlibFrame = NULL; // Visualisation des composants
|
m_ViewlibFrame = NULL; // Frame for browsing component libraries
|
||||||
m_CvpcbFrame = NULL;
|
m_CvpcbFrame = NULL;
|
||||||
m_GerberFrame = NULL; // ecran de visualisation GERBER
|
m_GerberFrame = NULL; // Frame for the gerber viewer GERBVIEW
|
||||||
|
|
||||||
m_LastProjectMaxCount = 10;
|
m_LastProjectMaxCount = 10;
|
||||||
m_HtmlCtrl = NULL;
|
m_HtmlCtrl = NULL;
|
||||||
|
@ -83,15 +83,15 @@ WinEDA_App::WinEDA_App()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************/
|
/*************************/
|
||||||
/* Destructeur de WinEDA_App */
|
/* WinEDA_App Destructor */
|
||||||
/*****************************/
|
/*************************/
|
||||||
|
|
||||||
WinEDA_App::~WinEDA_App()
|
WinEDA_App::~WinEDA_App()
|
||||||
{
|
{
|
||||||
SaveSettings();
|
SaveSettings();
|
||||||
|
|
||||||
/* delete data non directement geree par wxAppl */
|
/* delete user datas */
|
||||||
delete g_Prj_Config;
|
delete g_Prj_Config;
|
||||||
delete m_EDA_Config;
|
delete m_EDA_Config;
|
||||||
delete m_EDA_CommonConfig;
|
delete m_EDA_CommonConfig;
|
||||||
|
@ -116,10 +116,12 @@ void WinEDA_App::InitEDA_Appl( const wxString& name )
|
||||||
ident = name + wxT( "-" ) + wxGetUserId();
|
ident = name + wxT( "-" ) + wxGetUserId();
|
||||||
m_Checker = new wxSingleInstanceChecker( ident );
|
m_Checker = new wxSingleInstanceChecker( ident );
|
||||||
|
|
||||||
/* Init environnement
|
/* Init kicad environment
|
||||||
* (KICAD definit le chemin de kicad ex: set KICAD=d:\kicad) */
|
* the environment variable KICAD (if exists) gives the kicad path:
|
||||||
|
* something like set KICAD=d:\kicad
|
||||||
|
*/
|
||||||
m_Env_Defined = wxGetEnv( wxT( "KICAD" ), &m_KicadEnv );
|
m_Env_Defined = wxGetEnv( wxT( "KICAD" ), &m_KicadEnv );
|
||||||
if( m_Env_Defined ) // m_KicadEnv doit finir par "/" ou "\"
|
if( m_Env_Defined ) // ensure m_KicadEnv ends by "/"
|
||||||
{
|
{
|
||||||
m_KicadEnv.Replace( WIN_STRING_DIR_SEP, UNIX_STRING_DIR_SEP );
|
m_KicadEnv.Replace( WIN_STRING_DIR_SEP, UNIX_STRING_DIR_SEP );
|
||||||
if( m_KicadEnv.Last() != '/' )
|
if( m_KicadEnv.Last() != '/' )
|
||||||
|
@ -129,13 +131,13 @@ void WinEDA_App::InitEDA_Appl( const wxString& name )
|
||||||
/* Prepare On Line Help */
|
/* Prepare On Line Help */
|
||||||
m_HelpFileName = name + wxT( ".html" );
|
m_HelpFileName = name + wxT( ".html" );
|
||||||
|
|
||||||
// Init parametres pour configuration
|
// Init parameters for configuration
|
||||||
SetVendorName( wxT( "kicad" ) );
|
SetVendorName( wxT( "kicad" ) );
|
||||||
SetAppName( name );
|
SetAppName( name );
|
||||||
m_EDA_Config = new wxConfig( name );
|
m_EDA_Config = new wxConfig( name );
|
||||||
m_EDA_CommonConfig = new wxConfig( wxT( "kicad_common" ) );
|
m_EDA_CommonConfig = new wxConfig( wxT( "kicad_common" ) );
|
||||||
|
|
||||||
/* Creation des fontes utiles */
|
/* Create the fontes used in dialogs and messages */
|
||||||
g_StdFontPointSize = FONT_DEFAULT_SIZE;
|
g_StdFontPointSize = FONT_DEFAULT_SIZE;
|
||||||
g_MsgFontPointSize = FONT_DEFAULT_SIZE;
|
g_MsgFontPointSize = FONT_DEFAULT_SIZE;
|
||||||
g_DialogFontPointSize = FONT_DEFAULT_SIZE;
|
g_DialogFontPointSize = FONT_DEFAULT_SIZE;
|
||||||
|
@ -155,12 +157,12 @@ void WinEDA_App::InitEDA_Appl( const wxString& name )
|
||||||
wxImage::AddHandler( new wxJPEGHandler );
|
wxImage::AddHandler( new wxJPEGHandler );
|
||||||
wxFileSystem::AddHandler( new wxZipFSHandler );
|
wxFileSystem::AddHandler( new wxZipFSHandler );
|
||||||
|
|
||||||
// Analyse command line & init binary path
|
// Analyse the command line & init binary path
|
||||||
SetBinDir();
|
SetBinDir();
|
||||||
|
|
||||||
ReadPdfBrowserInfos();
|
ReadPdfBrowserInfos();
|
||||||
|
|
||||||
// Internationalisation: chargement du Dictionnaire de kicad
|
// Internationalisation: loading the kicad suitable Dictionnary
|
||||||
m_EDA_CommonConfig->Read( wxT( "Language" ), &m_LanguageId, wxLANGUAGE_DEFAULT );
|
m_EDA_CommonConfig->Read( wxT( "Language" ), &m_LanguageId, wxLANGUAGE_DEFAULT );
|
||||||
|
|
||||||
bool succes = SetLanguage( TRUE );
|
bool succes = SetLanguage( TRUE );
|
||||||
|
@ -262,7 +264,7 @@ bool WinEDA_App::SetBinDir()
|
||||||
void WinEDA_App::GetSettings()
|
void WinEDA_App::GetSettings()
|
||||||
/*********************************/
|
/*********************************/
|
||||||
|
|
||||||
/* Lit les infos utiles sauvees lors de la derniere utilisation du logiciel
|
/* Get the last setup used (fontes, files opened...)
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
wxString Line, Ident;
|
wxString Line, Ident;
|
||||||
|
@ -639,8 +641,11 @@ wxMenu* WinEDA_App::SetLanguageList( wxMenu* MasterMenu )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************/
|
||||||
int WinEDA_App::OnRun()
|
int WinEDA_App::OnRun()
|
||||||
/* Run init scripts */
|
/**********************/
|
||||||
|
/* Run init scripts
|
||||||
|
*/
|
||||||
{
|
{
|
||||||
#ifdef KICAD_PYTHON
|
#ifdef KICAD_PYTHON
|
||||||
PyHandler::GetInstance()->RunScripts();
|
PyHandler::GetInstance()->RunScripts();
|
||||||
|
|
|
@ -141,7 +141,7 @@ void WinEDA_MsgPanel::Affiche_1_Parametre( int pos_X, const wxString& texte_H,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void WinEDA_MsgPanel::showItem( wxWindowDC& dc, const MsgItem& aItem )
|
void WinEDA_MsgPanel::showItem( wxDC& dc, const MsgItem& aItem )
|
||||||
{
|
{
|
||||||
int color = aItem.m_Color;
|
int color = aItem.m_Color;
|
||||||
|
|
||||||
|
|
|
@ -12,9 +12,10 @@
|
||||||
|
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
|
|
||||||
/************************************************************************/
|
/******************************************************************************/
|
||||||
/* Class (from wxListView) for displaying component and footprint lists */
|
/* Basic class (from wxListView) for displaying component and footprint lists */
|
||||||
/************************************************************************/
|
/* Not directly used: the 2 list boxes actually used are derived from it */
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
ListBoxBase::ListBoxBase( WinEDA_CvpcbFrame* parent,
|
ListBoxBase::ListBoxBase( WinEDA_CvpcbFrame* parent,
|
||||||
wxWindowID id, const wxPoint& loc, const wxSize& size ) :
|
wxWindowID id, const wxPoint& loc, const wxSize& size ) :
|
||||||
|
@ -28,14 +29,15 @@ ListBoxBase::ListBoxBase(WinEDA_CvpcbFrame * parent,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ListBoxBase::~ListBoxBase()
|
ListBoxBase::~ListBoxBase()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/************************************************/
|
/************************************************/
|
||||||
void ListBoxBase::OnSize( wxSizeEvent& event )
|
void ListBoxBase::OnSize( wxSizeEvent& event )
|
||||||
/************************************************/
|
/************************************************/
|
||||||
|
|
||||||
// Ajust the column width to the entire available window width
|
// Ajust the column width to the entire available window width
|
||||||
{
|
{
|
||||||
wxSize size = GetClientSize();
|
wxSize size = GetClientSize();
|
||||||
|
@ -52,15 +54,16 @@ int width = 0;
|
||||||
/*********************************/
|
/*********************************/
|
||||||
int ListBoxBase::GetSelection()
|
int ListBoxBase::GetSelection()
|
||||||
/*********************************/
|
/*********************************/
|
||||||
|
|
||||||
// Return an index for the selected item
|
// Return an index for the selected item
|
||||||
{
|
{
|
||||||
return GetFirstSelected();
|
return GetFirstSelected();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/************************************************************/
|
/***************************************/
|
||||||
/* ListBox derivee pour l'affichage de la liste des Modules */
|
/* ListBox handling the footprint list */
|
||||||
/************************************************************/
|
/***************************************/
|
||||||
|
|
||||||
FootprintListBox::FootprintListBox( WinEDA_CvpcbFrame* parent,
|
FootprintListBox::FootprintListBox( WinEDA_CvpcbFrame* parent,
|
||||||
wxWindowID id, const wxPoint& loc, const wxSize& size,
|
wxWindowID id, const wxPoint& loc, const wxSize& size,
|
||||||
|
@ -71,7 +74,6 @@ FootprintListBox::FootprintListBox(WinEDA_CvpcbFrame * parent,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FootprintListBox::~FootprintListBox()
|
FootprintListBox::~FootprintListBox()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -80,6 +82,7 @@ FootprintListBox::~FootprintListBox()
|
||||||
/**********************************/
|
/**********************************/
|
||||||
int FootprintListBox::GetCount()
|
int FootprintListBox::GetCount()
|
||||||
/**********************************/
|
/**********************************/
|
||||||
|
|
||||||
// Return number of items
|
// Return number of items
|
||||||
{
|
{
|
||||||
return m_ActiveFootprintList->Count();
|
return m_ActiveFootprintList->Count();
|
||||||
|
@ -89,16 +92,20 @@ int FootprintListBox::GetCount()
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void FootprintListBox::SetString( unsigned linecount, const wxString& text )
|
void FootprintListBox::SetString( unsigned linecount, const wxString& text )
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
// Change an item text
|
// Change an item text
|
||||||
{
|
{
|
||||||
if( linecount >= m_ActiveFootprintList->Count() )
|
if( linecount >= m_ActiveFootprintList->Count() )
|
||||||
linecount = m_ActiveFootprintList->Count() - 1;
|
linecount = m_ActiveFootprintList->Count() - 1;
|
||||||
if ( linecount >= 0 ) (*m_ActiveFootprintList)[linecount] = text;
|
if( linecount >= 0 )
|
||||||
|
(*m_ActiveFootprintList)[linecount] = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***************************************************/
|
/***************************************************/
|
||||||
wxString FootprintListBox::GetSelectedFootprint()
|
wxString FootprintListBox::GetSelectedFootprint()
|
||||||
/***************************************************/
|
/***************************************************/
|
||||||
|
|
||||||
// Return an index for the selected item
|
// Return an index for the selected item
|
||||||
{
|
{
|
||||||
wxString FootprintName;
|
wxString FootprintName;
|
||||||
|
@ -118,6 +125,7 @@ int ii = GetFirstSelected();
|
||||||
/*********************************************************/
|
/*********************************************************/
|
||||||
void FootprintListBox::AppendLine( const wxString& text )
|
void FootprintListBox::AppendLine( const wxString& text )
|
||||||
/*********************************************************/
|
/*********************************************************/
|
||||||
|
|
||||||
// Add an item at end of list
|
// Add an item at end of list
|
||||||
{
|
{
|
||||||
m_ActiveFootprintList->Add( text );
|
m_ActiveFootprintList->Add( text );
|
||||||
|
@ -128,19 +136,23 @@ void FootprintListBox::AppendLine(const wxString & text)
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
wxString FootprintListBox::OnGetItemText( long item, long column ) const
|
wxString FootprintListBox::OnGetItemText( long item, long column ) const
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
|
||||||
/* Overlayed function: MUST be provided in wxLC_VIRTUAL mode
|
/* Overlayed function: MUST be provided in wxLC_VIRTUAL mode
|
||||||
because real datas are not handled by ListBoxBase
|
* because real datas are not handled by ListBoxBase
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
return m_ActiveFootprintList->Item( item );
|
return m_ActiveFootprintList->Item( item );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************/
|
/*****************************************************************/
|
||||||
void FootprintListBox::SetSelection( unsigned index, bool State )
|
void FootprintListBox::SetSelection( unsigned index, bool State )
|
||||||
/*****************************************************************/
|
/*****************************************************************/
|
||||||
|
|
||||||
// Enable or disable an item
|
// Enable or disable an item
|
||||||
{
|
{
|
||||||
if ( (int) index >= GetCount() ) index = GetCount()-1;
|
if( (int) index >= GetCount() )
|
||||||
|
index = GetCount() - 1;
|
||||||
|
|
||||||
#ifndef __WXMAC__
|
#ifndef __WXMAC__
|
||||||
Select( index, State );
|
Select( index, State );
|
||||||
|
@ -152,9 +164,9 @@ void FootprintListBox::SetSelection(unsigned index, bool State)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************/
|
/**************************************************/
|
||||||
/* ListBox derivee pour l'affichage de la liste des Composants */
|
/* ListBox handling the schematic components list */
|
||||||
/***************************************************************/
|
/**************************************************/
|
||||||
|
|
||||||
ListBoxCmp::ListBoxCmp( WinEDA_CvpcbFrame* parent, wxWindowID id,
|
ListBoxCmp::ListBoxCmp( WinEDA_CvpcbFrame* parent, wxWindowID id,
|
||||||
const wxPoint& loc, const wxSize& size,
|
const wxPoint& loc, const wxSize& size,
|
||||||
|
@ -164,16 +176,13 @@ ListBoxCmp::ListBoxCmp(WinEDA_CvpcbFrame * parent, wxWindowID id,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ListBoxCmp::~ListBoxCmp()
|
ListBoxCmp::~ListBoxCmp()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Build the events table for the schematic components list box
|
||||||
/***********************************************************************/
|
*/
|
||||||
/* Construction de la table des evenements pour la fenetre des composants */
|
|
||||||
/***********************************************************************/
|
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE( ListBoxCmp, LIST_BOX_TYPE )
|
BEGIN_EVENT_TABLE( ListBoxCmp, LIST_BOX_TYPE )
|
||||||
EVT_SIZE( ListBoxBase::OnSize )
|
EVT_SIZE( ListBoxBase::OnSize )
|
||||||
|
@ -183,32 +192,41 @@ END_EVENT_TABLE()
|
||||||
/****************************/
|
/****************************/
|
||||||
void ListBoxCmp::Clear()
|
void ListBoxCmp::Clear()
|
||||||
/****************************/
|
/****************************/
|
||||||
|
|
||||||
// Reset ALL datas
|
// Reset ALL datas
|
||||||
{
|
{
|
||||||
m_ComponentList.Clear();
|
m_ComponentList.Clear();
|
||||||
SetItemCount( 0 );
|
SetItemCount( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************/
|
/******************************/
|
||||||
int ListBoxCmp::GetCount()
|
int ListBoxCmp::GetCount()
|
||||||
/******************************/
|
/******************************/
|
||||||
|
|
||||||
// Return number of items
|
// Return number of items
|
||||||
{
|
{
|
||||||
return m_ComponentList.Count();
|
return m_ComponentList.Count();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
void ListBoxCmp::SetString( unsigned linecount, const wxString& text )
|
void ListBoxCmp::SetString( unsigned linecount, const wxString& text )
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
|
|
||||||
// Change an item text
|
// Change an item text
|
||||||
{
|
{
|
||||||
if( linecount >= m_ComponentList.Count() )
|
if( linecount >= m_ComponentList.Count() )
|
||||||
linecount = m_ComponentList.Count() - 1;
|
linecount = m_ComponentList.Count() - 1;
|
||||||
if ( linecount >= 0 ) m_ComponentList[linecount] = text;
|
if( linecount >= 0 )
|
||||||
|
m_ComponentList[linecount] = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/****************************************************/
|
/****************************************************/
|
||||||
void ListBoxCmp::AppendLine( const wxString& text )
|
void ListBoxCmp::AppendLine( const wxString& text )
|
||||||
/****************************************************/
|
/****************************************************/
|
||||||
|
|
||||||
// Add an item at end of list
|
// Add an item at end of list
|
||||||
{
|
{
|
||||||
m_ComponentList.Add( text );
|
m_ComponentList.Add( text );
|
||||||
|
@ -219,19 +237,23 @@ void ListBoxCmp::AppendLine(const wxString & text)
|
||||||
/****************************************************************/
|
/****************************************************************/
|
||||||
wxString ListBoxCmp::OnGetItemText( long item, long column ) const
|
wxString ListBoxCmp::OnGetItemText( long item, long column ) const
|
||||||
/****************************************************************/
|
/****************************************************************/
|
||||||
|
|
||||||
/* Overlayed function: MUST be provided in wxLC_VIRTUAL mode
|
/* Overlayed function: MUST be provided in wxLC_VIRTUAL mode
|
||||||
because real datas are not handled by ListBoxBase
|
* because real datas are not handled by ListBoxBase
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
return m_ComponentList.Item( item );
|
return m_ComponentList.Item( item );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/********************************************************/
|
/********************************************************/
|
||||||
void ListBoxCmp::SetSelection( unsigned index, bool State )
|
void ListBoxCmp::SetSelection( unsigned index, bool State )
|
||||||
/*********************************************************/
|
/*********************************************************/
|
||||||
|
|
||||||
// Enable or disable an item
|
// Enable or disable an item
|
||||||
{
|
{
|
||||||
if ( (int) index >= GetCount() ) index = GetCount()-1;
|
if( (int) index >= GetCount() )
|
||||||
|
index = GetCount() - 1;
|
||||||
|
|
||||||
#ifndef __WXMAC__
|
#ifndef __WXMAC__
|
||||||
Select( index, State );
|
Select( index, State );
|
||||||
|
@ -242,14 +264,12 @@ void ListBoxCmp::SetSelection(unsigned index, bool State)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/********************************************/
|
/********************************************/
|
||||||
void WinEDA_CvpcbFrame::BuildCmpListBox()
|
void WinEDA_CvpcbFrame::BuildCmpListBox()
|
||||||
/********************************************/
|
/********************************************/
|
||||||
/* Construit la fenetre d'affichage de la liste des composant.
|
|
||||||
dimx et dimy sont les dimensions de la surface totale d'affichage
|
/* Create or update the schematic components list.
|
||||||
et non les dims de la fenetre des Cmp
|
|
||||||
Si la fenetre d'affichage a deja ete creee, il y a seulement
|
|
||||||
mise a jour de la liste
|
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
int ii;
|
int ii;
|
||||||
|
@ -276,20 +296,18 @@ wxSize size(10,10);
|
||||||
Composant->m_Module.GetData() );
|
Composant->m_Module.GetData() );
|
||||||
m_ListCmp->m_ComponentList.Add( msg );
|
m_ListCmp->m_ComponentList.Add( msg );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ListCmp->SetItemCount( m_ListCmp->m_ComponentList.Count() );
|
m_ListCmp->SetItemCount( m_ListCmp->m_ComponentList.Count() );
|
||||||
|
|
||||||
m_ListCmp->SetSelection( 0, TRUE );
|
m_ListCmp->SetSelection( 0, TRUE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************/
|
/**********************************************/
|
||||||
void WinEDA_CvpcbFrame::BuildFootprintListBox()
|
void WinEDA_CvpcbFrame::BuildFootprintListBox()
|
||||||
/*************************************************************/
|
/**********************************************/
|
||||||
/* Construit la fenetre d'affichage de la liste des Modules.
|
|
||||||
dimx et dimy sont les dimensions de la surface totale d'affichage
|
/* Create or update the footprint list.
|
||||||
et non les dims de la fenetre des Modules
|
|
||||||
Si la fenetre d'affichage a deja ete creee, il y a seulement
|
|
||||||
mise a jour de la liste
|
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
wxString msg;
|
wxString msg;
|
||||||
|
@ -336,6 +354,7 @@ int OldSelection = GetSelection();
|
||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************/
|
/**********************************************************************/
|
||||||
void FootprintListBox::SetFootprintFilteredList( STORECMP* Component )
|
void FootprintListBox::SetFootprintFilteredList( STORECMP* Component )
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
@ -362,10 +381,10 @@ bool HasItem = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( HasItem )
|
||||||
if ( HasItem ) SetActiveFootprintList(FALSE);
|
SetActiveFootprintList( FALSE );
|
||||||
else SetActiveFootprintList(TRUE);
|
else
|
||||||
|
SetActiveFootprintList( TRUE );
|
||||||
|
|
||||||
if( (GetCount() == 0) || ( OldSelection >= GetCount() ) )
|
if( (GetCount() == 0) || ( OldSelection >= GetCount() ) )
|
||||||
SetSelection( 0, TRUE );
|
SetSelection( 0, TRUE );
|
||||||
|
@ -377,9 +396,30 @@ bool HasItem = FALSE;
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
void FootprintListBox::SetActiveFootprintList( bool FullList, bool Redraw )
|
void FootprintListBox::SetActiveFootprintList( bool FullList, bool Redraw )
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
|
|
||||||
|
/** Set the footprint list. We can have 2 footprint list:
|
||||||
|
* The full footprint list
|
||||||
|
* The filtered footprint list (if the current selected component has a filter for footprints)
|
||||||
|
* @param FullList true = full footprint list, false = filtered footprint list
|
||||||
|
* @param Redraw = true to redraw the window
|
||||||
|
*/
|
||||||
{
|
{
|
||||||
bool old_selection = m_UseFootprintFullList;
|
bool old_selection = m_UseFootprintFullList;
|
||||||
|
|
||||||
|
/* Workaround for a curious bug in wxWidgets:
|
||||||
|
* if we switch from a long list of footprints to a short list (a filtered footprint list),
|
||||||
|
* and if the selected item is near the end of the long list,
|
||||||
|
* the new list is not displayed from the top of the list box
|
||||||
|
*/
|
||||||
|
if ( m_ActiveFootprintList )
|
||||||
|
{
|
||||||
|
bool new_selection;
|
||||||
|
if( FullList ) new_selection = TRUE;
|
||||||
|
else new_selection = FALSE;
|
||||||
|
if( new_selection != old_selection )
|
||||||
|
SetSelection( 0, TRUE );
|
||||||
|
}
|
||||||
|
|
||||||
if( FullList )
|
if( FullList )
|
||||||
{
|
{
|
||||||
m_UseFootprintFullList = TRUE;
|
m_UseFootprintFullList = TRUE;
|
||||||
|
@ -415,9 +455,10 @@ bool old_selection = m_UseFootprintFullList;
|
||||||
m_Parent->SetStatusText( msg, 2 );
|
m_Parent->SetStatusText( msg, 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************/
|
|
||||||
/* Construction de la table des evenements pour la fenetre des modules */
|
/**************************************/
|
||||||
/***********************************************************************/
|
/* Event table for the footprint list */
|
||||||
|
/**************************************/
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE( FootprintListBox, LIST_BOX_TYPE )
|
BEGIN_EVENT_TABLE( FootprintListBox, LIST_BOX_TYPE )
|
||||||
EVT_SIZE( ListBoxBase::OnSize )
|
EVT_SIZE( ListBoxBase::OnSize )
|
||||||
|
@ -439,11 +480,13 @@ wxString FootprintName = GetSelectedFootprint();
|
||||||
m_Parent->CreateScreenCmp(); /* refresh general */
|
m_Parent->CreateScreenCmp(); /* refresh general */
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( Module ) msg = Module->m_Doc;
|
if( Module )
|
||||||
|
msg = Module->m_Doc;
|
||||||
m_Parent->SetStatusText( msg, 0 );
|
m_Parent->SetStatusText( msg, 0 );
|
||||||
|
|
||||||
msg = wxT( "KeyW: " );
|
msg = wxT( "KeyW: " );
|
||||||
if( Module ) msg += Module->m_KeyWord;
|
if( Module )
|
||||||
|
msg += Module->m_KeyWord;
|
||||||
m_Parent->SetStatusText( msg, 1 );
|
m_Parent->SetStatusText( msg, 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -457,6 +500,7 @@ wxString FootprintName = GetSelectedFootprint();
|
||||||
m_Parent->SetNewPkg( FootprintName );
|
m_Parent->SetNewPkg( FootprintName );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************/
|
/**************************************************************/
|
||||||
STOREMOD* GetModuleDescrByName( const wxString& FootprintName )
|
STOREMOD* GetModuleDescrByName( const wxString& FootprintName )
|
||||||
/**************************************************************/
|
/**************************************************************/
|
||||||
|
@ -468,5 +512,6 @@ STOREMOD * FootprintItem = g_BaseListePkg;
|
||||||
if( FootprintItem->m_Module == FootprintName )
|
if( FootprintItem->m_Module == FootprintName )
|
||||||
break; // found !
|
break; // found !
|
||||||
}
|
}
|
||||||
|
|
||||||
return FootprintItem;
|
return FootprintItem;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1409,7 +1409,7 @@ class WinEDA_MsgPanel : public wxPanel
|
||||||
protected:
|
protected:
|
||||||
std::vector<MsgItem> m_Items;
|
std::vector<MsgItem> m_Items;
|
||||||
|
|
||||||
void showItem( wxWindowDC& dc, const MsgItem& aItem );
|
void showItem( wxDC& dc, const MsgItem& aItem );
|
||||||
|
|
||||||
public:
|
public:
|
||||||
WinEDA_DrawFrame* m_Parent;
|
WinEDA_DrawFrame* m_Parent;
|
||||||
|
|
Loading…
Reference in New Issue