← Back to team overview

kicad-developers team mailing list archive

Re: Show grid in eeschema status line

 

Hey Steve,

Adding "grid" to the coordinates in the status bar is not correct.
These are the cursor coordinates not the grid coordinates.  To add the
current grid size to the status bar, you would need to add another pane
to status bar and fetch the current grid setting from the current SCREEN
object.

Cheers,

Wayne

On 5/18/19 3:48 PM, Steven A. Falco wrote:
> I decided to try adding the current grid size to the status line of eeschema and the symbol editor, so as to make the N/shift-N hotkeys easier to use.  Below is what I came up with.
> 
> Is this something that could be accepted?  I don't know if it fits with the style of the KiCad code - I have mostly written embedded C SW, not C++.
> 
> 	Steve
> 
> --- eeschema/sch_base_frame.cpp	2019-05-18 15:17:14.692949429 -0400
> +++ /home/sfalco/sch_base_frame.cpp	2019-05-18 15:36:11.266193897 -0400
> @@ -257,17 +246,17 @@
>      {
>      case INCHES:
>          absformatter = "X %.3f  Y %.3f";
> -        locformatter = "dx %.3f  dy %.3f  dist %.3f";
> +        locformatter = "grid %.3f  dx %.3f  dy %.3f  dist %.3f";
>          break;
>  
>      case MILLIMETRES:
>          absformatter = "X %.2f  Y %.2f";
> -        locformatter = "dx %.2f  dy %.2f  dist %.2f";
> +        locformatter = "grid %.4f  dx %.2f  dy %.2f  dist %.2f";
>          break;
>  
>      case UNSCALED_UNITS:
>          absformatter = "X %f  Y %f";
> -        locformatter = "dx %f  dy %f  dist %f";
> +        locformatter = "grid %f  dx %f  dy %f  dist %f";
>          break;
>  
>      case DEGREES:
> @@ -282,6 +271,9 @@
>      double dx = (double)GetCrossHairPosition().x - (double)screen->m_O_Curseur.x;
>      double dy = (double)GetCrossHairPosition().y - (double)screen->m_O_Curseur.y;
>  
> +    wxRealPoint curr_grid_size = GetScreen()->GetGridSize();
> +    double grid = To_User_Unit( GetUserUnits(), curr_grid_size.x );
> +
>      dXpos = To_User_Unit( GetUserUnits(), dx );
>      dYpos = To_User_Unit( GetUserUnits(), dy );
>  
> @@ -292,9 +284,10 @@
>      }
>  
>      // We already decided the formatter above
> -    line.Printf( locformatter, dXpos, dYpos, hypot( dXpos, dYpos ) );
> +    line.Printf( locformatter, grid, dXpos, dYpos, hypot( dXpos, dYpos ) );
>      SetStatusText( line, 3 );
>  
>      // refresh units display
>      DisplayUnitsMsg();
>  }
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
> 


Follow ups

References