gschem: Fixed incorrectly formed list for stroke Z
[geda-gaf/whiteaudio.git] / gschem / lib / system-gschemrc.scm
blobbcbab7c636df13e2fb9f80e7f900e20c21e0faef
1 ;                                                         -*-Scheme-*-
2
3 ; Init file for gschem
6 (use-modules (gschem deprecated))
8 ;  ;'s are comments
9 ;  keywords are case sensitive (guile feature)
10 ;  mode strings are case sensitive
11 ;  colors are not case sensitive 
12 ;  
14 ; gschem-version string
16 ; Specifies the version of this file.  This number is used to make sure 
17 ; that the rc file is compatible with the version of gschem that is 
18 ; being run. The end user should *not* change this value.
20 (gschem-version "@DATE_VERSION@")
23 ; Start of color section 
26 ;; Make the gschem color maps more user-friendly
27 (color-map-make-friendly display-color-map)
28 (color-map-make-friendly display-outline-color-map)
30 ; Load up a color scheme which has a dark (black) background.
31 ; Comment out the first line and comment in the second line for a
32 ; light (almost white) background.  The dark background is the
33 ; original look.
35 (load (build-path geda-rc-path "gschem-colormap-darkbg")) ; dark background
36 ;(load (build-path geda-rc-path "gschem-colormap-lightbg")) ; light background
37 ;(load (build-path geda-rc-path "gschem-colormap-bw")) ; light background, bw
40 ; End of color section
44 ; Start of mode related keywords
47 ; toolbars string
49 ; Controls if the toolbars are visible or not.
51 (toolbars "enabled")
52 ;(toolbars "disabled")
54 ; handleboxes string
56 ; Controls if the handleboxes (which contain the menu and toolbar) are 
57 ; visible or not.
59 (handleboxes "enabled")
60 ;(handleboxes "disabled")
62 ; undo-control string
64 ; Controls if the undo is enabled or not
66 (undo-control "enabled")
67 ;(undo-control "disabled")
69 ; undo-levels number
71 ; Determines the number of levels of undo.  Basically this number decides 
72 ; how many backup schematics are saved on disk.
74 (undo-levels 10)
76 ; undo-type string
78 ; Controls which kind of undo is used.  The default is to use the disk as 
79 ; the storing medium (ie after every action the undo information is stored
80 ; to disk).  The other mechanism uses only memory.  The disk mechanism is
81 ; nice because you get undo-level number of backups of the schematic written
82 ; to disk as backups so you should never lose a schematic due to a crash.
84 (undo-type "disk")
85 ;(undo-type "memory")
87 ; undo-panzoom string
89 ; Controls if pan or zoom commands are saved in the undo list.  If this 
90 ; is enabled then a pan or zoom command will be considered a command and
91 ; can be undone.  If this is false, then panning and zooming is not saved
92 ; in the undo list and cannot be undone.  Note, the current viewport 
93 ; information is saved for every command, so the display will change to the
94 ; viewport before a command is executed.
96 (undo-panzoom "enabled")
97 ;(undo-panzoom "disabled")
100 ; autosave interval
102 ; Controls if a backup copy is made every "interval" seconds.
103 ; Note that the backup copy is made when you make some change to the schematic,
104 ; and there were more than "interval" seconds from the last autosave.
105 ; Autosaving will not be allowed if setting it to zero.
106 (auto-save-interval 120)
108 ; draw-grips string
110 ; Controls if the editing grips are drawn when selecting objects
112 (draw-grips "enabled")
113 ;(draw-grips "disabled")
115 ; net-endpoint-mode string
117 ; Not user changable.
118 (net-endpoint-mode "filledbox")
120 ;  net-midpoint-mode string
122 ; Not user changable.
123 (net-midpoint-mode "filled")
125 ;  net-direction-mode string
127 ;  Controlls if the net direction mode is used. This mode tries to guess
128 ;  the best continuation direction of a L-shape net when adding a net.
130 (net-direction-mode "enabled")
131 ;(net-direction-mode "disabled")
133 ;  net-selection-mode string
135 ; Controls how many net segments are selected when you click at a net
136 ; If one of the enabled items is used, the selection state will toggle 
137 ; through all selection states. The mode defines the maximum search depth
138 ; for the net selection mode
140 ;(net-selection-mode "disabled")
141 (net-selection-mode "enabled_net")
142 ;(net-selection-mode "enabled_all")
144 ;  net-consolidate string
146 ;  Controls if the net consolidation code is used when schematics are read
147 ;  in, written to disk, and when nets are being drawn (does not consolidate
148 ;  when things are being copied or moved yet).  Net consolidation is the 
149 ;  connection of nets which can be combined into one.
150 ;  Comment out if you want the default mode 
152 (net-consolidate "enabled")
153 ;(net-consolidate "disabled")
155 ;  net-style string
157 ;  Set to thin if you want thin nets.
158 ;  Set to thick if you want thick nets.
159 ;  This mode also determines what net style gets printed
161 ;(net-style "thin")
162 (net-style "thick")
164 ; netconn-rubberband string
166 ; Controls if net connections are maintained when you move a connecting 
167 ; component or net.   
169 (netconn-rubberband "enabled")
170 ;(netconn-rubberband "disabled")
172 ; magnetic-net-mode string
174 ; Controls the initial setting of the magnetic net mode. The magnetic
175 ; net mode marks a possible connection that is close to the current
176 ; cursor position
177 (magnetic-net-mode "enabled")
178 ;(magnetic-net-mode "disabled")
180 ;  bus-style string
182 ;  Set to thin if you want thin buses.
183 ;  Set to thick if you want thick buses.
184 ;  This mode also determines what bus style gets printed
186 ;(bus-style "thin")
187 (bus-style "thick")
189 ; pin-style string
191 ; Set to thin if you want thin pins
192 ; Set to thick if you want thick pins.
193 ; This mode also determines what pin style gets printed
195 ;(pin-style "thin")
196 (pin-style "thick")
198 ; line-style string
200 ; Set to thin if you want thin lines
201 ; Set to thick if you want thick lines.
202 ; This mode also determines what line style gets printed
204 ;(line-style "thin")
205 (line-style "thick")
207 ; zoom-with-pan string
209 ; Sets the zoom in and zoom out functions to pan the display and then zoom.
210 ; Basically zoom in / out where the mouse pointer sits on the display.
211 ; Comment out if you want the default mode.
213 (zoom-with-pan "enabled")
214 ;(zoom-with-pan "disabled")
216 ; zoom-gain integer
218 ; Controls the percentage size increase when zooming into the page.
219 ; Un-zooming uses the inverse factor such that a zoom in / zoom out
220 ; pair will return the schematic to the same size.
221 ;  E.g:
222 ;    20% increment => x 1.2 original size when zooming in
223 ;                  => x 1 / 1.2 x original size when zooming out
225 (zoom-gain 20)
226 ;(zoom-gain 50) ; Hard-coded behaviour up to version 1.5.0.20080706
228 ; fast-mousepan string
230 ; Controls if text is drawn properly or if a simplified version (a line which
231 ; represents the text string) is drawn during mouse pan.  Drawing a simple
232 ; line speeds up mousepan a lot for big schematics
233 (fast-mousepan "enabled")
234 ;(fast-mousepan "disabled")
236 ; mousepan-gain integer
238 ; Controls how much the display pans when using mousepan.  A larger value
239 ; provides greater pan distance when moving the mouse, while a smaller value
240 ; provides a smoother, but smaller pan distance when moving the mouse.
241 (mousepan-gain 1)
242 ;(mousepan-gain 5)
243 ;(mousepan-gain 10)
245 ; keyboardpan-gain integer
247 ; Controls how much the display pans when using the keyboard cursor keys.  
248 ; A larger value provides greater pan distance when pressing the cursor 
249 ; keys, while a smaller value provides a smoother, but smaller pan 
250 ; distance when moving the cursor keys.
251 (keyboardpan-gain 20)
252 ;(keyboardpan-gain 10)
253 ;(keyboardpan-gain 1)
254 ;(keyboardpan-gain 5)
256 ; select-slack-pixels integer
258 ; Controls how many pixels around an object can still be clicked as part of
259 ; that object.
260 ; A larger value gives greater ease in selecting small, or narrow objects.
261 (select-slack-pixels 10)
262 ;(select-slack-pixels 4)
263 ;(select-slack-pixels 0)
264 ;(select-slack-pixels 1)
267 ; action-feedback-mode string
269 ; Set the default action feedback mode (for copy/move/component place).
270 ; Set to outline to get an outline of the selection. 
271 ; Set to boundingbox to get a bounding box of the selection. 
272 ; For a fast machines with fast video use outline (it looks good).
273 ; For a slow machine use boundingbox; it is much faster.
274 ; Comment out if you want the default mode.
276 (action-feedback-mode "outline")
277 ;(action-feedback-mode "boundingbox")
279 ; continue-component-place string
281 ; If this enabled then multiple instances of the same component can be placed
282 ; immediately without having to click on the name or Apply in the Component
283 ; Place... dialog box.  If this is disabled then only one component can be
284 ; placed (the user must then press Apply in the dialog box to place multiple
285 ; instances of the same component)
287 (continue-component-place "enabled")
288 ;(continue-component-place "disabled")
290 ; sort-components-library string
292 ; If this is enabled, then the component library will be sorted in
293 ; alphanumeric order.  Bear in mind that this option is totally
294 ; cosmetic, and will not alter the component search order (latest
295 ; added gets scanned first).
297 (sort-component-library "disabled")
298 ;(sort-component-library "enabled")
300 ; text-feedback string
302 ; Controls if text is drawn when doing an xor action (like copy/move)
303 ; Comment out if you want the default mode.
304 ; Not in production yet.
306 (text-feedback "only-when-readable")
307 ;(text-feedback "always")
309 ; text-display-zoomfactor number
311 ; Sets the zoomfactor number (~150 being the most zoomed out factor) 
312 ; (zoom factors get smaller as you zoom in) at which text is displayed
313 ; completely (not a line).  This is only valid if above is set to
314 ; "only-when-readable" 
316 (text-display-zoomfactor 30)
318 ; text-origin-marker string
320 ; Controls if the text origin markers are displayed (or not)
322 (text-origin-marker "enabled")
323 ;(text-origin-marker "disabled")
325 ; scrollbars string
327 ; Controls if the scrollbars are displayed (enabled) or not (disabled)
328 ; If you disable the scrollbars, you will not be able to use the scroll 
329 ; wheel on your mouse.  This is an unfortunate side effect of how the
330 ; code is implemented.
332 (scrollbars "enabled")
333 ;(scrollbars "disabled")
335 ; scrollbar-update string
337 ; Specifies the behavior of the scrollbars in the main window.
338 ;    continuous - display is redrawn as you move the scrollbar
339 ;    delayed - display is redrawn once you stop moving the scrollbar
340 ; Default is continuous
342 (scrollbar-update "continuous")
343 ;(scrollbar-update "delayed")
345 ; raise-dialog-boxes-on-expose string
347 ; Controls if dialog boxes are raised whenever an expose event happens
348 ; Default is disabled since gtk2 supposedly handles the raising of these
349 ; dialogs correctly now.
351 ;(raise-dialog-boxes-on-expose "enabled")
352 (raise-dialog-boxes-on-expose "disabled")
354 ; object-clipping string
356 ; Determines if the object clipping code is executed or not
357 ; This code does speed up redraws a bit.
358 ;   Possible options: enabled or disabled
359 ; Default is enabled, I do not recommend turning this off, since some X
360 ; servers don't handle clipping correctly.
362 (object-clipping "enabled")
363 ;(object-clipping "disabled")
365 ; embed-components string
367 ; Determines if the newly placed components are embedded in the schematic 
368 ; or if only the filename is specified and the component is searched for 
369 ; instead.  If it is enabled, then all new components will be embedded 
370 ; othewise they are not embedded.  This can be controlled on the fly during
371 ; runtime with the "Embed Component" checkbox on the select component dialog
372 ; box
374 ;(embed-components "enabled")
375 (embed-components "disabled")
377 ; component-dialog-attributes stringlist
379 ; Sets a list of attributs that are visible in the component select dialog.
380 ; The attributes are sorted in the same order as they appear in the list.
381 ; If the first list element is an asterisk "*", all attributes will be 
382 ; displayed in alphabetical order.
383 ; An empty list will disable the attribute view in the dialog.
385 ;(component-dialog-attributes '("device" "description" "footprint" "comment"
386 ;                              "net" "model" "model-name" "file" "value"
387 ;                              "numslots" "slotdef" "slot"
388 ;                              "documentation" "symversion" "author"
389 ;                              "use-license=" "dist-license="))
390 (component-dialog-attributes '("*"))
391 ;(component-dialog-attributes '())
393 ; logging string
395 ; Determines if the logging mechanism is enabled or disabled
396 ;   Possible options: enabled or disabled
397 ; Default is enabled.
398 ; See below for the logging-destination keyword for control over
399 ; where the messages go.
401 (logging "enabled")
402 ;(logging "disabled")
405 ; log-window string
407 ; Controls if the log message window is mapped when gschem is started up
408 ; Possible options:
409 ;       startup - opened up when gschem starts
410 ;       later   - NOT opened up when gschem starts
411 ;                 (can be opened by Options/Show Log Window)
413 (log-window "startup")
414 ;(log-window "later")
417 ; log-window-type string
419 ; Controls if the log message window is a transient or if it is decorated 
420 ; as a normal window (this is dependant on the window manager doing decoration
421 ; right)
423 ; Possible options:
424 ;       decorated       - log window is a normal decorated window
425 ;       transient       - log window is a transient dialog box, typically
426 ;                         not decorated by the window manager
428 (log-window-type "decorated")
429 ;(log-window-type "transient")
432 ; logging-destination string
434 ; Specifies where log message go during run time.
435 ; Possible options are:
436 ;      log_window      The log window (if it's visible)
437 ;      tty             The stdout of the terminal where gschem was run from
438 ;      both            Both of the above locations
439 ; Message are always written to the log file (unless logging is disabled)
440 ; by the above keyword
442 ; Default is log_window
444 (logging-destination "log_window")
445 ;(logging-destination "tty")
446 ;(logging-destination "both")
448 ; text-size number
450 ; Sets the default text size.
452 (text-size 10)
454 ; snap-size number
456 ; Sets the default grid spacing at start-up of gschem.
458 (snap-size 100)
460 ; text-caps-style string
462 ; Sets the default caps style used for the input of text
463 ; lower specifies that all inputed text is in lowercase
464 ; upper specifies that all inputed text is in uppercase
465 ; both specifies that all inputed text is used as is (no case conversion)
467 (text-caps-style "both")
468 ;(text-caps-style "lower")
469 ;(text-caps-style "upper")
471 ;  file-preview string
473 ;  Controls if the preview area in the File Open/Save As and Component 
474 ;  dialog boxes is enabled by default or not
476 (file-preview "enabled")
477 ;(file-preview "disabled")
479 ;  enforce-hierarchy string
481 ;  Controls if the movement between hierarchy levels (of the same underlying
482 ;  schematics) is allowed or not.
483 ;  If this is enabled, then the user cannot (without using the page manager)
484 ;  move between hierarchy levels otherwise, if enabled, the user sees all
485 ;  the hierarchy levels as being flat.
487 (enforce-hierarchy "enabled")
488 ;(enforce-hierarchy "disabled")
490 ; untitled-name string
492 ; Specify the default untitled basename (usually only used a startup time)
493 ; And typically not changed at runtime
495 (untitled-name "untitled")
497 ; window-size width height 
499 ; Specifies the size of the drawing area window.  The width and height
500 ; are specified in pixels and do not include the three menu bars and 
501 ; scrollbars (so the window will be larger than the specified 
502 ; measurements). Try to keep an aspect ratio of 1.333333 if at all possible. 
503 ; These numbers are NOT the true size of the window, but of the drawing area.
505 ;(window-size 650 487)  ; Good size for 800x600
506 (window-size 900 650)   ; Good size for 1024x768
507 ;(window-size 950 712)  ; Good size for 1152x864
508 ;(window-size 1100 825) ; Good size for 1280x1024
510 ; world-size width height border
512 ; Specifies the size of the world and a border (in world space units)
513 ; Be sure all inputs are reals (floats/doubles) and don't try to reverse
514 ; the values: to get a portrait mode.  Code to support that needs to be added
515 ; The code that implements this automatically transforms the dimensions into
516 ; the proper aspect ratio.  All units are in inches.
517 ; This is not the paper size.  That is specified elsewhere.  End users should
518 ; not change this at all.
520 (world-size 120.0 90.0 1.0)
521 ;(world-size 60.0 45.0 1.0)
523 ; page-size width height 
525 ; Specifies the size of the default paper size
526 ; Be sure all inputs are reals (floats/doubles) and don't try to reverse
527 ; the values: to get a portrait mode.  Code to support that needs to be added
528 ; The code that implements this automatically transforms the dimensions into
529 ; the proper aspect ratio.  All units are in inches. (use output-orientation
530 ; to get portrait mode)
532 (paper-size 11.0 8.5) ; letter
533 ;(paper-size 14.0 8.5) ; legal 
534 ;(paper-size 8.5 5.5) ; statement
535 ;(paper-size 17.0 11.0) ; tabloid
536 ;(paper-size 11.0 17.0) ; ledger
537 ;(paper-size 13.0 8.5) ; folio
538 ;(paper-size 10.833 8.472) ; quarto 
539 ;(paper-size 14 10) ; 10x14
540 ;(paper-size 10.0 7.5) ; executive
541 ;(paper-size 11.0 8.5) ; A
542 ;(paper-size 17.0 11.0) ; B 
543 ;(paper-size 22.0 17.0) ; C 
544 ;(paper-size 34.0 22.0) ; D 
545 ;(paper-size 44.0 34.0) ; E 
546 ;(paper-size 46.81 33.11) ; A0 
547 ;(paper-size 33.11 23.39) ; A1
548 ;(paper-size 23.39 16.54) ; A2
549 ;(paper-size 16.54 11.69) ; A3
550 ;(paper-size 11.69 8.27) ; A4
551 ;(paper-size 8.27 5.83) ; A5
552 ;(paper-size 5.83 4.13) ; A6
553 ;(paper-size 4.13 2.91) ; A7 
554 ;(paper-size 2.91 2.05) ; A8
555 ;(paper-size 2.05 1.46) ; A9 
556 ;(paper-size 1.46 1.02) ; A10
557 ;(paper-size 1.02 0.71) ; A11
558 ;(paper-size 0.71 0.51) ; A12
560 ; paper-sizes string width height
562 ; Specifies which paper sizes are available for printing.
563 ; The width and height parameters are in the order for landscape printing,
564 ; so reversing them for portrait won't work just yet. (and that will be 
565 ; implemented differently. 
566 ; The default paper size is set above.  All units are in inches (forgiveness
567 ; please).
569 ; You MUST change this list in this file (gschem-systemrc) if you want
570 ; any reordering changes to take effect.
572 (paper-sizes "Letter : 8.5 in x 11 in" 11.0 8.5)
573 (paper-sizes "Legal : 8.5 in x 14 in" 14.0 8.5)
574 (paper-sizes "Statement : 5.5 in x 8.5 in" 8.5 5.5)
575 (paper-sizes "Tabloid : 11 in x 17 in" 17.0 11.0) 
576 (paper-sizes "Ledger : 17 in x 11 in" 11.0 17.0) 
577 (paper-sizes "Folio : 8.5 in x 13 in" 13.0 8.5) 
578 (paper-sizes "Quarto : 8.472 in x 10.833 in" 10.833 8.472) 
579 (paper-sizes "10x14 : 10 in x 14 in " 14.0 10.0) 
580 (paper-sizes "Executive : 7.5 x 10" 10.0 7.5) 
581 (paper-sizes "A : 8.5 in x 11 in" 11.0 8.5)
582 (paper-sizes "B : 11 in x 17 in" 17.0 11.0)
583 (paper-sizes "C : 17 in x 22 in" 22.0 17.0)
584 (paper-sizes "D : 22 in x 34 in" 34.0 22.0)
585 (paper-sizes "E : 34 in x 44 in" 44.0 34.0)
586 (paper-sizes "A0  84.10 cm x 118.90 cm" 46.81 33.11)
587 (paper-sizes "A1  59.40 cm x 84.10 cm" 33.11 23.39)
588 (paper-sizes "A2  42.00 cm x 59.40 cm" 23.39 16.54)
589 (paper-sizes "A3  29.70 cm x 42.00 cm" 16.54 11.69)
590 (paper-sizes "A4  21.00 cm x 29.70 cm" 11.69 8.27)
591 (paper-sizes "A5  14.80 cm x 21.00 cm" 8.27 5.83)
592 (paper-sizes "A6  10.50 cm x 14.80 cm" 5.83 4.13)
593 (paper-sizes "A7  7.40 cm x 10.50 cm" 4.13 2.91)
594 (paper-sizes "A8  5.20 cm x 7.40 cm" 2.91 2.05)
595 (paper-sizes "A9  3.70 cm x 5.20 cm" 2.05 1.46)
596 (paper-sizes "A10 2.60 cm x 3.70 cm" 1.46 1.02)
597 (paper-sizes "A11 1.80 cm x 2.60 cm" 1.02 0.71)
598 (paper-sizes "A12 1.30 cm x 1.80 cm" 0.71 0.51)
600 ; print-command string 
602 ; The command to send data to in order to print to a printer.  On most
603 ; systems, this will be "lpr".
605 (print-command "lpr")
608 ; output-type string
610 ; Controls what is actually printed
611 ;       string is either "extents" or "extents no margins" or 
612 ;       "current window"
614 (output-type "extents")
615 ;(output-type "extents no margins")
616 ;(output-type "current window")
617 ;;; (output-type "limits")  "limits" is considered deprecated and should 
618 ;;;                         not be used.
620 ; output-orientation string
622 ; Controls which way the output page is layed out (landscape or portrait)
624 ;(output-orientation "portrait")
625 (output-orientation "landscape")
627 ; output-color string
629 ; Controls if output (postscript) is color (enabled) or black/white (disabled)
631 (output-color "disabled")
632 ;(output-color "enabled")
635 ; output-capstyle string
637 ; Controls the capstyle at the end of lines in the postscript output
639 (output-capstyle "square")
640 ;(output-capstyle "round")
641 ;(output-capstyle "butt")
644 ; setpagedevice-orientation string
646 ; If enabled, puts a << /Orientation x >> setpagedevice into the postscript
647 ; output.  x is either 1 for landscape or 0 for portrait.
649 (setpagedevice-orientation "disabled")
650 ;(setpagedevice-orientation "enabled")
653 ; setpagedevice-pagesize string
655 ; If enabled, puts a << /PageSize XxY >> setpagedevice into the postscript
656 ; output.  XxY is the size of the paper in points.
658 (setpagedevice-pagesize "disabled")
659 ;(setpagedevice-pagesize "enabled")
662 ; image-color string
664 ; Controls if image (png) is color (enabled) or black/white (disabled)
666 (image-color "enabled")
667 ;(image-color "disabled")
669 ; middle-button string
671 ; Controls if the middle mouse button draws strokes, repeats the last 
672 ; command, does an action (move and copy (holding down the ALT key) 
673 ; are supported) on a single objects, or if it does the mouse panning.
675 (middle-button "mousepan")
676 ;(middle-button "action")
677 ;(middle-button "stroke")
678 ;(middle-button "repeat")
680 ; third-button string
682 ; Controls if the third mouse button performs the popup ("popup") or 
683 ; if it does the mouse panning ("mousepan")
685 (third-button "popup")
686 ;(third-button "mousepan")
688 ; scroll-wheel string
690 ; Controls the binding of the mouse scroll wheel.
691 ; "classic" style is the gschem default, where scrolling with no modifier
692 ; key is mapped to zoom, + CTRL -> x-axis pan, + SHIFT -> y-axis pan.
693 ; "gtk" style changes the behaviour to be more like other GTK appliactions,
694 ; no modifier -> y-axis pan, + CTRL -> zoom, + SHIFT -> x-axis pan.
695 (scroll-wheel "classic")
696 ;(scroll-wheel "gtk")
699 ; scrollpan-steps integer
701 ; Controls the number of scroll pan events required to traverse the viewed
702 ; schematic area. Larger numbers mean more scroll steps are required to
703 ; pan across the viewed area and giving finer control over positioning.
704 (scrollpan-steps 8)
705 ;(scrollpan-steps 4) ; Hard-coded behaviour up to version 1.5.0.20080706
707 ; warp-cursor string
709 ; Controls if the cursor is warped (or moved) when you zoom in and out.
710 ; Some people find this forced cursor movement annoying.
712 (warp-cursor "enabled")
713 ;(warp-cursor "disabled")
716 ; Bus ripper controls
717 ; The following keywords control the auto bus ripper addition code
719 ; bus-ripper-size  : Sets the size of the auto bus rippers.  
720 ; bus-ripper-type  : Sets the bus ripper type either a "component" or 
721 ;                    plain "net"
722 ; bus-ripper-syname  : If above is set to component, specify the symbol name.
723 ;                      The symbol must exist in a component library
724 ; bus-ripper-rotation  : Either "symmetric" or "non-symmetric".  This deals 
725 ;                        with how the bus ripper symbol is rotated when it 
726 ;                        is auto added to a schematic.
727 ;   
729 ; The default bus ripper
730 (bus-ripper-size 200)
731 (bus-ripper-type "component")
732 (bus-ripper-symname "busripper-1.sym")
733 (bus-ripper-rotation "non-symmetric")
735 ; A symmetric alternative 
736 ;(bus-ripper-size 200)
737 ;(bus-ripper-type "component")
738 ;(bus-ripper-symname "busripper-2.sym")
739 ;(bus-ripper-rotation "symmetric")
741 ; A simple net 
742 ;(bus-ripper-size 200)
743 ;(bus-ripper-type "net")
745 ; Dots grid dot size
747 ; The dots-grid-dot-size keyword controls the size of the grid dots in the
748 ; dots grid display. The units are in pixels. The default (min) value of 1
749 ; is the best performing as the grid dot size is rendered as a single pixel.
750 ; Values of 2 and 3 are good values to try if the default grid dot size is
751 ; too small for your tastes. Anything larger than 3 is probably too large.
753 (dots-grid-dot-size 1)
754 ;(dots-grid-dot-size 2)
755 ;(dots-grid-dot-size 3)
757 ; Dots grid mode
759 ; The dots-grid-mode keyword controls the mode of the dotted grid, either
760 ; variable or fixed. In the variable mode, the grid spacing changes
761 ; depending on the zoom factor. In the fixed mode, the grid always
762 ; represents the same number of units as the snap-spacing. You can
763 ; control the density of the grid using the dots-grid-fixed-threshold.
764 (dots-grid-mode "variable")
765 ;(dots-grid-mode "fixed")
767 ; Dots grid fixed threshold
769 ; The dots-grid-fixed-threshold specifies the minimum number of pixels
770 ; grid-spacing for the grid to be displayed. Using this parameter you can
771 ; control thedensity of the displayed grid (smaller numbers will cause the
772 ; grid to be drawn denser). This mode is only used when grid-mode is fixed.
774 (dots-grid-fixed-threshold 10)
776 ; Mesh grid display threshold
778 ; The mesh-grid-display-threshold specifies the minimum line pitch for a the
779 ; grid to be displayed. Using this parameter you can control maximum density
780 ; of the displayed before the minor, then major grid-lines are switched off.
782 (mesh-grid-display-threshold 3)
784 ; force-boundingbox string
786 ; Controls if the entire bounding box of a symbol is used when figuring out
787 ; whichend of the pin is considered the active port.  Enable this when 
788 ; gschem is guessing incorrectly.
790 (force-boundingbox "disabled")
791 ;(force-boundingbox "enabled")
794 ; add-attribute-offset integer
796 ; This has not been implemented/debugged yet.  
797 ; This has not been implemented/debugged yet.  
798 ; This has not been implemented/debugged yet.  
800 ; Controls a offset which is added to the location of text items that are
801 ; added to an object as an attribute.  This offset is added when the following
802 ; conditions occur:
804 ;  1) Add/Attribute... has been invoked via the hotkey
805 ;  2) It is the the "netname" attribute being added
806 ;  3) It is being attached to a horizontal or vertical net segment
807 ;  4) The initial mouse position is at or near the actual net (with one
808 ;     grid unit).
810 ; If these four conditions are not met, then this offset is not added. 
811 ;(add-attribute-offset 50)
814 ; reset-componet-library
816 ; When reset-component-library is executed, then all known component library
817 ; paths are erased.  This is useful if the user wants to override all the
818 ; system provided paths and provide his/her own set.  Normally this is not
819 ; commented in.
821 ; (reset-component-library)
824 ; reset-source-library
826 ; When reset-source-library is executed, then all known source library
827 ; paths are erased.  This is useful if the user wants to override all the
828 ; system provided paths and provide his/her own set.  Normally this is not
829 ; commented in.
831 ; (reset-source-library)
834 ; End of mode related keywords
839 ; Start of hooks
843 ;; Comment in this scheme code if you want automatic numbering when
844 ;; placing new component and copying components.
846 ;(load-from-path "auto-uref.scm")
847 ;(add-hook! add-component-hook auto-uref)
848 ;(add-hook! copy-component-hook auto-uref)
850 ;; Define value of page-offset for auto number on insert.
851 ;; Refdeses will be numbered from integer multiples of page-offset,
852 ;; depending on the lowest refdes value found on the page.
853 ;; If lowest value is 323 and page offset is 100, then next refdes
854 ;; will be 301.
855 ;; Setting to 0 disables the feature.
857 ;(auto-uref-set-page-offset 100)
860 ; Define default pin attributes
861 ; Attributes: 
862 ;   - Attribute name.
863 ;   - Value of the attribute.
864 ;   - Visibility: #t (visible) or #f (hidden).
865 ;   - Show_list:  a list containing what to show, using 
866 ;                 elements like "name" or "value", or an empty list.
867 (define default-pin-attributes 
868        '(("pintype"   "unknown" #f ())
869          ("pinlabel"  "unknown" #t ("value"))
870          ("pinnumber" "0"       #t ("value"))
871          ("pinseq"    "0"       #f ())))
873 ; Convert a character into a string
874 (define char2str 
875   (lambda (char)
876     (list->string (list char))))
878 ; Attribute autoplacement grid 
879 (define autoplace-attributes-grid 50)
881 ; Load the default position of attributes, for attribute autoplacing 
882 ; functions.
883 (load-from-path "default-attrib-positions.scm")
885 ; Adds the default pin attributes to each newly placed pin.
886 (define (add-default-pin-attributes object)
887   (for-each
888     (lambda (a)
889       (apply add-attribute-to-object object a)) default-pin-attributes))
891 ; Comment in this hook to automatically add the default attributes to
892 ; each newly placed pin
893 (add-hook! add-pin-hook add-default-pin-attributes)
896 ; Comment in this to load the functions to place the attributes automatically.
897 (load-from-path "auto-place-attribs.scm")
899 ; Autoplace pin text attributes hook. 
900 ; Comment in these if you want the pin attributes to be automatically placed.
901 ; There are different hooks for situations like adding a new pin and rotating
902 ; or mirroring an existing one. 
903 ; The #t at the end means that function is appended to the end of the hook.
904 (add-hook! add-pin-hook (lambda (pin)
905         (autoplace-pin-attributes pin )) #t)
906 (add-hook! rotate-pin-hook (lambda (pin)
907         (autoplace-pin-attributes pin )) #t)
908 (add-hook! mirror-pin-hook (lambda (pin)
909         (autoplace-pin-attributes pin )) #t)
911 ; Autoplace component/net/buses text attributes hook. 
912 ; Comment in these if you want the component attributes to be 
913 ; automatically placed.
914 ; There are different hooks for situations like adding a new pin, rotating
915 ; or mirroring an existing one, adding a new attribute or a new component.
916 ; The #t at the end means that function is appended to the end of the hook.
917 ;(add-hook! add-component-object-hook (lambda (object)
918 ;       (autoplace-object-attributes object)) #t)
919 ;(add-hook! rotate-component-object-hook (lambda (object)
920 ;       (autoplace-object-attributes object)) #t)
921 ;(add-hook! mirror-component-object-hook (lambda (object)
922 ;       (autoplace-object-attributes object)) #t)
923 ;(add-hook! add-attribute-hook (lambda (object)
924 ;       (autoplace-object-attributes object)) #t)
925 ;(add-hook! complex-place-list-changed-hook (lambda (object)
926 ;         (autoplace-object-attributes object)) #t)
928 ; Automatically place a titleblock (or other components) when creating
929 ; a new page.
930 ; Comment in these lines if you want gschem to automatically place a titleblock
931 ; when you create a new _empty_ page.
932 ; Users can customize the default titleblock by adding the following line
933 ; (without the semi-colons at the beginning) to the gschemrc file:
934 ;; (define default-titleblock "title-A4.sym")
935 ;; Change "title-A4.sym" by the name of your prefered titleblock!
937 ; If you don't want a titleblock to be added automatically, then add one of 
938 ; the following lines to your gschemrc file (without the semicolon).
939 ; There are several ways, so just choose one:
940 ;   (define default-titleblock "")
941 ;   (define default-titleblock '())
942 ;   (define default-titleblock #f)
944 (define default-titleblock "title-B.sym")
946 ; Load the regular expressions module
947 (if (provided? 'regex)
948     (use-modules (ice-9 regex))
949     (display "Your Guile installation doesn't provide the regex module.\n"))
951 (add-hook! (@ (gschem hook) new-page-hook) (lambda (page)
952    ; Only place the titleblock if there are no objects in the page
953    ; and the page filename ends in ".sym".
954    (if (and (null? (get-objects-in-page page))
955             ; If the guile installation doesn't provide the regex module,
956             ; don't care about the page filename.
957             (if (provided? 'regex)
958                 (not (string-match ".*\\.[sS][yY][mM]" 
959                                    (get-page-filename page)))
960                 #t))
961 ;      Syntax             Symbol name        X   Y    angle selectable mirrored
962        (add-component-at-xy page default-titleblock 40000 40000   0       #f       #f)))
963            #t)
965 ; Evaluate an expression entered in the magic-colon text box.
966 ; In 20 years this might dispatch to an interpreter for some other language.
967 (define (invoke-macro s-expr)
968   (gschem-log (format #f "~s\n" (eval-string-protected s-expr))))
971 ; End of hooks
975 ; Start of path related keywords
978 ; attribute-name string
980 ; Specifies the default attributes which are presented to the user in the
981 ; "Add Attribute" dialog box.
982 ; The main purpose of this keyword is to allow the user to add any attributes
983 ; which should be in this dialog box.
984 ; Some of these names are specific for symbols while others are for general
985 ; components or nets.  The attribute names are case sensitive. (change this?)
987 ; The order of the attribute-name keywords determines the order they
988 ; are displayed.
990 (attribute-name "netname")
991 (attribute-name "footprint")
992 (attribute-name "value")
993 (attribute-name "refdes")
994 (attribute-name "source")
995 (attribute-name "model-name")
996 (attribute-name "model")
997 (attribute-name "net")
998 (attribute-name "device")
999 (attribute-name "pinnumber")
1000 (attribute-name "pinseq")
1001 (attribute-name "pintype")
1002 (attribute-name "pinlabel")
1003 (attribute-name "numslots")
1004 (attribute-name "slot")
1005 (attribute-name "slotdef")
1006 (attribute-name "graphical")
1007 (attribute-name "description")
1008 (attribute-name "documentation")
1009 (attribute-name "symversion")
1010 (attribute-name "comment")
1011 (attribute-name "author")
1012 (attribute-name "dist-license")
1013 (attribute-name "use-license")
1014 (attribute-name "file")
1017 ; End of path related keywords
1021 ; Start of stroke related keywords
1025 ; This section defines associations between a stroke sequence and a 
1026 ; guile function which is executed when the stroke is drawn in the
1027 ; gschem window
1029 ; Strokes are defined as follows: 
1031 ; 1  2  3
1033 ; 4  5  6
1035 ; 7  8  9
1037 ; The sequence of number such as "852" specify how the stroke is drawn.
1038 ; Sequence "852" happens to be a vertical line drawn from the bottom going 
1039 ; up.
1041 ; Please see the libstroke documentation for further information on the 
1042 ; stroke description.  
1044 ; For the most part I went a little overboard on the stroke defs, you 
1045 ; probably can get away with many less stroke defs, but I'm a very 
1046 ; sloppy stroke drawing person. :-)  Guess my teachers were always 
1047 ; right-- my handwritting was/is awful.
1049 ; Be careful here, strokes is a rather large list, and make sure you maintain
1050 ; proper ( and )'s.
1053 (define strokes
1054 ; Letter L for line
1055   '(("14789" . add-line)
1057 ; Letter Z for zoom window
1058 ("125789" . view-zoom-box)
1059 ("1254789" . view-zoom-box)
1060 ("1235789" . view-zoom-box)
1061 ("2354789" . view-zoom-box)
1062 ("2324789" . view-zoom-box)
1063 ("12354789" . view-zoom-box)
1064 ("12324789" . view-zoom-box)
1065 ("12365789" . view-zoom-box)
1066 ("1232789" . view-zoom-box)
1068 ; line up for zoom out
1069 ("852" . view-zoom-out)
1070 ; line down for zoom in
1071 ("258" . view-zoom-in)
1073 ; Letter C for copy
1074 ("3214789" . edit-copy)
1075 ("214789" . edit-copy)
1076 ("21489" . edit-copy)
1077 ("32478" . edit-copy)
1079 ; Letter E for edit
1080 ("563214789" . edit-edit)
1081 ("53214789" . edit-edit)
1082 ("5321478" . edit-edit)
1083 ("5214789" . edit-edit)
1084 ("521478" . edit-edit)
1085 ("453214789" . edit-edit)
1086 ("45321478" . edit-edit)
1087 ("456321478" . edit-edit)
1088 ("456214789" . edit-edit)
1089 ("45621478" . edit-edit)
1091 ; Letter N for net
1092 ("415963" . add-net)
1093 ("7414863" . add-net)
1094 ("74148963" . add-net)
1095 ("74158963" . add-net)
1096 ("7415963" .  add-net)
1099 ; Letter M for move
1100 ("741236963" . edit-move)
1101 ("7412572369" . edit-move)
1102 ("7412575369" . edit-move)
1103 ("741258369" . edit-move)
1104 ("74125852369" . edit-move)
1105 ("7412585369" . edit-move)
1106 ("74125863" . edit-move)
1107 ("74126963" . edit-move)
1108 ("741475369" . edit-move)
1109 ("7414785369" . edit-move)
1110 ("74148369" . edit-move)
1111 ("7414852369" . edit-move)
1112 ("741485369" . edit-move)
1113 ("74148669" . edit-move)
1114 ("741552369" . edit-move)
1115 ("741575369" . edit-move)
1116 ("7415852369" . edit-move)
1117 ("741585369" . edit-move)
1118 ("74185369" . edit-move)
1119 ("74255369" . edit-move)
1120 ("7425852369" . edit-move)
1121 ("742585369" . edit-move)
1122 ("7426963" . edit-move)
1123 ("74585369" . edit-move)
1125 ; Letter D for delete
1126 ("14786321" . edit-delete)
1127 ("14789621" . edit-delete)
1128 ("147896321" . edit-delete)
1129 ("15896321" . edit-delete)
1130 ("257896321" . edit-delete)
1131 ("25896321" . edit-delete)
1132 ("4789621" . edit-delete)
1134 ; Letter S for select
1135 ("2145987" . edit-select )
1136 ("215987" . edit-select )
1137 ("2156987" . edit-select )
1138 ("21256987" . edit-select )
1139 ("3215987" . edit-select )
1140 ("32156987" . edit-select )
1141 ("32148987" . edit-select )
1142 ("32145987" . edit-select )))
1145 ; End of stroke related keywords
1149 ; Start of keymapping related keywords
1152 ;;;; Keymapping
1154 ;; Everything is case-sensitive.  Any number of keys may be bound in
1155 ;; sequence, and each keystroke consists of a non-modifier key with
1156 ;; some number of modifiers applied.  Examples:
1158 ;;  * (global-set-key "F N" 'file-new-window)
1160 ;;    The "New Window" command will be run when an <F> is typed,
1161 ;;    followed by an <A>.
1163 ;;  * (global-set-key "<Control><Shift>A" 'edit-deselect)
1165 ;;    The "Deselect All" command will be run when the <Ctrl> and
1166 ;;    <Shift> keys are held down, and the <A> key is pressed.
1168 ;;  * (global-set-key "O <Shift>S" 'options-snapsize)
1170 ;;    The "Snap Size" dialog box will be shown when an <O> is typed,
1171 ;;    followed by an <S> typed with the <Shift> key held down.
1173 ;; Key names can be found in /usr/include/gtk-2.0/gdk/gdkkeysyms.h on
1174 ;; most Linux systems.  For other systems, please see your platform
1175 ;; documentation.
1177 ;; Later keybindings override earlier ones.
1179 (global-set-key "A C" 'add-component)
1180 (global-set-key "A A" 'add-attribute-hotkey)
1181 (global-set-key "A N" 'add-net-hotkey)
1182 (global-set-key "A U" 'add-bus-hotkey)
1183 (global-set-key "A T" 'add-text)
1184 (global-set-key "A L" 'add-line-hotkey)
1185 (global-set-key "A B" 'add-box-hotkey)
1186 (global-set-key "A I" 'add-circle-hotkey)
1187 (global-set-key "A R" 'add-arc-hotkey)
1188 (global-set-key "A P" 'add-pin-hotkey)
1189 (global-set-key "A G" 'add-picture-hotkey)
1191 (global-set-key "<Control>A" 'edit-select-all)
1192 (global-set-key "<Control><Shift>A" 'edit-deselect)
1194 (global-set-key "B" 'add-box-hotkey)
1195 (global-set-key "<Shift>B" 'add-bus-hotkey)
1196 (global-set-key "C" 'edit-copy-hotkey)
1197 (global-set-key "<Control>C" 'clipboard-copy)
1198 (global-set-key "D" 'edit-delete)
1200 (global-set-key "E <Shift>U" 'edit-undo)
1201 (global-set-key "E <Shift>R" 'edit-redo)
1202 (global-set-key "E S" 'edit-select)
1203 (global-set-key "E C" 'edit-copy-hotkey)
1204 (global-set-key "E E" 'edit-edit)
1205 (global-set-key "E Y" 'edit-mcopy-hotkey)
1206 (global-set-key "E X" 'edit-text)
1207 (global-set-key "E M" 'edit-move-hotkey)
1208 (global-set-key "E D" 'edit-delete)
1209 (global-set-key "E R" 'edit-rotate-90-hotkey)
1210 (global-set-key "E I" 'edit-mirror-hotkey)
1211 (global-set-key "E <Shift>S" 'edit-slot)
1212 (global-set-key "E O" 'edit-color)
1213 (global-set-key "E L" 'edit-lock)
1214 (global-set-key "E <Shift>L" 'edit-unlock)
1215 (global-set-key "E W" 'edit-linetype)
1216 (global-set-key "E F" 'edit-filltype)
1217 (global-set-key "E T" 'edit-translate)
1218 (global-set-key "E <Shift>colon" 'edit-invoke-macro)
1219 (global-set-key "E B" 'edit-embed)
1220 (global-set-key "E U" 'edit-unembed)
1221 (global-set-key "E P" 'edit-update)
1222 (global-set-key "E N" 'edit-show-hidden)
1224 (global-set-key "F W" 'file-new-window)
1225 (global-set-key "F N" 'file-new)
1226 (global-set-key "F O" 'file-open)
1227 (global-set-key "F S" 'file-save)
1228 (global-set-key "F E" 'page-close)
1229 (global-set-key "F A" 'file-save-as)
1230 (global-set-key "F L" 'file-save-all)
1231 (global-set-key "F P" 'file-print)
1232 (global-set-key "F R" 'page-revert)
1233 (global-set-key "F I" 'file-image)
1234 (global-set-key "F T" 'file-script)
1235 (global-set-key "F C" 'file-close-window)
1236 (global-set-key "F Q" 'file-quit)
1238 (global-set-key "H A" 'help-about)
1239 (global-set-key "H M" 'help-manual)
1240 (global-set-key "H F" 'help-faq)
1241 (global-set-key "H W" 'help-wiki)
1242 (global-set-key "H H" 'help-hotkeys)
1243 (global-set-key "H C" 'hierarchy-documentation)
1245 (global-set-key "<Shift>H D" 'hierarchy-down-schematic)
1246 (global-set-key "<Shift>H S" 'hierarchy-down-symbol)
1247 (global-set-key "<Shift>H U" 'hierarchy-up)
1248 (global-set-key "<Shift>H O" 'hierarchy-documentation)
1250 (global-set-key "I" 'add-component)
1251 (global-set-key "L" 'add-line-hotkey)
1252 (global-set-key "M" 'edit-move-hotkey)
1253 (global-set-key "N" 'add-net-hotkey)
1255 (global-set-key "O T" 'options-text-size)
1256 (global-set-key "O A" 'options-action-feedback)
1257 (global-set-key "O G" 'options-grid)
1258 (global-set-key "O S" 'options-snap)
1259 (global-set-key "O R" 'options-rubberband)
1260 (global-set-key "O M" 'options-magneticnet)
1261 (global-set-key "O <Shift>S" 'options-snap-size)
1262 (global-set-key "O L" 'options-show-log-window)
1263 (global-set-key "O C" 'options-show-coord-window)
1265 (global-set-key "P M" 'page-manager)
1266 (global-set-key "P N" 'page-next)
1267 (global-set-key "P P" 'page-prev)
1268 (global-set-key "P E" 'page-new)
1269 (global-set-key "P R" 'page-revert)
1270 (global-set-key "P C" 'page-close)
1271 (global-set-key "P D" 'page-discard)
1272 (global-set-key "P <Shift>P" 'page-print)
1274 (global-set-key "<Alt>Q" 'file-quit)
1275 (global-set-key "R" 'view-redraw)
1276 (global-set-key "<Shift>R" 'edit-redo)
1277 (global-set-key "S" 'edit-select)
1279 (global-set-key "T A" 'attributes-attach)
1280 (global-set-key "T D" 'attributes-detach)
1281 (global-set-key "T N" 'attributes-show-name)
1282 (global-set-key "T V" 'attributes-show-value)
1283 (global-set-key "T B" 'attributes-show-both)
1284 (global-set-key "T T" 'attributes-visibility-toggle)
1285 (global-set-key "T <Shift>F" 'edit-find-text)
1286 (global-set-key "T H" 'edit-hide-text)
1287 (global-set-key "T <Shift>H" 'edit-show-text)
1288 (global-set-key "T U" 'edit-autonumber)
1290 (global-set-key "U" 'edit-undo)
1291 (global-set-key "<Shift>U" 'edit-undo)
1293 (global-set-key "V R" 'view-redraw)
1294 (global-set-key "V B" 'view-zoom-box-hotkey)
1295 (global-set-key "V F" 'view-zoom-full)
1296 (global-set-key "V E" 'view-zoom-extents)
1297 (global-set-key "V P" 'view-pan-hotkey)
1298 (global-set-key "V O" 'view-zoom-out-hotkey)
1299 (global-set-key "V I" 'view-zoom-in-hotkey)
1300 (global-set-key "V D" 'view-dark-colors)
1301 (global-set-key "V L" 'view-light-colors)
1302 (global-set-key "V W" 'view-bw-colors)
1304 (global-set-key "<Control>V" 'clipboard-paste-hotkey)
1305 (global-set-key "W" 'view-zoom-box-hotkey)
1306 (global-set-key "X" 'view-pan-hotkey)
1307 (global-set-key "<Control>X" 'clipboard-cut)
1309 (global-set-key "Y C" 'buffer-copy1)
1310 (global-set-key "Y U" 'buffer-cut1)
1311 (global-set-key "Y P" 'buffer-paste1-hotkey)
1313 (global-set-key "<Control>Y" 'edit-redo)
1314 (global-set-key "Z" 'view-zoom-in-hotkey)
1315 (global-set-key "<Shift>Z" 'view-zoom-out-hotkey)
1316 (global-set-key "<Control>Z" 'edit-undo)
1318 (global-set-key "Escape" 'cancel)
1319 (global-set-key "bracketright" 'options-scale-up-snap-size)
1320 (global-set-key "bracketleft" 'options-scale-down-snap-size)
1321 (global-set-key "Left" 'view-pan-left)
1322 (global-set-key "Right" 'view-pan-right)
1323 (global-set-key "Up" 'view-pan-up)
1324 (global-set-key "Down" 'view-pan-down)
1325 (global-set-key "period" 'repeat-last-command)
1326 (global-set-key "colon" 'edit-invoke-macro)
1327 (global-set-key "comma" 'misc-misc)
1328 (global-set-key "equal" 'misc-misc2)
1329 (global-set-key "plus" 'misc-misc3)
1330 (global-set-key "Delete" 'edit-delete)
1331 (global-set-key "greater" 'page-next)
1332 (global-set-key "Page_Down" 'page-next)
1333 (global-set-key "less" 'page-prev)
1334 (global-set-key "Page_Up" 'page-prev)
1337 ; Here are the definitions for the top pull down menu bar
1339 ; The "menu item name" is the name of the item as it will appear in the menu
1340 ; The "menu action" is the scheme function which is executed when the item
1341 ; is selected off of the menu.  And "menu hotkey function" is the scheme
1342 ; function which is executed when the hotkey is pressed.  
1343 ; "menu hotkey function" has no real functionality in the menuing scheme other
1344 ; than providing the information as to what hotkey to display in the menu.
1345 ; "menu hotkey function" is not executed when you select an item off of the
1346 ; list.  The hotkeys which are displayed are defined by the global-keymap.
1347 ; Actions can have several hotkeys, but the displayed keys are the last
1348 ; ones found.
1350 ; The SEPARATOR keyword is case sensitive and puts a seperator into the menu.
1353 (or (defined? 'define-syntax)
1354     (use-modules (ice-9 syncase)))
1356 ;; Define a no-op macro for flagging strings as translatable.
1357 (define-syntax N_
1358   (syntax-rules ()
1359     ((N_ expr) expr)))
1361 (define file-menu-items
1363 ;;          menu item name      menu action             menu hotkey function    menu stock icon
1365         `( (,(N_ "_New")              file-new                file-new                "gtk-new")
1366            (,(N_ "_Open...")          file-open               file-open               "gtk-open")
1367 ;; The entry below will be removed from the menu if glib < 2.6 is detected
1368            (,(N_ "Open Recen_t")      #f                      #f                      #f)
1369            ("SEPARATOR"              #f                      #f                      #f)
1370            (,(N_ "_Save")             file-save               file-save               "gtk-save")
1371            (,(N_ "Save _As...")       file-save-as            file-save-as            "gtk-save-as")
1372            (,(N_ "Save All")          file-save-all           file-save-all           "gtk-save")
1373            (,(N_ "_Revert")           page-revert             page-revert             "gtk-revert-to-saved")
1374            ("SEPARATOR"              #f                      #f                      #f)
1375            (,(N_ "_Print...")         file-print              file-print              "gtk-print")
1376            (,(N_ "Write _image...")   file-image              file-image              #f)
1377            ("SEPARATOR"              #f                      #f                      #f)
1378            (,(N_ "Execute Script...") file-script             file-script             "gtk-execute")
1379            ("SEPARATOR"              #f                      #f                      #f)
1380            (,(N_ "New Window")        file-new-window         file-new-window         #f)
1381            (,(N_ "_Close Window")     file-close-window       file-close-window       "gtk-close")
1382            (,(N_ "_Quit")             file-quit               file-quit               "gtk-quit")))
1384 (define edit-menu-items 
1386 ;;          menu item name      menu action             menu hotkey action      menu stock icon
1388         `( (,(N_ "_Undo")              edit-undo              edit-undo               "gtk-undo")
1389            (,(N_ "_Redo")              edit-redo              edit-redo               "gtk-redo")
1390            ("SEPARATOR"               #f                     #f                      #f)
1391            (,(N_ "Cu_t")               clipboard-cut          clipboard-cut           "gtk-cut")
1392            (,(N_ "_Copy")              clipboard-copy         clipboard-copy          "gtk-copy")
1393            (,(N_ "_Paste")             clipboard-paste-hotkey clipboard-paste-hotkey  "gtk-paste")
1394            (,(N_ "_Delete")            edit-delete            edit-delete             "gtk-delete"  )
1395            ("SEPARATOR"               #f                     #f                      #f)
1396            (,(N_ "Select Mode")        edit-select            edit-select             #f)
1397            (,(N_ "Select All")         edit-select-all        edit-select-all         "gtk-select-all")
1398            (,(N_ "Deselect")           edit-deselect          edit-deselect           #f)
1399            (,(N_ "Copy Mode")          edit-copy              edit-copy-hotkey        #f)
1400            (,(N_ "Multiple Copy Mode") edit-mcopy             edit-mcopy-hotkey       #f)
1401            (,(N_ "Move Mode")          edit-move              edit-move-hotkey        #f)
1402            (,(N_ "Rotate 90 Mode")     edit-rotate-90         edit-rotate-90-hotkey   #f)
1403            (,(N_ "Mirror Mode")        edit-mirror            edit-mirror-hotkey      #f)
1404            ("SEPARATOR"               #f                     #f                      #f)
1405            (,(N_ "Edit...")            edit-edit              edit-edit               #f)
1406            (,(N_ "Edit Text...")       edit-text              edit-text               "gtk-edit")
1407            (,(N_ "Slot...")            edit-slot              edit-slot               #f)
1408            (,(N_ "Color...")           edit-color             edit-color              "gtk-select-color")
1409            (,(N_ "Line Width & Type...") edit-linetype        edit-linetype           #f)
1410            (,(N_ "Fill Type...")         edit-filltype        edit-filltype           #f)
1411            (,(N_ "Symbol Translate...")  edit-translate       edit-translate          #f)
1412            (,(N_ "Lock")               edit-lock              edit-lock               #f)
1413            (,(N_ "Unlock")             edit-unlock            edit-unlock             #f)
1414            ("SEPARATOR"               #f                     #f                      #f)
1415            (,(N_ "Invoke Macro")         edit-invoke-macro    edit-invoke-macro       #f)
1416            (,(N_ "Embed Component/Picture")    edit-embed     edit-embed              #f)
1417            (,(N_ "Unembed Component/Picture")  edit-unembed   edit-unembed            #f)
1418            (,(N_ "Update Component")   edit-update            edit-update             "gtk-refresh")
1419            (,(N_ "Show/Hide Inv Text") edit-show-hidden       edit-show-hidden        #f)))
1421 (define buffer-menu-items 
1423 ;;          menu item name      menu action             menu hotkey action      menu stock icon
1425         `( (,(N_ "Copy into 1") buffer-copy1            buffer-copy1)
1426            (,(N_ "Copy into 2") buffer-copy2            buffer-copy2)
1427            (,(N_ "Copy into 3") buffer-copy3            buffer-copy3)
1428            (,(N_ "Copy into 4") buffer-copy4            buffer-copy4)
1429            (,(N_ "Copy into 5") buffer-copy5            buffer-copy5)
1430            (,(N_ "Cut into 1")  buffer-cut1             buffer-cut1)
1431            (,(N_ "Cut into 2")  buffer-cut2             buffer-cut2)
1432            (,(N_ "Cut into 3")  buffer-cut3             buffer-cut3)
1433            (,(N_ "Cut into 4")  buffer-cut4             buffer-cut4)
1434            (,(N_ "Cut into 5")  buffer-cut5             buffer-cut5)
1435            (,(N_ "Paste from 1")        buffer-paste1-hotkey    buffer-paste1-hotkey)
1436            (,(N_ "Paste from 2")        buffer-paste2-hotkey    buffer-paste2-hotkey)
1437            (,(N_ "Paste from 3")        buffer-paste3-hotkey    buffer-paste3-hotkey)
1438            (,(N_ "Paste from 4")        buffer-paste4-hotkey    buffer-paste4-hotkey)
1439            (,(N_ "Paste from 5")        buffer-paste5-hotkey    buffer-paste5-hotkey)))
1441 (define view-menu-items 
1443 ;;          menu item name        menu action             menu hotkey action      menu stock icon
1445         `( (,(N_ "_Redraw")             view-redraw             view-redraw             "gtk-refresh")
1446            (,(N_ "_Pan")                view-pan                view-pan-hotkey         #f)
1447            (,(N_ "Zoom _Box")           view-zoom-box           view-zoom-box-hotkey    #f)
1448            (,(N_ "Zoom _Extents")       view-zoom-extents       view-zoom-extents       "gtk-zoom-fit")
1449            (,(N_ "Zoom _In")            view-zoom-in            view-zoom-in-hotkey     "gtk-zoom-in")
1450            (,(N_ "Zoom _Out")           view-zoom-out           view-zoom-out-hotkey    "gtk-zoom-out")
1451            (,(N_ "Zoom _Full")          view-zoom-full          view-zoom-full          #f)
1452            ("SEPARATOR"                #f                      #f                      #f)
1453            (,(N_ "_Dark color scheme")  view-dark-colors        view-dark-colors        #f)
1454            (,(N_ "_Light color scheme") view-light-colors       view-light-colors       #f)
1455            (,(N_ "B_W color scheme")    view-bw-colors          view-bw-colors          #f)
1456          ))
1458 (define page-menu-items 
1460 ;;          menu item name      menu action             menu hotkey action      menu stock icon
1462         `( (,(N_ "_Manager...")       page-manager            page-manager            #f)
1463            (,(N_ "_Previous")         page-prev               page-prev               "gtk-go-back")
1464            (,(N_ "_Next")             page-next               page-next               "gtk-go-forward")
1465            (,(N_ "Ne_w")              page-new                page-new                "gtk-new")
1466            (,(N_ "_Revert")           page-revert             page-revert             "gtk-revert-to-saved")
1467            (,(N_ "_Close")            page-close              page-close              "gtk-close")
1468            ("SEPARATOR"              #f                      #f                      #f)
1469            (,(N_ "_Discard")          page-discard            page-discard            "gtk-discard")))
1471 (define add-menu-items 
1473 ;;          menu item name      menu action             menu hotkey action      menu stock icon
1475         `( (,(N_ "_Component...")     add-component             add-component)
1476            (,(N_ "_Net")              add-net                   add-net-hotkey)
1477            (,(N_ "B_us")              add-bus                   add-bus-hotkey)
1478            (,(N_ "_Attribute...")     add-attribute             add-attribute-hotkey)
1479            (,(N_ "_Text...")          add-text                  add-text)
1480            ("SEPARATOR"              #f                      #f)
1481            (,(N_ "_Line")             add-line                  add-line-hotkey)
1482            (,(N_ "_Box")              add-box           add-box-hotkey)
1483            (,(N_ "C_ircle")           add-circle                add-circle-hotkey)
1484            (,(N_ "A_rc")              add-arc           add-arc-hotkey)
1485            (,(N_ "_Pin")              add-pin           add-pin-hotkey)
1486            (,(N_ "Pictu_re...")       add-picture               add-picture-hotkey)))
1488 (define hierarchy-menu-items 
1490 ;;          menu item name      menu action               menu hotkey action        menu stock icon
1492         `( (,(N_ "_Down Schematic")   hierarchy-down-schematic  hierarchy-down-schematic  "gtk-go-down")
1493            (,(N_ "Down _Symbol")      hierarchy-down-symbol     hierarchy-down-symbol     "gtk-goto-bottom")
1494            (,(N_ "_Up")               hierarchy-up              hierarchy-up              "gtk-go-up")
1495            (,(N_ "D_ocumentation...") hierarchy-documentation   hierarchy-documentation   #f)))
1497 (define attributes-menu-items 
1499 ;;          menu item name      menu action             menu hotkey action      menu stock icon
1501         `( (,(N_ "_Attach")           attributes-attach       attributes-attach       #f)
1502            (,(N_ "_Detach")           attributes-detach       attributes-detach       #f)
1503            (,(N_ "Show _Value")       attributes-show-value   attributes-show-value   #f)
1504            (,(N_ "Show _Name")        attributes-show-name    attributes-show-name    #f)
1505            (,(N_ "Show _Both")        attributes-show-both    attributes-show-both    #f)
1506            (,(N_ "_Toggle Visibility")  attributes-visibility-toggle
1507                                   attributes-visibility-toggle                  #f)
1508            (,(N_ "_Find Specific Text...")  edit-find-text    edit-find-text          "gtk-find")
1509            (,(N_ "_Hide Specific Text...")  edit-hide-text    edit-hide-text          #f)
1510            (,(N_ "_Show Specific Text...")  edit-show-text    edit-show-text          #f)
1511            (,(N_ "A_utonumber Text...")     edit-autonumber   edit-autonumber         #f)))
1513 (define options-menu-items 
1515 ;;          menu item name      menu action             menu hotkey action      menu stock icon
1517         `( (,(N_ "_Text Size...")       options-text-size       options-text-size)
1518            (,(N_ "Cycle _grid styles")  options-grid           options-grid)
1519            (,(N_ "Toggle _Snap On/Off") options-snap            options-snap)
1520            (,(N_ "Snap Grid S_pacing...") options-snap-size     options-snap-size)
1521            (,(N_ "Scale _up Grid Spacing") options-scale-up-snap-size 
1522                                                     options-scale-up-snap-size)
1523            (,(N_ "Scale _down Grid Spacing") options-scale-down-snap-size
1524                                                   options-scale-down-snap-size)
1525            (,(N_ "Toggle _Outline/Box")   options-action-feedback       
1526                                    options-action-feedback)
1527            (,(N_ "Toggle Net _Rubberband") options-rubberband   options-rubberband)
1528            (,(N_ "Toggle _Magnetic Net") options-magneticnet options-magneticnet)
1529            (,(N_ "Show _Log Window...")    options-show-log-window   
1530                                     options-show-log-window)
1531            (,(N_ "Show _Coord Window...")   options-show-coord-window   
1532                                      options-show-coord-window)))
1534 (define help-menu-items 
1536 ;;          menu item name                menu action               menu hotkey action        menu stock icon
1538         `(
1539            (,(N_ "gEDA Docu_mentation...") help-manual               help-manual               "gtk-help")
1540            (,(N_ "gschem _FAQ...")         help-faq                  help-faq                  #f)
1541            (,(N_ "gEDA _Wiki...")          help-wiki                 help-wiki                 #f)
1542            (,(N_ "Component D_ocumentation...") hierarchy-documentation   hierarchy-documentation   #f)
1543            ("SEPARATOR"                   #f                        #f                        #f)
1544            (,(N_ "_Hotkeys...")            help-hotkeys              help-hotkeys              #f)
1545            (,(N_ "_About...")              help-about                help-about                "gtk-about")))
1548 ; Now actually add the menus.  The order here defines the order in which
1549 ; the menus appear in the top menu bar.
1551 (add-menu (N_ "_File") file-menu-items)
1552 (add-menu (N_ "_Edit") edit-menu-items)
1553 (add-menu (N_ "_Buffer") buffer-menu-items)
1554 (add-menu (N_ "_View") view-menu-items)
1555 (add-menu (N_ "_Page") page-menu-items)
1556 (add-menu (N_ "_Add") add-menu-items)
1557 (add-menu (N_ "Hie_rarchy") hierarchy-menu-items)
1558 (add-menu (N_ "A_ttributes") attributes-menu-items)
1559 (add-menu (N_ "_Options") options-menu-items)
1560 (add-menu (N_ "_Help") help-menu-items)
1563 ; End of keymapping related keywords
1568 ;; Major modes
1571 ;; Comment in this scheme code if you want to link with pcb
1573 ;; Please note that the code in pcb.scm is still highly experimental
1574 ;; and there are known (and easy) ways to crash pcb and/or gschem with this code.
1575 ;; The short answer is neither program likes a pipe to break.
1577 ; (load-from-path "pcb.scm")