← Back to team overview

geda-developers team mailing list archive

RFC: increment dialog patch [dev list]

 

Hey all,


I have finally decided to take a look at bug 699464:

https://bugs.launchpad.net/pcb/+bug/699464

This bug is regarding the fact that the Preferences->Increments dialog
does nothing as of now. (Nothing is saved, and the relevant values are
ignored by gpcb-menu.res.)

The following partial fix changes gpcb-menu.res to give 0 to the
ChangeSize funtions, rather than the hardcoded +/-5mil. The functions
then interpret 0 as "preference-defined value". Therefore, the dialog
will affect the current session, though the preferences are still not
saved.

(Actually, it passes "+" and "-" instead of 0. My recent commit d4ec435e
is needed for GetValue() to have correct behavior for this input.)


This is a user-visible change, so I am posting it for comments before
pushing.


diff --git a/src/action.c b/src/action.c
index 700bf29..b29d40b 100644
--- a/src/action.c
+++ b/src/action.c
@@ -2193,6 +2193,9 @@ ActionSetValue (int argc, char **argv, Coord x, Coord y)
 	    SetGrid (value, false);
 	  else
 	    {
+              if (value == 0)
+                value = val[0] == '-' ? -Settings.increments->grid
+                                      :  Settings.increments->grid;
               /* On the way down, short against the minimum 
                * PCB drawing unit */
               if ((value + PCB->Grid) < 1)
@@ -2206,6 +2209,9 @@ ActionSetValue (int argc, char **argv, Coord x, Coord y)
 
 	case F_LineSize:
 	case F_Line:
+          if (!absolute && value == 0)
+            value = val[0] == '-' ? -Settings.increments->line
+                                  :  Settings.increments->line;
 	  SetLineSize (absolute ? value : value + Settings.LineThickness);
 	  hid_action ("RouteStylesChanged");
 	  break;
@@ -4048,6 +4054,9 @@ ActionChangeSize (int argc, char **argv, Coord x, Coord y)
   if (function && delta)
     {
       value = GetValue (delta, units, &absolute);
+      if (value == 0)
+        value = delta[0] == '-' ? -Settings.increments->size
+                                :  Settings.increments->size;
       switch (GetFunctionID (function))
 	{
 	case F_Object:
@@ -4207,6 +4216,9 @@ ActionChangeClearSize (int argc, char **argv, Coord x, Coord y)
   if (function && delta)
     {
       value = 2 * GetValue (delta, units, &absolute);
+      if (value == 0)
+        value = delta[0] == '-' ? -Settings.increments->clear
+                                :  Settings.increments->clear;
       switch (GetFunctionID (function))
 	{
 	case F_Object:
diff --git a/src/gpcb-menu.res.in b/src/gpcb-menu.res.in
index 0c15b1c..f28edff 100644
--- a/src/gpcb-menu.res.in
+++ b/src/gpcb-menu.res.in
@@ -144,10 +144,8 @@ MainMenu =
     {"0.5 mm"  checked=gridsize,0.50mm SetUnits(mm) SetValue(Grid,0.5mm)}
     {"1 mm"    checked=gridsize,1mm SetUnits(mm) SetValue(Grid,1mm)}
     -
-    {"Grid -5mil" SetValue(Grid,-5,mil) a={"Shift-G" "Shift<Key>g"}}
-    {"Grid +5mil" SetValue(Grid,+5,mil) a={"G" "<Key>g"}}
-    {"Grid -0.05mm" SetValue(Grid,-0.05,mm) a={"Shift-Ctrl-G" "Shift Ctrl<Key>g"}}
-    {"Grid +0.05mm" SetValue(Grid,+0.05,mm) a={"Ctrl-G" "Ctrl<Key>g"}}
+    {"Grid -" SetValue(Grid,-) a={"Shift-G" "Shift<Key>g"}}
+    {"Grid +" SetValue(Grid,+) a={"G" "<Key>g"}}
    }
    {"Realign grid" GetXY(Click to set the grid origin) Display(ToggleGrid)}
    -
@@ -400,12 +398,12 @@ MainMenu =
     {"ChangeHole Object" a={"Ctrl-H" "Ctrl<Key>h"} ChangeHole(Object)}
     {"ChangeJoin Object" a={"J" "<Key>j"} ChangeJoin(Object)}
     {"ChangeJoin SelectedObject" a={"Shift-J" "Shift<Key>j"} ChangeJoin(SelectedObjects)}
-    {"Clear Object +2 mil" a={"K" "<Key>k"} ChangeClearSize(Object,+2,mil)}
-    {"Clear Object -2 mil" a={"Shift-K" "Shift<Key>k"} ChangeClearSize(Object,-2,mil)}
-    {"Clear Selected +2 mil" a={"Ctrl-K" "Ctrl<Key>k"} ChangeClearSize(SelectedObjects,+2,mil)}
-    {"Clear Selected -2 mil" a={"Shift-Ctrl-K" "Shift Ctrl<Key>k"} ChangeClearSize(SelectedObjects,-2,mil)}
-    {"Line Tool size +5 mil" a={"L" "<Key>l"} SetValue(LineSize,+5,mil)}
-    {"Line Tool size -5 mil" a={"Shift-L" "Shift<Key>l"} SetValue(LineSize,-5,mil)}
+    {"Clear Object +" a={"K" "<Key>k"} ChangeClearSize(Object,+)}
+    {"Clear Object -" a={"Shift-K" "Shift<Key>k"} ChangeClearSize(Object,-)}
+    {"Clear Selected +" a={"Ctrl-K" "Ctrl<Key>k"} ChangeClearSize(SelectedObjects,+)}
+    {"Clear Selected -" a={"Shift-Ctrl-K" "Shift Ctrl<Key>k"} ChangeClearSize(SelectedObjects,-)}
+    {"Line Tool size +" a={"L" "<Key>l"} SetValue(LineSize,+)}
+    {"Line Tool size -" a={"Shift-L" "Shift<Key>l"} SetValue(LineSize,-)}
     {"Move Object to current layer" a={"M" "<Key>m"} MoveToCurrentLayer(Object)}
     {"MarkCrosshair" a={"Ctrl-M" "Ctrl<Key>m"} MarkCrosshair()}
     {"Select shortest rat" a={"Shift-N" "Shift<Key>n"} AddRats(Close)}
@@ -419,8 +417,8 @@ MainMenu =
     {"Polygon PreviousPoint" a={"P" "<Key>p"} Polygon(PreviousPoint)}
     {"Polygon Close" a={"Shift-P" "Shift<Key>p"} Polygon(Close)}
     {"ChangeSquare Object" a={"Q" "<Key>q"} ChangeSquare(ToggleObject)}
-    {"ChangeSize +5 mil" a={"S" "<Key>s"} ChangeSize(Object,+5,mil)}
-    {"ChangeSize -5 mil" a={"Shift-S" "Shift<Key>s"} ChangeSize(Object,-5,mil)}
+    {"ChangeSize +" a={"S" "<Key>s"} ChangeSize(Object,+)}
+    {"ChangeSize -" a={"Shift-S" "Shift<Key>s"} ChangeSize(Object,-)}
     {"ChangeDrill +5 mil" a={"Alt-S" "Alt<Key>s"} ChangeDrillSize(Object,+5,mil)}
     {"ChangeDrill -5 mil" a={"Alt-Shift-S" "Alt Shift<Key>s"} ChangeDrillSize(Object,-5,mil)}
     {"Text Tool scale +10 mil" a={"T" "<Key>t"} SetValue(TextScale,+10,mil)}
diff --git a/src/pcb-menu.res.in b/src/pcb-menu.res.in
index 7e6e8bd..84c4a45 100644
--- a/src/pcb-menu.res.in
+++ b/src/pcb-menu.res.in
@@ -111,10 +111,8 @@ MainMenu =
     {"0.5 mm"  checked=gridsize,0.50mm SetUnits(mm) SetValue(Grid,0.5mm)}
     {"1 mm"    checked=gridsize,1mm SetUnits(mm) SetValue(Grid,1mm)}
     -
-    {"Grid -5mil" SetValue(Grid,-5,mil) a={"Shift-G" "Shift<Key>g"}}
-    {"Grid +5mil" SetValue(Grid,+5,mil) a={"G" "<Key>g"}}
-    {"Grid -0.05mm" SetValue(Grid,-0.05,mm) a={"Shift-Ctrl-G" "Shift Ctrl<Key>g"}}
-    {"Grid +0.05mm" SetValue(Grid,+0.05,mm) a={"Ctrl-G" "Ctrl<Key>g"}}
+    {"Grid -" SetValue(Grid,-) a={"Shift-G" "Shift<Key>g"}}
+    {"Grid +" SetValue(Grid,+) a={"G" "<Key>g"}}
    }
    -
    {"Shown Layers"
@@ -383,12 +381,12 @@ MainMenu =
     {"ChangeHole Object" a={"Ctrl-H" "Ctrl<Key>h"} ChangeHole(Object)}
     {"ChangeJoin Object" a={"J" "<Key>j"} ChangeJoin(Object)}
     {"ChangeJoin SelectedObject" a={"Shift-J" "Shift<Key>j"} ChangeJoin(SelectedObjects)}
-    {"Clear Object +2 mil" a={"K" "<Key>k"} ChangeClearSize(Object,+2,mil)}
-    {"Clear Object -2 mil" a={"Shift-K" "Shift<Key>k"} ChangeClearSize(Object,-2,mil)}
-    {"Clear Selected +2 mil" a={"Ctrl-K" "Ctrl<Key>k"} ChangeClearSize(SelectedObjects,+2,mil)}
-    {"Clear Selected -2 mil" a={"Shift-Ctrl-K" "Shift Ctrl<Key>k"} ChangeClearSize(SelectedObjects,-2,mil)}
-    {"Line Tool size +5 mil" a={"L" "<Key>l"} SetValue(LineSize,+5,mil)}
-    {"Line Tool size -5 mil" a={"Shift-L" "Shift<Key>l"} SetValue(LineSize,-5,mil)}
+    {"Clear Object +" a={"K" "<Key>k"} ChangeClearSize(Object,+)}
+    {"Clear Object -" a={"Shift-K" "Shift<Key>k"} ChangeClearSize(Object,-)}
+    {"Clear Selected +" a={"Ctrl-K" "Ctrl<Key>k"} ChangeClearSize(SelectedObjects,+)}
+    {"Clear Selected -" a={"Shift-Ctrl-K" "Shift Ctrl<Key>k"} ChangeClearSize(SelectedObjects,-)}
+    {"Line Tool size +" a={"L" "<Key>l"} SetValue(LineSize,+)}
+    {"Line Tool size -" a={"Shift-L" "Shift<Key>l"} SetValue(LineSize,-)}
     {"Move Object to current layer" a={"M" "<Key>m"} MoveToCurrentLayer(Object)}
     {"MarkCrosshair" a={"Ctrl-M" "Ctrl<Key>m"} MarkCrosshair()}
     {"Select shortest rat" a={"Shift-N" "Shift<Key>n"} AddRats(Close)}
@@ -402,8 +400,8 @@ MainMenu =
     {"Polygon PreviousPoint" a={"P" "<Key>p"} Polygon(PreviousPoint)}
     {"Polygon Close" a={"Shift-P" "Shift<Key>p"} Polygon(Close)}
     {"ChangeSquare Object" a={"Q" "<Key>q"} ChangeSquare(Object)}
-    {"ChangeSize +5 mil" a={"S" "<Key>s"} ChangeSize(Object,+5,mil)}
-    {"ChangeSize -5 mil" a={"Shift-S" "Shift<Key>s"} ChangeSize(Object,-5,mil)}
+    {"ChangeSize +" a={"S" "<Key>s"} ChangeSize(Object,+)}
+    {"ChangeSize -" a={"Shift-S" "Shift<Key>s"} ChangeSize(Object,-)}
     {"ChangeDrill +5 mil" a={"Alt-S" "Alt<Key>s"} ChangeDrillSize(Object,+5,mil)}
     {"ChangeDrill -5 mil" a={"Alt-Shift-S" "Alt Shift<Key>s"} ChangeDrillSize(Object,-5,mil)}
     {"Text Tool scale +10 mil" a={"T" "<Key>t"} SetValue(TextScale,+10,mil)}

----- End forwarded message -----

-- 
Andrew Poelstra
Email: asp11 at sfu.ca OR apoelstra at wpsoftware.net
Web:   http://www.wpsoftware.net/andrew
"You shouldn't trust every quote you read on the Internet." -- Socrates