Loading CHANGELOG.txt +6 −3 Original line number Original line Diff line number Diff line Loading @@ -16,10 +16,13 @@ email address. 2009-Jan-29 UPDATE Dick Hollenbeck <dick@softplc.com> 2009-Jan-29 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ ================================================================================ ++all common.c added EnsureTextCtrlWidth() ++eeschema ++eeschema dialog edit component in schematic: make sure chipname text control is wide * dialog edit component in schematic: make sure chipname text control is wide enough to handle unusually long chip names. Did not have time to look at enough to handle unusually long chip names. dialog edit component in library. * Retain and re-use user's desired dialog edit component window size. Did not have time to look at dialog edit component in library. 2009-Jan-27 UPDATE Vesa Solonen <vesa.solonen@hut.fi> 2009-Jan-27 UPDATE Vesa Solonen <vesa.solonen@hut.fi> Loading common/common.cpp +36 −0 Original line number Original line Diff line number Diff line Loading @@ -72,6 +72,42 @@ void SetLocaleTo_Default( void ) } } /********************************************************************/ bool EnsureTextCtrlWidth( wxTextCtrl* aCtrl, const wxString* aString ) /********************************************************************/ { wxWindow* window = aCtrl->GetParent(); if( !window ) window = aCtrl; wxString ctrlText; if( !aString ) { ctrlText = aCtrl->GetValue(); aString = &ctrlText; } wxCoord width; wxCoord height; { wxClientDC dc( window ); dc.SetFont( aCtrl->GetFont() ); dc.GetTextExtent( *aString, &width, &height ); } wxSize size = aCtrl->GetSize(); if( size.GetWidth() < width + 10 ) { size.SetWidth( width + 10 ); aCtrl->SetSizeHints( size ); return true; } return false; } /*********************************************************************************************/ /*********************************************************************************************/ Ki_PageDescr::Ki_PageDescr( const wxSize& size, const wxPoint& offset, const wxString& name ) Ki_PageDescr::Ki_PageDescr( const wxSize& size, const wxPoint& offset, const wxString& name ) /*********************************************************************************************/ /*********************************************************************************************/ Loading eeschema/dialog_edit_component_in_schematic.cpp +15 −28 Original line number Original line Diff line number Diff line Loading @@ -19,21 +19,7 @@ int DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_SelectedRow; int DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_SelectedRow; /** wxSize DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize = wxDefaultSize; * Function GetTextSize * computes the size of a text string in pixels from the wxFont used within a wxTextCtrl. * @param aString is the text string to measure, must be a single line, no newlines. * @param aWindow is the wxWindow which is the parent of the wxTextCtrl \a aCtrl. * @param aWidth is where to put the width of the string in pixels. * @param aHeight is where to put the heigth of the string in pixels. */ static void GetTextSize( const wxString& aString, wxWindow* aWindow, wxTextCtrl* aCtrl, wxCoord* aWidth, wxCoord* aHeight ) { wxClientDC dc( aWindow ); dc.SetFont( aCtrl->GetFont() ); dc.GetTextExtent( aString, aWidth, aHeight ); } /**********************************************************************/ /**********************************************************************/ Loading @@ -57,24 +43,25 @@ void InstallCmpeditFrame( WinEDA_SchematicFrame* parent, wxPoint& pos, dialog->InitBuffers( aComponent ); dialog->InitBuffers( aComponent ); // make sure the chipnameTextCtrl is wide enough to hold any unusually long chip names: wxSize sizeNow = dialog->GetSize(); { wxCoord width; wxCoord height; GetTextSize( dialog->chipnameTextCtrl->GetValue(), dialog, dialog->chipnameTextCtrl, &width, &height ); wxSize size = dialog->chipnameTextCtrl->GetSize(); // this relies on wxDefaultSize being -1,-1, be careful here. if( sizeNow.GetWidth() < DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize.GetWidth() if( size.GetWidth() < width + 10 ) || sizeNow.GetHeight() < DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize.GetHeight() ) { { size.SetWidth( width + 10 ); dialog->SetSize( DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize ); dialog->chipnameTextCtrl->SetSizeHints( size ); dialog->Layout(); } } } // make sure the chipnameTextCtrl is wide enough to hold any unusually long chip names: EnsureTextCtrlWidth( dialog->chipnameTextCtrl ); dialog->ShowModal(); dialog->ShowModal(); // Some of the field values are long and are not always fully visible // because the window comes up too narrow. // Remember user's manual window resizing efforts here so it comes up wide enough next time. DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize = dialog->GetSize(); dialog->Destroy(); dialog->Destroy(); } } Loading eeschema/dialog_edit_component_in_schematic.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,9 @@ class DIALOG_EDIT_COMPONENT_IN_SCHEMATIC : public DIALOG_EDIT_COMPONENT_IN_SCHEM static int s_SelectedRow; static int s_SelectedRow; /// The size of the dialog window last time it was displayed; static wxSize s_LastSize; /// a copy of the edited component's SCH_CMP_FIELDs /// a copy of the edited component's SCH_CMP_FIELDs SCH_CMP_FIELDS m_FieldsBuf; SCH_CMP_FIELDS m_FieldsBuf; Loading include/common.h +15 −0 Original line number Original line Diff line number Diff line Loading @@ -389,6 +389,21 @@ but could make more easier an optional use of locale in kicad */ */ void SetLocaleTo_Default(void); void SetLocaleTo_Default(void); /** * Function EnsureTextCtrlWidth * sets the minimum pixel width on a text control in order to make a text string * be fully visible within it. The current font within the text control is considered. * The text can come either from the control or be given as an argument. * If the text control is larger than needed, then nothing is done. * @param aCtrl the text control to potentially make wider. * @param aString the text that is used in sizing the control's pixel width. If NULL, then * the text already within the control is used. * @return bool - true if the \a aCtrl had its size changed, else false. */ bool EnsureTextCtrlWidth( wxTextCtrl* aCtrl, const wxString* aString = NULL ); /** /** * Operator << overload * Operator << overload * outputs a point to the argument string in a format resembling * outputs a point to the argument string in a format resembling Loading Loading
CHANGELOG.txt +6 −3 Original line number Original line Diff line number Diff line Loading @@ -16,10 +16,13 @@ email address. 2009-Jan-29 UPDATE Dick Hollenbeck <dick@softplc.com> 2009-Jan-29 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ ================================================================================ ++all common.c added EnsureTextCtrlWidth() ++eeschema ++eeschema dialog edit component in schematic: make sure chipname text control is wide * dialog edit component in schematic: make sure chipname text control is wide enough to handle unusually long chip names. Did not have time to look at enough to handle unusually long chip names. dialog edit component in library. * Retain and re-use user's desired dialog edit component window size. Did not have time to look at dialog edit component in library. 2009-Jan-27 UPDATE Vesa Solonen <vesa.solonen@hut.fi> 2009-Jan-27 UPDATE Vesa Solonen <vesa.solonen@hut.fi> Loading
common/common.cpp +36 −0 Original line number Original line Diff line number Diff line Loading @@ -72,6 +72,42 @@ void SetLocaleTo_Default( void ) } } /********************************************************************/ bool EnsureTextCtrlWidth( wxTextCtrl* aCtrl, const wxString* aString ) /********************************************************************/ { wxWindow* window = aCtrl->GetParent(); if( !window ) window = aCtrl; wxString ctrlText; if( !aString ) { ctrlText = aCtrl->GetValue(); aString = &ctrlText; } wxCoord width; wxCoord height; { wxClientDC dc( window ); dc.SetFont( aCtrl->GetFont() ); dc.GetTextExtent( *aString, &width, &height ); } wxSize size = aCtrl->GetSize(); if( size.GetWidth() < width + 10 ) { size.SetWidth( width + 10 ); aCtrl->SetSizeHints( size ); return true; } return false; } /*********************************************************************************************/ /*********************************************************************************************/ Ki_PageDescr::Ki_PageDescr( const wxSize& size, const wxPoint& offset, const wxString& name ) Ki_PageDescr::Ki_PageDescr( const wxSize& size, const wxPoint& offset, const wxString& name ) /*********************************************************************************************/ /*********************************************************************************************/ Loading
eeschema/dialog_edit_component_in_schematic.cpp +15 −28 Original line number Original line Diff line number Diff line Loading @@ -19,21 +19,7 @@ int DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_SelectedRow; int DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_SelectedRow; /** wxSize DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize = wxDefaultSize; * Function GetTextSize * computes the size of a text string in pixels from the wxFont used within a wxTextCtrl. * @param aString is the text string to measure, must be a single line, no newlines. * @param aWindow is the wxWindow which is the parent of the wxTextCtrl \a aCtrl. * @param aWidth is where to put the width of the string in pixels. * @param aHeight is where to put the heigth of the string in pixels. */ static void GetTextSize( const wxString& aString, wxWindow* aWindow, wxTextCtrl* aCtrl, wxCoord* aWidth, wxCoord* aHeight ) { wxClientDC dc( aWindow ); dc.SetFont( aCtrl->GetFont() ); dc.GetTextExtent( aString, aWidth, aHeight ); } /**********************************************************************/ /**********************************************************************/ Loading @@ -57,24 +43,25 @@ void InstallCmpeditFrame( WinEDA_SchematicFrame* parent, wxPoint& pos, dialog->InitBuffers( aComponent ); dialog->InitBuffers( aComponent ); // make sure the chipnameTextCtrl is wide enough to hold any unusually long chip names: wxSize sizeNow = dialog->GetSize(); { wxCoord width; wxCoord height; GetTextSize( dialog->chipnameTextCtrl->GetValue(), dialog, dialog->chipnameTextCtrl, &width, &height ); wxSize size = dialog->chipnameTextCtrl->GetSize(); // this relies on wxDefaultSize being -1,-1, be careful here. if( sizeNow.GetWidth() < DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize.GetWidth() if( size.GetWidth() < width + 10 ) || sizeNow.GetHeight() < DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize.GetHeight() ) { { size.SetWidth( width + 10 ); dialog->SetSize( DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize ); dialog->chipnameTextCtrl->SetSizeHints( size ); dialog->Layout(); } } } // make sure the chipnameTextCtrl is wide enough to hold any unusually long chip names: EnsureTextCtrlWidth( dialog->chipnameTextCtrl ); dialog->ShowModal(); dialog->ShowModal(); // Some of the field values are long and are not always fully visible // because the window comes up too narrow. // Remember user's manual window resizing efforts here so it comes up wide enough next time. DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::s_LastSize = dialog->GetSize(); dialog->Destroy(); dialog->Destroy(); } } Loading
eeschema/dialog_edit_component_in_schematic.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -22,6 +22,9 @@ class DIALOG_EDIT_COMPONENT_IN_SCHEMATIC : public DIALOG_EDIT_COMPONENT_IN_SCHEM static int s_SelectedRow; static int s_SelectedRow; /// The size of the dialog window last time it was displayed; static wxSize s_LastSize; /// a copy of the edited component's SCH_CMP_FIELDs /// a copy of the edited component's SCH_CMP_FIELDs SCH_CMP_FIELDS m_FieldsBuf; SCH_CMP_FIELDS m_FieldsBuf; Loading
include/common.h +15 −0 Original line number Original line Diff line number Diff line Loading @@ -389,6 +389,21 @@ but could make more easier an optional use of locale in kicad */ */ void SetLocaleTo_Default(void); void SetLocaleTo_Default(void); /** * Function EnsureTextCtrlWidth * sets the minimum pixel width on a text control in order to make a text string * be fully visible within it. The current font within the text control is considered. * The text can come either from the control or be given as an argument. * If the text control is larger than needed, then nothing is done. * @param aCtrl the text control to potentially make wider. * @param aString the text that is used in sizing the control's pixel width. If NULL, then * the text already within the control is used. * @return bool - true if the \a aCtrl had its size changed, else false. */ bool EnsureTextCtrlWidth( wxTextCtrl* aCtrl, const wxString* aString = NULL ); /** /** * Operator << overload * Operator << overload * outputs a point to the argument string in a format resembling * outputs a point to the argument string in a format resembling Loading