Index: trunk/doc/conf/tree/appearance_color.html =================================================================== --- trunk/doc/conf/tree/appearance_color.html (revision 7522) +++ trunk/doc/conf/tree/appearance_color.html (revision 7523) @@ -27,4 +27,5 @@ layer_selected color 0 warn color 0 mask color 0 + paste color 0 Index: trunk/doc/conf/tree/editor.html =================================================================== --- trunk/doc/conf/tree/editor.html (revision 7522) +++ trunk/doc/conf/tree/editor.html (revision 7523) @@ -38,6 +38,7 @@ local_ref boolean 0 use local reference for moves, by setting the mark at the beginning of each move. check_planes boolean 0 when set, only polygons and their clearances are drawn, to see if polygons have isolated regions. show_mask boolean 0 show the solder mask layer + show_paste boolean 0 show the solder paste layer hide_names boolean 0 when set, element names are not drawn. description boolean 0 display element description as element name, instead of value name_on_pcb boolean 0 display Reference Designator as element name, instead of value Index: trunk/src/board.c =================================================================== --- trunk/src/board.c (revision 7522) +++ trunk/src/board.c (revision 7523) @@ -186,6 +186,7 @@ ptr->ViaSelectedColor = conf_core.appearance.color.via_selected; ptr->WarnColor = conf_core.appearance.color.warn; ptr->MaskColor = conf_core.appearance.color.mask; + ptr->PasteColor = conf_core.appearance.color.paste; for (i = 0; i < PCB_MAX_LAYER; i++) { ptr->Data->Layer[i].Color = conf_core.appearance.color.layer[i]; ptr->Data->Layer[i].SelectedColor = conf_core.appearance.color.layer_selected[i]; Index: trunk/src/board.h =================================================================== --- trunk/src/board.h (revision 7522) +++ trunk/src/board.h (revision 7523) @@ -81,7 +81,7 @@ *ElementColor_nonetlist, *RatColor, *InvisibleObjectsColor, - *InvisibleMarkColor, *ElementSelectedColor, *RatSelectedColor, *ConnectedColor, *WarnColor, *MaskColor; + *InvisibleMarkColor, *ElementSelectedColor, *RatSelectedColor, *ConnectedColor, *WarnColor, *MaskColor, *PasteColor; pcb_coord_t CursorX, /* cursor position as saved with layout */ CursorY; pcb_coord_t Bloat, /* drc sizes saved with layout */ Index: trunk/src/conf_core.h =================================================================== --- trunk/src/conf_core.h (revision 7522) +++ trunk/src/conf_core.h (revision 7523) @@ -51,6 +51,7 @@ CFT_BOOLEAN local_ref; /* use local reference for moves, by setting the mark at the beginning of each move. */ CFT_BOOLEAN check_planes; /* when set, only polygons and their clearances are drawn, to see if polygons have isolated regions. */ CFT_BOOLEAN show_mask; /* show the solder mask layer */ + CFT_BOOLEAN show_paste; /* show the solder paste layer */ CFT_BOOLEAN hide_names; /* when set, element names are not drawn. */ CFT_BOOLEAN description; /* display element description as element name, instead of value */ CFT_BOOLEAN name_on_pcb; /* display Reference Designator as element name, instead of value */ @@ -187,6 +188,7 @@ CFT_COLOR layer_selected[PCB_MAX_LAYER]; CFT_COLOR warn; CFT_COLOR mask; + CFT_COLOR paste; } color; struct pinout { CFT_INTEGER name_length; Index: trunk/src/funchash_core_list.h =================================================================== --- trunk/src/funchash_core_list.h (revision 7522) +++ trunk/src/funchash_core_list.h (revision 7523) @@ -99,6 +99,7 @@ action_entry(ToggleHideNames) action_entry(ToggleMinCut) action_entry(ToggleMask) +action_entry(TogglePaste) action_entry(ToggleName) action_entry(ToggleObject) action_entry(ToggleShowDRC) Index: trunk/src/gui_act.c =================================================================== --- trunk/src/gui_act.c (revision 7522) +++ trunk/src/gui_act.c (revision 7523) @@ -58,7 +58,7 @@ "Display(Grid|Redraw)\n" "Display(CycleClip|CycleCrosshair|ToggleAllDirections|ToggleStartDirection)\n" "Display(ToggleGrid|ToggleRubberBandMode|ToggleUniqueNames)\n" - "Display(ToggleMask|ToggleName|ToggleClearLine|ToggleFullPoly)\n" + "Display(ToggleMask|TogglePaste|ToggleName|ToggleClearLine|ToggleFullPoly)\n" "Display(ToggleSnapPin|ToggleSnapOffGridLine|ToggleHighlightOnPoint)\n" "Display(ToggleThindraw|ToggleThindrawPoly|ToggleOrthoMove|ToggleLocalRef)\n" "Display(ToggleCheckPlanes|ToggleShowDRC|ToggleAutoDRC)\n" @@ -164,6 +164,9 @@ @item ToggleMask Turns the solder mask on or off. +@item TogglePaste +Turns the solder paste on or off. + @item ToggleClearLine When set, the clear-line flag causes new lines and arcs to have their ``clear polygons'' flag set, so they won't be electrically connected @@ -410,6 +413,11 @@ pcb_redraw(); break; + case F_TogglePaste: + conf_toggle_editor(show_paste); + pcb_redraw(); + break; + case F_ToggleClearLine: conf_toggle_editor(clear_line); break; Index: trunk/src/layer_vis.c =================================================================== --- trunk/src/layer_vis.c (revision 7522) +++ trunk/src/layer_vis.c (revision 7523) @@ -97,6 +97,7 @@ PCB->RatOn = pcb_false; conf_set_editor(show_mask, 0); + conf_set_editor(show_paste, 0); conf_set_editor(show_solder_side, 0); for (i = argn - 1; i >= 0; i--) { @@ -112,6 +113,8 @@ PCB->ElementOn = pcb_true; else if (pcb_strcasecmp(args[i], "mask") == 0) conf_set_editor(show_mask, 1); + else if (pcb_strcasecmp(args[i], "paste") == 0) + conf_set_editor(show_paste, 1); else if (pcb_strcasecmp(args[i], "solderside") == 0) conf_set_editor(show_solder_side, 1); else if (isdigit((int) args[i][0])) { Index: trunk/src/obj_pad.c =================================================================== --- trunk/src/obj_pad.c (revision 7522) +++ trunk/src/obj_pad.c (revision 7523) @@ -441,7 +441,7 @@ /* draws solder paste layer for a given side of the board - only pads get paste */ void DrawPaste(int side, const pcb_box_t * drawn_area) { - pcb_gui->set_color(Output.fgGC, PCB->ElementColor); + pcb_gui->set_color(Output.fgGC, PCB->PasteColor); PCB_PAD_ALL_LOOP(PCB->Data); { if (PCB_ON_SIDE(pad, side) && !PCB_FLAG_TEST(PCB_FLAG_NOPASTE, pad) && pad->Mask > 0) { Index: trunk/src/pcb-conf.lht =================================================================== --- trunk/src/pcb-conf.lht (revision 7522) +++ trunk/src/pcb-conf.lht (revision 7523) @@ -62,6 +62,7 @@ local_ref = 0 check_planes = 0 show_mask = 0 + show_paste = 0 hide_names = 0 description = 0 name_on_pcb = 0 @@ -206,6 +207,7 @@ } warn = {#ff8000} mask = {#ff0000} + paste = {#cd00cd} } ha:pinout { # name_length = 0 Index: trunk/src_plugins/hid_gtk/gtkhid-gl.c =================================================================== --- trunk/src_plugins/hid_gtk/gtkhid-gl.c (revision 7522) +++ trunk/src_plugins/hid_gtk/gtkhid-gl.c (revision 7523) @@ -138,7 +138,10 @@ if (PCB_LAYERFLG_ON_VISIBLE_SIDE(flags)) return conf_core.editor.show_mask; return 0; - case PCB_LYT_PASTE: /* Never draw the paste layer */ + case PCB_LYT_PASTE: + priv->trans_lines = pcb_true; + if (PCB_LAYERFLG_ON_VISIBLE_SIDE(flags)) + return conf_core.editor.show_paste; return 0; } Index: trunk/src_plugins/lib_gtk_common/bu_layer_selector.c =================================================================== --- trunk/src_plugins/lib_gtk_common/bu_layer_selector.c (revision 7522) +++ trunk/src_plugins/lib_gtk_common/bu_layer_selector.c (revision 7523) @@ -52,8 +52,9 @@ #define LAYER_BUTTON_VIAS (PCB_MAX_LAYER + 3) #define LAYER_BUTTON_FARSIDE (PCB_MAX_LAYER + 4) #define LAYER_BUTTON_MASK (PCB_MAX_LAYER + 5) -#define LAYER_BUTTON_UI (PCB_MAX_LAYER + 6) -#define N_LAYER_BUTTONS (PCB_MAX_LAYER + 7) +#define LAYER_BUTTON_PASTE (PCB_MAX_LAYER + 6) +#define LAYER_BUTTON_UI (PCB_MAX_LAYER + 7) +#define N_LAYER_BUTTONS (PCB_MAX_LAYER + 8) /* --------------------------------------------------------------------------- @@ -116,6 +117,11 @@ *text = _("solder mask"); *set = conf_core.editor.show_mask; break; + case LAYER_BUTTON_PASTE: + *color_string = conf_core.appearance.color.paste; + *text = _("solder paste"); + *set = conf_core.editor.show_paste; + break; case LAYER_BUTTON_UI: default: /* layers */ if (i >= LAYER_BUTTON_UI) { @@ -201,6 +207,13 @@ conf_set_editor(show_mask, 0); redraw = TRUE; break; + case LAYER_BUTTON_PASTE: + if (active) + conf_set_editor(show_paste, 1); + else + conf_set_editor(show_paste, 0); + redraw = TRUE; + break; default: /* Flip the visibility */ if (layer >= LAYER_BUTTON_UI) { @@ -249,6 +262,8 @@ pcb_gtk_layer_selector_add_layer(layersel, LAYER_BUTTON_FARSIDE, text, color_string, active, FALSE); layer_process(&color_string, &text, &active, LAYER_BUTTON_MASK); pcb_gtk_layer_selector_add_layer(layersel, LAYER_BUTTON_MASK, text, color_string, active, FALSE); + layer_process(&color_string, &text, &active, LAYER_BUTTON_PASTE); + pcb_gtk_layer_selector_add_layer(layersel, LAYER_BUTTON_PASTE, text, color_string, active, FALSE); numui = pcb_layer_list(PCB_LYT_UI, ui, sizeof(ui) / sizeof(ui[0])); for (n = 0; n < numui; n++) { @@ -350,6 +365,8 @@ l = LAYER_BUTTON_VIAS; else if (strcmp(argv[0], "Mask") == 0) l = LAYER_BUTTON_MASK; + else if (strcmp(argv[0], "Paste") == 0) + l = LAYER_BUTTON_PASTE; else if (strcmp(argv[0], "BackSide") == 0) l = LAYER_BUTTON_FARSIDE; else {