Attached please find a revised patch to show the current grid settings on the
status bar. The patch makes the grid settings visible in the following tools:
eeschema, symbol editor, pcbnew, footprint editor, gerbview, and the page
layout editor.
If there are any I missed, please let me know.
And of course please let me know if there are problems with the patch. This
one is for the master branch. If it is accepted, then I will create a version
for the 5.1 branch.
Steve
From 7f128614de33a2d55ad1367f9a10473924fa0fc6 Mon Sep 17 00:00:00 2001
From: "Steven A. Falco" <[email protected]>
Date: Fri, 24 May 2019 09:55:33 -0400
Subject: [PATCH] Show the current grid setting.
---
common/legacy_gal/eda_draw_frame.cpp | 38 ++++++++++++++++++++--
eeschema/sch_base_frame.cpp | 3 ++
gerbview/gerbview_frame.cpp | 38 ++++++++++++++++++++++
gerbview/gerbview_frame.h | 7 ++++
include/draw_frame.h | 5 +++
include/pcb_base_frame.h | 7 ++++
pagelayout_editor/pl_editor_frame.cpp | 46 ++++++++++++++++++++++++---
pagelayout_editor/pl_editor_frame.h | 2 ++
pcbnew/pcb_base_frame.cpp | 38 ++++++++++++++++++++++
9 files changed, 177 insertions(+), 7 deletions(-)
diff --git a/common/legacy_gal/eda_draw_frame.cpp b/common/legacy_gal/eda_draw_frame.cpp
index 6c3a3a47b..f24534980 100644
--- a/common/legacy_gal/eda_draw_frame.cpp
+++ b/common/legacy_gal/eda_draw_frame.cpp
@@ -124,7 +124,7 @@ EDA_DRAW_FRAME::EDA_DRAW_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrame
m_auimgr.SetFlags(wxAUI_MGR_DEFAULT);
- CreateStatusBar( 6 );
+ CreateStatusBar( 7 );
// set the size of the status bar subwindows:
@@ -147,6 +147,9 @@ EDA_DRAW_FRAME::EDA_DRAW_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrame
// delta distances
GetTextSize( wxT( "dx 0234.567890 dx 0234.567890 d 0234.567890" ), stsbar ).x + 10,
+ // grid size
+ GetTextSize( wxT( "grid X 0234.567890 Y 0234.567890" ), stsbar ).x + 10,
+
// units display, Inches is bigger than mm
GetTextSize( _( "Inches" ), stsbar ).x + 10,
@@ -417,6 +420,37 @@ void EDA_DRAW_FRAME::DisplayToolMsg( const wxString& msg )
}
+/*
+ * Display the grid status.
+ */
+void EDA_DRAW_FRAME::DisplayGridMsg()
+{
+ wxString line;
+ wxString gridformatter;
+
+ switch( m_UserUnits )
+ {
+ case INCHES:
+ gridformatter = "grid %.3f";
+ break;
+
+ case MILLIMETRES:
+ gridformatter = "grid %.4f";
+ break;
+
+ default:
+ gridformatter = "grid %f";
+ break;
+ }
+
+ wxRealPoint curr_grid_size = GetScreen()->GetGridSize();
+ double grid = To_User_Unit( m_UserUnits, curr_grid_size.x );
+ line.Printf( gridformatter, grid );
+
+ SetStatusText( line, 4 );
+}
+
+
void EDA_DRAW_FRAME::DisplayUnitsMsg()
{
wxString msg;
@@ -428,7 +462,7 @@ void EDA_DRAW_FRAME::DisplayUnitsMsg()
default: msg = _( "Units" ); break;
}
- SetStatusText( msg, 4 );
+ SetStatusText( msg, 5 );
}
diff --git a/eeschema/sch_base_frame.cpp b/eeschema/sch_base_frame.cpp
index e013d1789..72573884d 100644
--- a/eeschema/sch_base_frame.cpp
+++ b/eeschema/sch_base_frame.cpp
@@ -253,6 +253,9 @@ void SCH_BASE_FRAME::UpdateStatusBar()
line.Printf( locformatter, dXpos, dYpos, hypot( dXpos, dYpos ) );
SetStatusText( line, 3 );
+ // refresh grid display
+ DisplayGridMsg();
+
// refresh units display
DisplayUnitsMsg();
}
diff --git a/gerbview/gerbview_frame.cpp b/gerbview/gerbview_frame.cpp
index d2c7d22e7..005abe000 100644
--- a/gerbview/gerbview_frame.cpp
+++ b/gerbview/gerbview_frame.cpp
@@ -986,6 +986,42 @@ void GERBVIEW_FRAME::SetGridColor( COLOR4D aColor )
}
+/*
+ * Display the grid status.
+ */
+void GERBVIEW_FRAME::DisplayGridMsg()
+{
+ wxString line;
+ wxString gridformatter;
+
+ switch( m_UserUnits )
+ {
+ case INCHES:
+ gridformatter = "grid X %.6f Y %.6f";
+ break;
+
+ case MILLIMETRES:
+ gridformatter = "grid X %.6f Y %.6f";
+ break;
+
+ default:
+ gridformatter = "grid X %f Y %f";
+ break;
+ }
+
+ BASE_SCREEN* screen = GetScreen();
+ wxArrayString gridsList;
+
+ int icurr = screen->BuildGridsChoiceList( gridsList, m_UserUnits != INCHES );
+ GRID_TYPE& grid = screen->GetGrid( icurr );
+ double grid_x = To_User_Unit( m_UserUnits, grid.m_Size.x );
+ double grid_y = To_User_Unit( m_UserUnits, grid.m_Size.y );
+ line.Printf( gridformatter, grid_x, grid_y );
+
+ SetStatusText( line, 4 );
+}
+
+
void GERBVIEW_FRAME::UpdateStatusBar()
{
EDA_DRAW_FRAME::UpdateStatusBar();
@@ -1070,6 +1106,8 @@ void GERBVIEW_FRAME::UpdateStatusBar()
line.Printf( relformatter, dXpos, dYpos, hypot( dXpos, dYpos ) );
SetStatusText( line, 3 );
}
+
+ DisplayGridMsg();
}
diff --git a/gerbview/gerbview_frame.h b/gerbview/gerbview_frame.h
index 6ff849fb6..08714c7e0 100644
--- a/gerbview/gerbview_frame.h
+++ b/gerbview/gerbview_frame.h
@@ -391,6 +391,13 @@ public:
*/
void UpdateTitleAndInfo();
+ /**
+ * Function DisplayGridMsg()
+ *
+ * Display the current grid pane on the status bar.
+ */
+ void DisplayGridMsg();
+
/**
* Function GetConfigurationSettings
* Populates the GerbView applications settings list.
diff --git a/include/draw_frame.h b/include/draw_frame.h
index 431c0d1d6..63aa3ab0e 100644
--- a/include/draw_frame.h
+++ b/include/draw_frame.h
@@ -628,6 +628,11 @@ public:
*/
void DisplayUnitsMsg();
+ /**
+ * Display current grid pane on the status bar.
+ */
+ void DisplayGridMsg();
+
/* interprocess communication */
void CreateServer( int service, bool local = true );
void OnSockRequest( wxSocketEvent& evt );
diff --git a/include/pcb_base_frame.h b/include/pcb_base_frame.h
index 87c0c7e27..e1c21f7ad 100644
--- a/include/pcb_base_frame.h
+++ b/include/pcb_base_frame.h
@@ -434,6 +434,13 @@ public:
*/
void SetFastGrid2();
+ /**
+ * Function DisplayGridMsg()
+ *
+ * Display the current grid pane on the status bar.
+ */
+ void DisplayGridMsg();
+
///> @copydoc EDA_DRAW_FRAME::UseGalCanvas
virtual void ActivateGalCanvas() override;
diff --git a/pagelayout_editor/pl_editor_frame.cpp b/pagelayout_editor/pl_editor_frame.cpp
index 0abb78575..edc7bd33c 100644
--- a/pagelayout_editor/pl_editor_frame.cpp
+++ b/pagelayout_editor/pl_editor_frame.cpp
@@ -147,11 +147,14 @@ PL_EDITOR_FRAME::PL_EDITOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
// delta distances
GetTextSize( wxT( "dx 0234.567 dx 0234.567" ), stsbar ).x + 10,
+ // grid size
+ GetTextSize( wxT( "grid 0234.567" ), stsbar ).x + 10,
+
// Coord origin (use the bigger message)
GetTextSize( _( "coord origin: Right Bottom page corner" ), stsbar ).x + 10,
// units display, Inches is bigger than mm
- GetTextSize( _( "Inches" ), stsbar ).x + 10
+ GetTextSize( _( "Inches" ), stsbar ).x + 20
};
SetStatusWidths( arrayDim( dims ), dims );
@@ -481,6 +484,37 @@ void PL_EDITOR_FRAME::SetTitleBlock( const TITLE_BLOCK& aTitleBlock )
}
+/*
+ * Display the grid status.
+ */
+void PL_EDITOR_FRAME::DisplayGridMsg()
+{
+ wxString line;
+ wxString gridformatter;
+
+ switch( m_UserUnits )
+ {
+ case INCHES:
+ gridformatter = "grid %.3f";
+ break;
+
+ case MILLIMETRES:
+ gridformatter = "grid %.4f";
+ break;
+
+ default:
+ gridformatter = "grid %f";
+ break;
+ }
+
+ wxRealPoint curr_grid_size = GetScreen()->GetGridSize();
+ double grid = To_User_Unit( m_UserUnits, curr_grid_size.x );
+ line.Printf( gridformatter, grid );
+
+ SetStatusText( line, 4 );
+}
+
+
void PL_EDITOR_FRAME::UpdateStatusBar()
{
PL_EDITOR_SCREEN* screen = (PL_EDITOR_SCREEN*) GetScreen();
@@ -542,9 +576,9 @@ void PL_EDITOR_FRAME::UpdateStatusBar()
switch( GetUserUnits() )
{
- case INCHES: SetStatusText( _("inches"), 5 ); break;
- case MILLIMETRES: SetStatusText( _("mm"), 5 ); break;
- case UNSCALED_UNITS: SetStatusText( wxEmptyString, 5 ); break;
+ case INCHES: SetStatusText( _("inches"), 6 ); break;
+ case MILLIMETRES: SetStatusText( _("mm"), 6 ); break;
+ case UNSCALED_UNITS: SetStatusText( wxEmptyString, 6 ); break;
case DEGREES: wxASSERT( false ); break;
}
@@ -569,10 +603,12 @@ void PL_EDITOR_FRAME::UpdateStatusBar()
line.Printf( locformatter, dXpos, dYpos );
SetStatusText( line, 3 );
+ DisplayGridMsg();
+
// Display corner reference for coord origin
line.Printf( _("coord origin: %s"),
m_originSelectBox->GetString( m_originSelectChoice ). GetData() );
- SetStatusText( line, 4 );
+ SetStatusText( line, 5 );
// Display units
}
diff --git a/pagelayout_editor/pl_editor_frame.h b/pagelayout_editor/pl_editor_frame.h
index f5a413d5e..657adb9ca 100644
--- a/pagelayout_editor/pl_editor_frame.h
+++ b/pagelayout_editor/pl_editor_frame.h
@@ -134,6 +134,8 @@ public:
const TITLE_BLOCK& GetTitleBlock() const override;
void SetTitleBlock( const TITLE_BLOCK& aTitleBlock ) override;
+ void DisplayGridMsg();
+
void UpdateStatusBar() override;
/**
diff --git a/pcbnew/pcb_base_frame.cpp b/pcbnew/pcb_base_frame.cpp
index b04135284..cd049e6ee 100644
--- a/pcbnew/pcb_base_frame.cpp
+++ b/pcbnew/pcb_base_frame.cpp
@@ -596,6 +596,42 @@ void PCB_BASE_FRAME::SetToolID( int aId, int aCursor, const wxString& aToolMsg )
}
+/*
+ * Display the grid status.
+ */
+void PCB_BASE_FRAME::DisplayGridMsg()
+{
+ wxString line;
+ wxString gridformatter;
+
+ switch( m_UserUnits )
+ {
+ case INCHES:
+ gridformatter = "grid X %.6f Y %.6f";
+ break;
+
+ case MILLIMETRES:
+ gridformatter = "grid X %.6f Y %.6f";
+ break;
+
+ default:
+ gridformatter = "grid X %f Y %f";
+ break;
+ }
+
+ BASE_SCREEN* screen = GetScreen();
+ wxArrayString gridsList;
+
+ int icurr = screen->BuildGridsChoiceList( gridsList, m_UserUnits != INCHES );
+ GRID_TYPE& grid = screen->GetGrid( icurr );
+ double grid_x = To_User_Unit( m_UserUnits, grid.m_Size.x );
+ double grid_y = To_User_Unit( m_UserUnits, grid.m_Size.y );
+ line.Printf( gridformatter, grid_x, grid_y );
+
+ SetStatusText( line, 4 );
+}
+
+
/*
* Update the status bar information.
*/
@@ -688,6 +724,8 @@ void PCB_BASE_FRAME::UpdateStatusBar()
line.Printf( locformatter, dXpos, dYpos, hypot( dXpos, dYpos ) );
SetStatusText( line, 3 );
}
+
+ DisplayGridMsg();
}
--
2.21.0
_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kicad-developers
More help : https://help.launchpad.net/ListHelp