Add support for filling / thindrawing raw polygons to the HID interface
[geda-pcb/gde.git] / src / gpcb-menu.res
blob2dcf4b863e6c4450162675f3acc18bf2d2340a0c
1 # -*- c -*-
2 # Note - gpcb-menu.res is used to build gpcb-menu.h
3 # Note - parameters are sensitive to extra spaces around the commas
6 # NOTE:  I have not figured out what to do with this
7 # section yet.  The Mouse section is currently ignored until
8 # I figure out how to handle it.
11 Mouse =
13   Left = {
14     Mode(Notify)
15     up = Mode(Release)
16   }
17   Right = {
18     { Mode(Save) Mode(Rotate) Mode(Notify) Mode(Release) Mode(Restore) }
19     ctrl = Display(CycleCrosshair)
20   }
21   Middle = {
22     Pan(1)
23     up = Pan(0)
24     ctrl = Pan(thumb,1)
25     ctrl-up = Pan(thumb,0)
26   }
27   Up = Zoom(0.8)
28   Down = Zoom(1.25)
29 # If you want zoom to center, do this instead.
30 #Up = { {Zoom(0.8) Center()} }
31 #Down = { {Zoom(1.25) Center()} }
34 MainMenu =
38 # File Menu
41   {File
42    {"Save layout" Save(Layout) tip="Saves current layout"}
43    {"Save layout as..." Save(LayoutAs) tip="Saves current layout into a new file"}
44    -
45    {"Revert" Load(Revert,none) tip="Revert to the layout stored on disk"}
46    -
47    {"Load layout" Load(Layout) tip="Load a layout from a file"}
48    {"Load element data to paste-buffer" PasteBuffer(Clear) Load(ElementTobuffer)}
49    {"Load layout data to paste-buffer" PasteBuffer(Clear) Load(LayoutTobuffer)}
50    {"Load netlist file" Load(Netlist)}
51    {"Load vendor resource file" LoadVendorFrom()}
52    -
53    {"Save connection data of"
54      {" a single element" GetXY(Click to set the element mark <>) Save(ElementConnections)}
55      {" all elements" Save(AllConnections)}
56      {" unused pins" Save(AllUnusedPins)}
57    }
58    -
59    {"Print layout..." Print()}
60    {"Export layout..." Export()}
61    {"Calibrate Printer..." PrintCalibrate()}
62    -
63    {"Start new layout" New()}
64    -
65    {"Preferences..." DoWindows(Preferences)}
66    -
67    {"Quit Program" Quit()  a={"Ctrl-Q" "Ctrl<Key>q"}}
68   }
71 # Edit Menu
74   {Edit 
75    {"Undo last operation" Undo() a={"U" "<Key>u"}}
76    {"Redo last undone operation" Redo() a={"Shift-R" "Shift<Key>r"}}
77    {"Clear undo-buffer" Undo(ClearList) a={"Shift-Ctrl-U" "Shift Ctrl<Key>u"}}
78    -
79    {"Cut selection to buffer" GetXY(Click to set the snap point for this buffer)
80     PasteBuffer(Clear) PasteBuffer(AddSelected) RemoveSelected() Mode(PasteBuffer)
81     a={"Ctrl-X" "Ctrl<Key>x"}}
82    {"Copy selection to buffer" GetXY(Click to set the snap point for this buffer)
83     PasteBuffer(Clear) PasteBuffer(AddSelected) Unselect(All) Mode(PasteBuffer)
84     a={"Ctrl-C" "Ctrl<Key>c"}}
85    {"Paste buffer to layout" Mode(PasteBuffer) a={"Ctrl-V" "Ctrl<Key>v"}}
86    -
87    {"Unselect all" Unselect(All) a={"Shift-Alt-A" "Shift Alt<Key>a"}}
88    {"Select all visible" Select(All) a={"Alt-A" "Alt<Key>a"}}
89    -
90    {"Edit name of"
91      {"text on layout" ChangeName(Object) a={"N" "<Key>n"}}
92      {"layout" ChangeName(Layout)}
93      {"active layer" ChangeName(Layer)}
94    }
95    -
96    {"Move to current layer" MoveToCurrentLayer(Object) a={"M" "<Key>m"}}
97    {"Move selected to current layer" MoveToCurrentLayer(Selected) a={"Shift-M" "Shift<Key>m"}}
98    {"Route Styles" @routestyles
99     -
100     {"Edit..." AdjustStyle(0)}
101    }
102   }
105 # View Menu
108   {View 
109    {"Enable visible grid" checked=drawgrid Display(Grid)}
110    {"Grid units"
111     {"mil" checked=grid_units_mm,0 SetUnits(mil)}
112     {"mm"  checked=grid_units_mm,1 SetUnits(mm)}
113    }
114    {"Grid size"
115     {"No Grid" checked=gridsize,1 SetValue(Grid,1)}
116     -
117     {  "0.1 mil" checked=gridsize,10 SetUnits(mil) SetValue(Grid,10)}
118     {  "1 mil"   checked=gridsize,100 SetUnits(mil) SetValue(Grid,100)}
119     {  "5 mil"   checked=gridsize,500 SetUnits(mil) SetValue(Grid,500)}
120     { "10 mil"   checked=gridsize,1000 SetUnits(mil) SetValue(Grid,1000)}
121     { "25 mil"   checked=gridsize,2500 SetUnits(mil) SetValue(Grid,2500)}
122     { "50 mil"   checked=gridsize,5000 SetUnits(mil) SetValue(Grid,5000)}
123     {"100 mil"   checked=gridsize,10000 SetUnits(mil) SetValue(Grid,10000)}
124     -
125     {"0.01 mm" checked=gridsize,39 SetUnits(mm) SetValue(Grid,39.37007874)}
126     {"0.05 mm" checked=gridsize,197 SetUnits(mm) SetValue(Grid,196.85039370)}
127     {"0.1 mm"  checked=gridsize,394 SetUnits(mm) SetValue(Grid,393.70078740)}
128     {"0.25 mm" checked=gridsize,984 SetUnits(mm) SetValue(Grid,984.25197)}
129     {"0.5 mm"  checked=gridsize,1969 SetUnits(mm) SetValue(Grid,1968.503937)}
130     {"1 mm"    checked=gridsize,3937 SetUnits(mm) SetValue(Grid,3937.00787400)}
131     -
132     {"Grid -5mil" SetValue(Grid,-5,mil) a={"Shift-G" "Shift<Key>g"}}
133     {"Grid +5mil" SetValue(Grid,+5,mil) a={"G" "<Key>g"}}
134     {"Grid -0.05mm" SetValue(Grid,-0.05,mm) a={"Shift-Ctrl-G" "Shift Ctrl<Key>g"}}
135     {"Grid +0.05mm" SetValue(Grid,+0.05,mm) a={"Ctrl-G" "Ctrl<Key>g"}}
136    }
137    {"Realign grid" GetXY(Click to set the grid origin) Display(ToggleGrid)}
138    -
139    {"Displayed element name"
140     {"Description" Display(Description) checked=elementname,1}
141     {"Reference Designator" Display(NameOnPCB) checked=elementname,2}
142     {"Value" Display(Value) checked=elementname,3}
143    }
144    {"Enable Pinout shows number" checked=shownumber Display(ToggleName)}
145    {"Pins/Via show Name/Number" Display(PinOrPadName) a={"D" "<Key>d"}}
146    -
147    {"Zoom In 20%" Zoom(-1.2) m=Z a={"Z" "<Key>z"}}
148    {"Zoom Out 20%" Zoom(+1.2) m=O a={"Shift-Z" "Shift<Key>z"}}
149    {"More zooms and view changes"
150     {"Zoom Max" Zoom() m=M a={"V" "<Key>v"}}
151     {"Zoom In 2X" Zoom(-2)}
152     {"Zoom Out 2X" Zoom(+2)}
153     {"Zoom to 0.1mil/px" Zoom(=10)}
154     {"Zoom to 0.01mm/px" Zoom(=39.37)}
155     {"Zoom to 1mil/px" Zoom(=100)}
156     {"Zoom to 0.05mm/px" Zoom(=196.8504)}
157     {"Zoom to 2.5mil/px" Zoom(=250)}
158     {"Zoom to 0.1mm/px" Zoom(=393.7)}
159     {"Zoom to 10mil/px" Zoom(=1000)}
160     {"Zoom In 20% and center" Zoom(-1.2) Center() m=Z }
161     {"Zoom Out 20% and center" Zoom(+1.2) Center() m=O }
162     {"Flip up/down" checked=flip_y SwapSides(V) a={"Tab" "<Key>Tab"}}
163     {"Flip left/right" checked=flip_x SwapSides(H) a={"Shift-Tab" "Shift<Key>Tab"}}
164     {"Spin 180 degrees" SwapSides(R) a={"Ctrl-Tab" "Ctrl<Key>Tab"}}
165     {"Swap Sides" SwapSides() a={"Ctrl-Shift-Tab" "Ctrl Shift<Key>Tab"}}
166     {"Center cursor" Center() a={"C" "<Key>c"}}
167    }
168    -
169    {"Shown Layers"
170     @layerview
171     -
172     {"Edit Layer Groups" EditLayerGroups()}
173    }
174    {"Current Layer"
175     @layerpick
176     -
177     {"Delete current layer" MoveLayer(c,-1)}
178     {"Add new layer" MoveLayer(-1,c)}
179     {"Move current layer up" MoveLayer(c,up)}
180     {"Move current layer down" MoveLayer(c,down)}
181    }
182   }
185 # Settings menu
186 #  
187   {Settings
188    {"'All-direction' lines" checked=alldirection Display(Toggle45Degree) a={"." "<Key>."}}
189    {"Auto swap line start angle" checked=swapstartdir Display(ToggleStartDirection)}
190    {"Orthogonal moves" checked=orthomove Display(ToggleOrthoMove)}
191    {"Crosshair snaps to pins and pads" checked=snappin Display(ToggleSnapPin)}
192    {"Crosshair shows DRC clearance" checked=showdrc Display(ToggleShowDRC)}
193    {"Auto enforce DRC clearance" checked=autodrc Display(ToggleAutoDRC)}
194    {"Lock Names" checked=locknames Display(ToggleLockNames)}
195    {"Only Names" checked=onlynames Display(ToggleOnlyNames)}
196    {"Hide Names" checked=hidenames Display(ToggleHideNames)}
197    -
198    {"Rubber band mode" checked=rubberband Display(ToggleRubberBandMode)}
199    {"Require unique element names" checked=uniquename Display(ToggleUniqueNames)}
200    {"Auto-zero delta measurements" checked=localref Display(ToggleLocalRef)}
201    {"New lines, arcs clear polygons" checked=clearnew Display(ToggleClearLine)}
202    {"New polygons are full ones" checked=newfullpoly Display(ToggleFullPoly)}
203    {"Show autorouter trials" checked=liveroute Display(ToggleLiveRoute)}
204    {"Thin draw" checked=thindraw Display(ToggleThindraw) a={"|" "<Key>|"}}
205    {"Thin draw poly" checked=thindrawpoly Display(ToggleThindrawPoly) a={"Ctrl-Shift-P" "Ctrl Shift<Key>p"}}
206    {"Check polygons" checked=checkplanes Display(ToggleCheckPlanes)}
207    -
208    {"Vendor drill mapping" ToggleVendor() checked=VendorMapOn}
209   }
210     
212 # Select menu
214   {Select 
215    {"Select all visible objects" Select(All)}
216    {"Select all connected objects" Select(Connection)}
217    -
218    {"Unselect all objects" Unselect(All)}
219    {"unselect all connected objects" Unselect(Connection)}
220    -
221    {"Select by name"
222     {"All objects" Select(ObjectByName) active=have_regex}
223     {"Elements" Select(ElementByName) active=have_regex}
224     {"Pads" Select(PadByName) active=have_regex}
225     {"Pins" Select(PinByName) active=have_regex}
226     {"Text" Select(TextByName) active=have_regex}
227     {"Vias" Select(ViaByName) active=have_regex}
228    }
229    -
230    {"Auto-place selected elements" AutoPlaceSelected() a={"Ctrl-P" "Ctrl<Key>p"}}
231    {"Disperse all elements" DisperseElements(All)}
232    {"Disperse selected elements" DisperseElements(Selected)}
233    -
234    {"Move selected elements to other side" Flip(SelectedElements) a={"Shift-B" "Shift<Key>b"}}
235    {"Remove selected objects" RemoveSelected() a={"Shift-Delete" "Shift<Key>Delete"}}
236    {"Convert selection to element" Select(Convert)}
237    -
238    {"Optimize selected rats" DeleteRats(SelectedRats) AddRats(SelectedRats)}
239    {"Auto-route selected rats" AutoRoute(SelectedRats) a={"Alt-R" "Alt<Key>r"}}
240    {"Rip-up selected auto-routed tracks" RipUp(Selected)}
241    -
242    {"Change size of selected objects"
243     {"Lines -10 mil" ChangeSize(SelectedLines,-10,mil) ChangeSize(SelectedArcs,-10,mil)}
244     {"Lines +10 mil" ChangeSize(SelectedLines,+10,mil) ChangeSize(SelectedArcs,+10,mil)}
245     {"Pads -10 mil" ChangeSize(SelectedPads,-10,mil)}
246     {"Pads +10 mil" ChangeSize(SelectedPads,+10,mil)}
247     {"Pins -10 mil" ChangeSize(SelectedPins,-10,mil)}
248     {"Pins +10 mil" ChangeSize(SelectedPins,+10,mil)}
249     {"Texts -10 mil" ChangeSize(SelectedTexts,-10,mil)}
250     {"Texts +10 mil" ChangeSize(SelectedTexts,+10,mil)}
251     {"Vias -10 mil" ChangeSize(SelectedVias,-10,mil)}
252     {"Vias +10 mil" ChangeSize(SelectedVias,+10,mil)}
253    }
254    -
255    {"Change drilling hole of selected objects"
256     {"Vias -10 mil" ChangeDrillSize(SelectedVias,-10,mil)}
257     {"Vias +10 mil" ChangeDrillSize(SelectedVias,+10,mil)}
258     {"Pins -10 mil" ChangeDrillSize(SelectedPins,-10,mil)}
259     {"Pins +10 mil" ChangeDrillSize(SelectedPins,+10,mil)}
260    }
261    -
262    {"Change square-flag of selected objects"
263     {"Elements" ChangeSquare(SelectedElements)}
264     {"Pins" ChangeSquare(SelectedPins)}
265    }
266   }
269 # Buffer menu
271   {Buffer
272    {"Cut selection to buffer" GetXY(Click to set the snap point for this buffer)
273     PasteBuffer(Clear) PasteBuffer(AddSelected) RemoveSelected() Mode(PasteBuffer)}
274    {"Paste buffer to layout" Mode(PasteBuffer)}
275    -
276    {"Rotate buffer 90 deg CCW" Mode(PasteBuffer) PasteBuffer(Rotate,1)
277     a={"Shift-F7" "Shift<Key>F7"}}
278    {"Rotate buffer 90 deg CW" Mode(PasteBuffer) PasteBuffer(Rotate,3)}
279    {"Mirror buffer (up/down)" Mode(PasteBuffer) PasteBuffer(Mirror)}
280    {"Mirror buffer (left/right)" Mode(PasteBuffer) PasteBuffer(Rotate,1)
281     PasteBuffer(Mirror) PasteBuffer(Rotate,3)}
282    -
283    {"Clear buffer" PasteBuffer(Clear)}
284    {"Convert buffer to element" PasteBuffer(Convert)}
285    {"Break buffer elements to pieces" PasteBuffer(Restore)}
286    {"Save buffer elements to file" Save(PasteBuffer)}
287    -
288    {"Select current buffer" foreground=grey50 sensitive=false}
289    {"#1" checked=buffer,1 PasteBuffer(1) a={"Shift-1" "Shift<Key>1"}}
290    {"#2" checked=buffer,2 PasteBuffer(2) a={"Shift-2" "Shift<Key>2"}}
291    {"#3" checked=buffer,3 PasteBuffer(3) a={"Shift-3" "Shift<Key>3"}}
292    {"#4" checked=buffer,4 PasteBuffer(4) a={"Shift-4" "Shift<Key>4"}}
293    {"#5" checked=buffer,5 PasteBuffer(5) a={"Shift-5" "Shift<Key>5"}}
294   }
295     
297 # Connects menu
299   {Connects 
300    {"Lookup connection to object" GetXY(Click on the object) Connection(Find) a={"Ctrl-F" "Ctrl<Key>f"}}
301    {"Reset scanned pads/pins/vias" Connection(ResetPinsViasAndPads) Display(Redraw)}
302    {"Reset scanned lines/polygons" Connection(ResetLinesAndPolygons) Display(Redraw)}
303    {"Reset all connections" Connection(Reset) Display(Redraw) a={"Shift-F" "Shift<Key>f"}}
304    -
305    {"Optimize rats nest" Atomic(Save) DeleteRats(AllRats)
306     Atomic(Restore) AddRats(AllRats) Atomic(Block) a={"O" "<Key>o"}}
307    {"Erase rats nest" DeleteRats(AllRats) a={"E" "<Key>e"}}
308    {"Erase selected rats" DeleteRats(SelectedRats) a={"Shift-E" "Shift<Key>e"}}
309    -
310    {"Auto-route selected rats" AutoRoute(Selected)}
311    {"Auto-route all rats" AutoRoute(AllRats)}
312    {"Rip up all auto-routed tracks" RipUp(All)}
313    -
314    {"Optimize routed tracks"
315     {"Auto-Optimize" djopt(auto)  a={"Shift-=" "Shift<Key>="}}
316     {"Debumpify" djopt(debumpify) }
317     {"Unjaggy" djopt(unjaggy) }
318     {"Vianudge" djopt(vianudge) }
319     {"Viatrim" djopt(viatrim) }
320     {"Ortho pull" djopt(orthopull) }
321     {"Simple optimization" djopt(simple)  a={"=" "<Key>="}}
322     {"Miter" djopt(miter) }
323     {"Puller" a={"Y" "<Key>y"} Puller() }
324     {"Global Puller"
325      {"Selected" GlobalPuller(selected) }
326      {"Found" GlobalPuller(found) }
327      {"All" GlobalPuller() }
328     }
329     -
330     {"Only autorouted nets" OptAutoOnly() checked=optautoonly}
331    }
332    -
333    {"Design Rule Checker" DRC()}
334    -
335    {"Apply vendor drill mapping" ApplyVendor()}
336   }
337     
339 # Info Menu
341   {Info
342    {"Generate object report" ReportObject() a={"Ctrl-R" "Ctrl<Key>r"}}
343    {"Generate drill summary" Report(DrillReport)}
344    {"Report found pins/pads" Report(FoundPins)}
345    {"Key Bindings"
346     {"Remove" a={"Delete" "<Key>Delete"}
347      Mode(Save)
348      Mode(Remove)
349      Mode(Notify)
350      Mode(Restore)
351     }
352     {"Remove Selected" a={"Backspace" "<Key>BackSpace"}
353      RemoveSelected()
354     }
355     {"Remove Connected" a={"Shift-Backspace" "Shift<Key>BackSpace"}
356      Atomic(Save)
357      Connection(Reset)
358      Atomic(Restore)
359      Unselect(All)
360      Atomic(Restore)
361      Connection(Find)
362      Atomic(Restore)
363      Select(Connection)
364      Atomic(Restore)
365      RemoveSelected()
366      Atomic(Restore)
367      Connection(Reset)
368      Atomic(Restore)
369      Unselect(All)
370      Atomic(Block)
371     }
372     {"Remove Connected"
373      Atomic(Save)
374      Connection(Reset)
375      Atomic(Restore)
376      Unselect(All)
377      Atomic(Restore)
378      Connection(Find)
379      Atomic(Restore)
380      Select(Connection)
381      Atomic(Restore)
382      RemoveSelected()
383      Atomic(Restore)
384      Connection(Reset)
385      Atomic(Restore)
386      Unselect(All)
387      Atomic(Block)
388     }
389     {"Set Same" a={"A" "<Key>a"} SetSame()}
390     {"Flip Object" a={"B" "<Key>b"} Flip(Object)}
391     {"Find Connections" a={"F" "<Key>f"} Connection(Reset) Connection(Find)}
392     {"ToggleHideName Object" a={"H" "<Key>h"} ToggleHideName(Object)}
393     {"ToggleHideName SelectedElement" a={"Shift-H" "Shift<Key>h"} ToggleHideName(SelectedElements)}
394     {"ChangeHole Object" a={"Ctrl-H" "Ctrl<Key>h"} ChangeHole(Object)}
395     {"ChangeJoin Object" a={"J" "<Key>j"} ChangeJoin(Object)}
396     {"ChangeJoin SelectedObject" a={"Shift-J" "Shift<Key>j"} ChangeJoin(SelectedObjects)}
397     {"Clear Object +2 mil" a={"K" "<Key>k"} ChangeClearSize(Object,+2,mil)}
398     {"Clear Object -2 mil" a={"Shift-K" "Shift<Key>k"} ChangeClearSize(Object,-2,mil)}
399     {"Clear Selected +2 mil" a={"Ctrl-K" "Ctrl<Key>k"} ChangeClearSize(SelectedObjects,+2,mil)}
400     {"Clear Selected -2 mil" a={"Shift-Ctrl-K" "Shift Ctrl<Key>k"} ChangeClearSize(SelectedObjects,-2,mil)}
401     {"Linesize +5 mil" a={"L" "<Key>l"} SetValue(LineSize,+5,mil)}
402     {"Linesize -5 mil" a={"Shift-L" "Shift<Key>l"} SetValue(LineSize,-5,mil)}
403     {"MarkCrosshair" a={"Ctrl-M" "Ctrl<Key>m"} MarkCrosshair()}
404     {"Select shortest rat" a={"Shift-N" "Shift<Key>n"} AddRats(Close)}
405     {"AddRats to selected pins" a={"Shift-O" "Shift<Key>o"}
406      Atomic(Save)
407      DeleteRats(AllRats)
408      Atomic(Restore)
409      AddRats(SelectedRats)
410      Atomic(Block) }
411     {"ChangeOctagon Object" a={"Ctrl-O" "Ctrl<Key>o"} ChangeOctagon(Object)}
412     {"Polygon PreviousPoint" a={"P" "<Key>p"} Polygon(PreviousPoint)}
413     {"Polygon Close" a={"Shift-P" "Shift<Key>p"} Polygon(Close)}
414     {"ChangeSquare Object" a={"Q" "<Key>q"} ChangeSquare(ToggleObject)}
415     {"ChangeSize +5 mil" a={"S" "<Key>s"} ChangeSize(Object,+5,mil)}
416     {"ChangeSize -5 mil" a={"Shift-S" "Shift<Key>s"} ChangeSize(Object,-5,mil)}
417     {"ChangeDrill +5 mil" a={"Alt-S" "Alt<Key>s"} ChangeDrillSize(Object,+5,mil)}
418     {"ChangeDrill -5 mil" a={"Alt-Shift-S" "Alt Shift<Key>s"} ChangeDrillSize(Object,-5,mil)}
419     {"TextScale +10 mil" a={"T" "<Key>t"} SetValue(TextScale,+10,mil)}
420     {"TextScale -10 mil" a={"Shift-T" "Shift<Key>t"} SetValue(TextScale,-10,mil)}
421     {"ViaSize +5 mil" a={"Shift-V" "Shift<Key>v"} SetValue(ViaSize,+5,mil)}
422     {"ViaSize -5 mil" a={"Shift-Ctrl-V" "Shift Ctrl<Key>v"} SetValue(ViaSize,-5,mil)}
423     {"ViaDrill +5 mil" a={"Alt-V" "Alt<Key>v"} SetValue(ViaDrillingHole,+5,mil)}
424     {"ViaDrill -5 mil" a={"Alt-Shift-V" "Alt Shift<Key>v"} SetValue(ViaDrillingHole,-5,mil)}
425     {"AddRats Selected" a={"Shift-W" "Shift<Key>w"} AddRats(SelectedRats)}
426     {"Add All Rats" a={"W" "<Key>w"} AddRats(AllRats)}
427     {"Cycle Clip" a={"/" "<Key>/"} Display(CycleClip)}
428     {"Arrow Mode" a={"Space" "<Key>space"} Mode(Arrow) checked=arrowmode,1}
429     {"Temp Arrow ON" a={"[" "<Key>["} Mode(Save) Mode(Arrow) Mode(Notify)}
430     {"Temp Arrow OFF" a={"]" "<Key>]"} Mode(Release) Mode(Restore)}
431     -
432     {"Step Up" a={"Up" "<Key>Up"} Cursor(Warp,0,1,grid)}
433     {"Step Down" a={"Down" "<Key>Down"} Cursor(Warp,0,-1,grid)}
434     {"Step Left" a={"Left" "<Key>Left"} Cursor(Warp,-1,0,grid)}
435     {"Step Right" a={"Right" "<Key>Right"} Cursor(Warp,1,0,grid)}
436     {"Step +Up" a={"Up" "Shift<Key>Up"} Cursor(Pan,0,50,view)}
437     {"Step +Down" a={"Down" "Shift<Key>Down"} Cursor(Pan,0,-50,view)}
438     {"Step +Left" a={"Left" "Shift<Key>Left"} Cursor(Pan,-50,0,view)}
439     {"Step +Right" a={"Right" "Shift<Key>Right"} Cursor(Pan,50,0,view)}
440     {'"Click"' a={"Enter" "<Key>Enter"} Mode(Notify) Mode(Release)}
441     -
442    }
443   }
445 # Window Menu
447   {Window
448    {"Library" DoWindows(Library) a={"i" "<Key>i"}}
449    {"Message Log" DoWindows(Log)}
450    {"Netlist" DoWindows(Netlist)}
451    {"Command Entry" Command() a={":" "<Key>:"}}
452    {"Pinout" Display(Pinout) a={"Shift-D" "Shift<Key>d"}}
453    -
454    {"About..." About()}
455   }
458 PopupMenus =
459   {
460     Popup1 =
461     {
462       {"Operations on selections"
463        {"Unselect all objects" Unselect(All)}
464        {"Remove selected objects" RemoveSelected()}
465        {"Copy selection to buffer" 
466         GetXY(Click to set the snap point for this buffer) 
467         PasteBuffer(Clear)
468         PasteBuffer(AddSelected)
469         Mode(PasteBuffer)
470        }
471        {"Cut selection to buffer"
472         GetXY(Click to set the snap point for this buffer) 
473         PasteBuffer(Clear)
474         PasteBuffer(AddSelected)
475         RemoveSelected()
476         Mode(PasteBuffer)
477        }
478        {"Convert selection to element" Select(Convert)}
479        {"Auto place selected elements" AutoPlaceSelected()}
480        {"Autoroute selected elements" AutoRoute(SelectedRats)}
481        {"Rip up selected auto routed tracks" RipUp(Selected)}
482       }
483       {"Operations on this location"
484        {"Generate object report" GetXY(Click on the object) Report(Object)}
485       }
486       -
487       {"Undo last operation" Undo()}
488       {"Redo last undone operation" Redo()}
489       -
490       {Tools
491        {"None" checked=nomode,1 Mode(None)}
492        {"Via" checked=viamode,1 Mode(Via) a={"F1" "<Key>F1"}}
493        {"Line" checked=linemode,1 Mode(Line) a={"F2" "<Key>F2"}}
494        {"Arc" checked=arcmode,1 Mode(Arc) a={"F3" "<Key>F3"}}
495        {"Text" checked=textmode,1 Mode(Text) a={"F4" "<Key>F4"}}
496        {"Rectangle" checked=rectanglemode,1 Mode(Rectangle) a={"F5" "<Key>F5"}}
497        {"Polygon" checked=polygonmode,1 Mode(Polygon) a={"F6" "<Key>F6"}}
498        {"Buffer" checked=pastebuffermode,1 Mode(PasteBuffer) a={"F7" "<Key>F7"}}
499        {"Remove" checked=removemode,1 Mode(Remove) a={"F8" "<Key>F8"}}
500        {"Rotate" checked=rotatemode,1 Mode(Rotate) a={"F9" "<Key>F9"}}
501        {"Thermal" checked=thermalmode,1 Mode(Thermal) a={"F10" "<Key>F10"}}
502        {"Arrow" checked=arrowmode,1 Mode(Arrow)  a={"F11" "<Key>F11"}}
503        {"Insert Point" checked=insertpointmode,1 Mode(InsertPoint) a={"Insert" "<Key>Insert"}}
504        {"Move" checked=movemode,1 Mode(Move)}
505        {"Copy" checked=copymode,1 Mode(Copy)}
506        {"Lock" checked=lockmode,1 Mode(Lock)}
507        {"Cancel" Mode(Escape) a={"Esc" "<Key>Escape"}}
508       }
509     }
512 # A dummy popup menu  to help test out the parser and also
513 # it will be used to help test the Popup() action when
514 # I get around to writing it.
516     Popup2 =
517     {
518       {"Submenu1"
519        {"Choice1a"}
520        {"Choice1b"}
521        {"Choice1c"}
522        {"Choice1d"}
523       }
524       {"Submenu2"
525        {"Choice2a"}
526        {"Choice2b"}
527       }
528       {"Choice1"}
529       {"Choice2"}
530     }
531   }