PCBNew auxiliary tool bar changes and other minor improvements.

* Remove clearance and net class name read only text boxes from PCBNew
  auxiliary tool bar.
* Display full net class information in message panel when an object that
  supports net classes is selected.
* Move coordinate string conversion function to EDA_DRAW_FRAME object and
  made it more versatile.
* Refresh message panel text when units change.
This commit is contained in:
Wayne Stambaugh 2011-03-11 10:53:28 -05:00
parent 2f47b3f464
commit 018292a8c6
15 changed files with 86 additions and 129 deletions

View File

@ -138,6 +138,17 @@ EDA_DRAW_FRAME::~EDA_DRAW_FRAME()
}
void EDA_DRAW_FRAME::unitsChangeRefresh()
{
UpdateStatusBar();
EDA_ITEM* item = GetScreen()->GetCurItem();
if( item )
item->DisplayInfo( this );
}
void EDA_DRAW_FRAME::EraseMsgBox()
{
if( MsgPanel )
@ -793,3 +804,37 @@ void EDA_DRAW_FRAME::ClearMsgPanel( void )
MsgPanel->EraseMsgBox();
}
wxString EDA_DRAW_FRAME::CoordinateToString( int aValue, bool aConvertToMils )
{
wxString text;
const wxChar* format;
double value = To_User_Unit( g_UserUnit, aValue, m_InternalUnits );
if( g_UserUnit == INCHES )
{
if( aConvertToMils )
{
format = ( m_InternalUnits == EESCHEMA_INTERNAL_UNIT ) ? wxT( "%.0f" ) : wxT( "%.1f" );
value *= 1000;
}
else
{
format = ( m_InternalUnits == EESCHEMA_INTERNAL_UNIT ) ? wxT( "%.3f" ) : wxT( "%.4f" );
}
}
else
{
format = ( m_InternalUnits == EESCHEMA_INTERNAL_UNIT ) ? wxT( "%.2f" ) : wxT( "%.3f" );
}
text.Printf( format, value );
if( g_UserUnit == INCHES )
text += ( aConvertToMils ) ? _( " mils" ) : _( " in" );
else
text += _( " mm" );
return text;
}

View File

@ -55,7 +55,6 @@ class PCB_EDIT_FRAME : public PCB_BASE_FRAME
void updateTraceWidthSelectBox();
void updateViaSizeSelectBox();
void updateDesignRulesSelectBoxes();
protected:
@ -120,12 +119,6 @@ public:
// select current track width
WinEDAChoiceBox* m_SelViaSizeBox; // a combo box to display and
// select current via diameter
wxTextCtrl* m_ClearanceBox; // a text ctrl to display the
// current tracks and vias
// clearance
wxTextCtrl* m_NetClassSelectedBox; // a text ctrl to display the
// current NetClass
bool m_TrackAndViasSizesList_Changed;
bool m_show_microwave_tools;
bool m_show_layer_manager_tools;
@ -1148,7 +1141,6 @@ public:
*/
virtual void SetLanguage( wxCommandEvent& event );
DECLARE_EVENT_TABLE()
};

View File

@ -258,7 +258,7 @@ protected:
* default version only updates the status bar. Don't forget to call the default
* in your derived class or the status bar will not get updated properly.
*/
virtual void unitsChangeRefresh() { UpdateStatusBar(); }
virtual void unitsChangeRefresh();
public:
EDA_DRAW_FRAME( wxWindow* father, int idtype,
@ -557,6 +557,17 @@ public:
*/
virtual void PrintPage( wxDC* aDC, int aPrintMask, bool aPrintMirrorMode, void* aData = NULL );
/**
* Function CoordinateToString
* is a helper to convert the integer coordinate \a aValue to a string in inches or mm
* according to the current user units setting.
* @param aValue The coordinate to convert.
* @param aConvertToMils Convert inch values to mils if true. This setting has no effect if
* the current user unit is millimeters.
* @return The converted string for display in user interface elements.
*/
wxString CoordinateToString( int aValue, bool aConvertToMils = false );
DECLARE_EVENT_TABLE()
};

View File

@ -951,9 +951,28 @@ void TRACK::DisplayInfo( EDA_DRAW_FRAME* frame )
{
int trackLen = 0;
Marque_Une_Piste( board, this, NULL, &trackLen, false );
valeur_param( trackLen, msg );
msg = frame->CoordinateToString( trackLen );
frame->AppendMsgPanel( _( "Track Length" ), msg, DARKCYAN );
}
NETCLASS* netclass = GetNetClass();
if( netclass )
{
frame->AppendMsgPanel( _( "NC Name" ), netclass->GetName(), DARKMAGENTA );
frame->AppendMsgPanel( _( "NC Clearance" ),
frame->CoordinateToString( netclass->GetClearance(), true ),
DARKMAGENTA );
frame->AppendMsgPanel( _( "NC Width" ),
frame->CoordinateToString( netclass->GetTrackWidth(), true ),
DARKMAGENTA );
frame->AppendMsgPanel( _( "NC Via Size"),
frame->CoordinateToString( netclass->GetViaDiameter(), true ),
DARKMAGENTA );
frame->AppendMsgPanel( _( "NC Via Drill"),
frame->CoordinateToString( netclass->GetViaDrill(), true ),
DARKMAGENTA );
}
}
@ -1041,7 +1060,7 @@ void TRACK::DisplayInfoBase( EDA_DRAW_FRAME* frame )
frame->AppendMsgPanel( _( "Layer" ), msg, BROWN );
/* Display width */
valeur_param( (unsigned) m_Width, msg );
msg = frame->CoordinateToString( (unsigned) m_Width );
if( Type() == TYPE_VIA ) // Display Diam and Drill values
{
@ -1051,7 +1070,7 @@ void TRACK::DisplayInfoBase( EDA_DRAW_FRAME* frame )
// Display drill value
int drill_value = GetDrillValue();
valeur_param( (unsigned) drill_value, msg );
msg = frame->CoordinateToString( (unsigned) drill_value );
wxString title = _( "Drill" );
title += wxT( " " );
@ -1068,17 +1087,10 @@ void TRACK::DisplayInfoBase( EDA_DRAW_FRAME* frame )
frame->AppendMsgPanel( _( "Width" ), msg, DARKCYAN );
}
NETCLASS* netclass = GetNetClass();
if( netclass )
{
msg = netclass->GetName();
frame->AppendMsgPanel( _( "Net Class" ), msg, DARKCYAN );
}
// Display segment length
if( Type() != TYPE_VIA ) // Display Diam and Drill values
{
valeur_param( wxRound( GetLength() ), msg );
msg = frame->CoordinateToString( wxRound( GetLength() ) );
frame->AppendMsgPanel( _( "Segment Length" ), msg, DARKCYAN );
}
}

View File

@ -667,8 +667,6 @@ void DIALOG_DESIGN_RULES::CopyDimensionsListsToBoard()
std::vector <VIA_DIMENSION>* vialist = &m_Parent->GetBoard()->m_ViasDimensionsList;
vialist->erase( vialist->begin() + 1, vialist->end() );
vialist->insert( vialist->end(), m_ViasDimensionsList.begin(), m_ViasDimensionsList.end() );
m_Parent->m_TrackAndViasSizesList_Changed = true;
}
@ -709,7 +707,6 @@ void DIALOG_DESIGN_RULES::OnOkButtonClick( wxCommandEvent& event )
EndModal( wxID_OK );
m_Pcb->SetCurrentNetClass( NETCLASS::Default );
m_Parent->m_TrackAndViasSizesList_Changed = true;
}

View File

@ -150,8 +150,6 @@ TRACK* PCB_EDIT_FRAME::Begin_Route( TRACK* aTrack, wxDC* DC )
// Display info about track Net class, and init track and vias sizes:
g_CurrentTrackSegment->SetNet( g_HighLight_NetCode );
GetBoard()->SetCurrentNetClass( g_CurrentTrackSegment->GetNetClassName() );
m_TrackAndViasSizesList_Changed = true;
updateDesignRulesSelectBoxes();
g_CurrentTrackSegment->SetLayer( GetScreen()->m_Active_Layer );
g_CurrentTrackSegment->m_Width = GetBoard()->GetCurrentTrackWidth();

View File

@ -142,8 +142,6 @@ the changes?" ) ) )
return false;
}
m_TrackAndViasSizesList_Changed = true;
if( aAppend )
{
GetScreen()->SetFileName( wxEmptyString );
@ -273,14 +271,11 @@ this file again." ) );
// Update info shown by the horizontal toolbars
GetBoard()->SetCurrentNetClass( NETCLASS::Default );
m_TrackAndViasSizesList_Changed = true;
ReFillLayerWidget();
ReCreateLayerBox( NULL );
syncLayerWidget();
updateDesignRulesSelectBoxes();
updateTraceWidthSelectBox();
updateViaSizeSelectBox();

View File

@ -42,7 +42,6 @@ bool PCB_EDIT_FRAME::Clear_Pcb( bool aQuery )
// delete the old BOARD and create a new BOARD so that the default
// layer names are put into the BOARD.
SetBoard( new BOARD( NULL, this ) );
m_TrackAndViasSizesList_Changed = true;
SetCurItem( NULL );
/* clear filename, to avoid overwriting an old file */

View File

@ -1116,7 +1116,6 @@ int PCB_EDIT_FRAME::ReadPcbFile( LINE_READER* aReader, bool Append )
board->SynchronizeNetsAndNetClasses();
m_TrackAndViasSizesList_Changed = true;
SetStatusText( wxEmptyString );
BestZoom();
return 1;
@ -1154,7 +1153,6 @@ int PCB_EDIT_FRAME::SavePcbFormatAscii( FILE* aFile )
// Select default Netclass before writing file.
// Useful to save default values in headers
GetBoard()->SetCurrentNetClass( GetBoard()->m_NetClasses.GetDefault()->GetName() );
m_TrackAndViasSizesList_Changed = true;
WriteGeneralDescrPcb( aFile );
WriteSheetDescr( GetScreen(), aFile );

View File

@ -124,8 +124,6 @@ void PCB_EDIT_FRAME::OnLeftClick( wxDC* aDC, const wxPoint& aPosition )
case TYPE_PAD:
GetBoard()->SetCurrentNetClass(
((BOARD_CONNECTED_ITEM*)DrawStruct)->GetNetClassName() );
m_TrackAndViasSizesList_Changed = true;
updateDesignRulesSelectBoxes();
break;
default:

View File

@ -393,8 +393,6 @@ void PCB_EDIT_FRAME::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
wxString msg;
GetBoard()->SetCurrentNetClass( Track->GetNetClassName() );
m_TrackAndViasSizesList_Changed = true;
updateDesignRulesSelectBoxes();
int flags = Track->m_Flags;
@ -714,8 +712,6 @@ void PCB_EDIT_FRAME::createPopUpMenuForFpPads( D_PAD* Pad, wxMenu* menu )
return;
GetBoard()->SetCurrentNetClass( Pad->GetNetClassName() );
m_TrackAndViasSizesList_Changed = true;
updateDesignRulesSelectBoxes();
wxString msg = Pad->MenuText( GetBoard() );

View File

@ -271,7 +271,6 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( wxWindow* parent, const wxString& title,
m_SelTrackWidthBox = NULL;
m_SelViaSizeBox = NULL;
m_SelLayerBox = NULL;
m_TrackAndViasSizesList_Changed = false;
m_show_microwave_tools = false;
m_show_layer_manager_tools = true;
m_HotkeysZoomAndGridList = g_Board_Editor_Hokeys_Descr;
@ -291,8 +290,6 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( wxWindow* parent, const wxString& title,
m_Layers = new PCB_LAYER_WIDGET( this, DrawPanel, pointSize );
m_TrackAndViasSizesList_Changed = true;
m_drc = new DRC( this ); // these 2 objects point to each other
m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill;
@ -513,7 +510,6 @@ void PCB_EDIT_FRAME::ShowDesignRulesEditor( wxCommandEvent& event )
if( returncode == wxID_OK ) // New rules, or others changes.
{
ReCreateLayerBox( NULL );
updateDesignRulesSelectBoxes();
updateTraceWidthSelectBox();
updateViaSizeSelectBox();
OnModify();
@ -653,7 +649,6 @@ void PCB_EDIT_FRAME::unitsChangeRefresh()
updateTraceWidthSelectBox();
updateViaSizeSelectBox();
updateDesignRulesSelectBoxes();
}

View File

@ -111,8 +111,6 @@ void PCB_EDIT_FRAME::ImportSpecctraSession( wxCommandEvent& event )
SetLocaleTo_Default( ); // revert to the current locale
m_TrackAndViasSizesList_Changed = true;
OnModify();
GetBoard()->m_Status_Pcb = 0;

View File

@ -25,9 +25,9 @@ void PCB_EDIT_FRAME::ToolOnRightClick( wxCommandEvent& event )
case ID_TRACK_BUTT:
{
DIALOG_DESIGN_RULES dlg( this );
if( dlg.ShowModal() == wxID_OK )
{
updateDesignRulesSelectBoxes();
updateTraceWidthSelectBox();
updateViaSizeSelectBox();
}

View File

@ -506,8 +506,6 @@ void PCB_EDIT_FRAME::ReCreateAuxiliaryToolbar()
m_AuxiliaryToolBar = new WinEDA_Toolbar( TOOLBAR_AUX, this, ID_AUX_TOOLBAR, true );
m_TrackAndViasSizesList_Changed = true;
/* Set up toolbar items */
// Creates box to display and choose tracks widths:
@ -526,24 +524,6 @@ void PCB_EDIT_FRAME::ReCreateAuxiliaryToolbar()
m_AuxiliaryToolBar->AddControl( m_SelViaSizeBox );
m_AuxiliaryToolBar->AddSeparator();
// Creates box to display tracks and vias clearance:
m_ClearanceBox = new wxTextCtrl( m_AuxiliaryToolBar, -1,
wxEmptyString, wxPoint( -1, -1 ),
wxSize( LISTBOX_WIDTH + 10, -1 ),
wxTE_READONLY );
m_ClearanceBox->SetToolTip(_("Current NetClass clearance value") );
m_AuxiliaryToolBar->AddControl( m_ClearanceBox );
m_AuxiliaryToolBar->AddSeparator();
// Creates box to display the current NetClass:
m_NetClassSelectedBox = new wxTextCtrl( m_AuxiliaryToolBar, -1,
wxEmptyString, wxPoint( -1, -1 ),
wxSize( LISTBOX_WIDTH, -1 ),
wxTE_READONLY );
m_NetClassSelectedBox->SetToolTip(_("Name of the current NetClass") );
m_AuxiliaryToolBar->AddControl( m_NetClassSelectedBox );
m_AuxiliaryToolBar->AddSeparator();
// Creates box to display and choose strategy to handle tracks an vias sizes:
m_AuxiliaryToolBar->AddTool( ID_AUX_TOOLBAR_PCB_SELECT_AUTO_WIDTH,
wxEmptyString,
@ -572,44 +552,13 @@ an existing track use its width\notherwise, use current width setting" ),
updateGridSelectBox();
updateTraceWidthSelectBox();
updateViaSizeSelectBox();
updateDesignRulesSelectBoxes();
// after adding the buttons to the toolbar, must call Realize()
m_AuxiliaryToolBar->Realize();
m_TrackAndViasSizesList_Changed = true;
m_AuxiliaryToolBar->AddSeparator();
}
/* helper to convert an integer value to a string, using mils or mm
* according to g_UserUnit value
*/
static wxString ReturnStringValue( int aValue )
{
wxString text;
const wxChar* format;
double value = To_User_Unit( g_UserUnit, aValue, PCB_INTERNAL_UNIT );
if( g_UserUnit == INCHES )
{
format = wxT( " %.1f" );
value *= 1000;
}
else
format = wxT( " %.3f" );
text.Printf( format, value );
if( g_UserUnit == INCHES )
text += _( " mils" );
else
text += _( " mm" );
return text;
}
void PCB_EDIT_FRAME::updateTraceWidthSelectBox()
{
if( m_SelTrackWidthBox == NULL )
@ -621,7 +570,7 @@ void PCB_EDIT_FRAME::updateTraceWidthSelectBox()
for( unsigned ii = 0; ii < GetBoard()->m_TrackWidthList.size(); ii++ )
{
msg = _( "Track" ) + ReturnStringValue( GetBoard()->m_TrackWidthList[ii] );
msg = _( "Track " ) + CoordinateToString( GetBoard()->m_TrackWidthList[ii], true );
if( ii == 0 )
msg << _( " *" );
@ -646,10 +595,11 @@ void PCB_EDIT_FRAME::updateViaSizeSelectBox()
for( unsigned ii = 0; ii < GetBoard()->m_ViasDimensionsList.size(); ii++ )
{
msg = _( "Via " );
msg << ReturnStringValue( GetBoard()->m_ViasDimensionsList[ii].m_Diameter );
msg << CoordinateToString( GetBoard()->m_ViasDimensionsList[ii].m_Diameter, true );
if( GetBoard()->m_ViasDimensionsList[ii].m_Drill )
msg << wxT("/") << ReturnStringValue( GetBoard()->m_ViasDimensionsList[ii].m_Drill );
msg << wxT("/ ")
<< CoordinateToString( GetBoard()->m_ViasDimensionsList[ii].m_Drill, true );
if( ii == 0 )
msg << _( " *" );
@ -662,33 +612,6 @@ void PCB_EDIT_FRAME::updateViaSizeSelectBox()
}
/**
* Function updateDesignRulesSelectBoxes
* update the displayed values: track widths, via sizes, clearance, Netclass name
* used when a netclass is selected
*/
void PCB_EDIT_FRAME::updateDesignRulesSelectBoxes()
{
wxString nclname = GetBoard()->m_CurrentNetClassName;
wxString msg = _( "NetClass: " ) + nclname;
if( m_NetClassSelectedBox )
{
m_NetClassSelectedBox->Clear();
m_NetClassSelectedBox->AppendText( msg );
}
NETCLASS* netclass = GetBoard()->m_NetClasses.Find( nclname );
if( m_ClearanceBox )
{
wxString msg = _( "Clearance" ) + ReturnStringValue( netclass->GetClearance() );
m_ClearanceBox->Clear();
m_ClearanceBox->AppendText( msg );
}
}
WinEDALayerChoiceBox* PCB_EDIT_FRAME::ReCreateLayerBox( WinEDA_Toolbar* parent )
{
if( m_SelLayerBox == NULL )