On 10/27/09, Ineiev <[email protected]> wrote: > Try the attached patch; it introduces SwapSides_nogui action for such Awfully sorry, forgot to commit a typo fix; and there is no need in `compatible' with GTK and Lesstif hids arguments parsing.
BTW, it seems to me that it does not really changes the groups visibility: I press Tab with `component' layer from the component group active and see the same `component' above all; the pads are shown from the right side, though. am I doing something wrong? I stack the patches on top of current master.
From 303def6c5467f63383b58b5fe0353dd97415e647 Mon Sep 17 00:00:00 2001 From: Ineiev <[email protected]> Date: Tue, 27 Oct 2009 03:05:47 +0000 Subject: [PATCH] Add SwapSides_nogui action The action is similar to SwapSides, but it depends on no real GUI, so can have effect when running an exporter from command line or with batch GUI. --- src/action.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 63 insertions(+), 0 deletions(-) diff --git a/src/action.c b/src/action.c index 6b979d3..9ac52e8 100644 --- a/src/action.c +++ b/src/action.c @@ -6793,6 +6793,66 @@ ActionPSCalib (int argc, char **argv, int x, int y) return 0; } +/* ---------------------------------------------------------------------- */ +static const char swapsides_syntax[] = +"SwapSides_nogui()"; + +static const char swapsides_help[] = +"Swaps the side of the board you're looking at."; + +/* %start-doc actions SwapSides_nogui + +This action shows the opposite side of the board: version +for scripts when there is no GUI. + +Normally, this action changes which pads and silk layer are drawn as +true silk, and which are drawn as the "invisible" layer. It also +determines which solder mask you see. + +As a special case, if the layer group for the side you're looking at +is visible and currently active, and the layer group for the opposite +is not visible (i.e. disabled), then this action will also swap which +layer group is visible and active, effectively swapping the ``working +side'' of the board. + +%end-doc */ + +static int +SwapSides_nogui (int argc, char **argv, int x, int y) +{ + int comp_group = GetLayerGroupNumberByNumber (max_layer + COMPONENT_LAYER); + int solder_group = GetLayerGroupNumberByNumber (max_layer + SOLDER_LAYER); + int active_group = GetLayerGroupNumberByNumber (LayerStack[0]); + int comp_showing = + PCB->Data->Layer[PCB->LayerGroups.Entries[comp_group][0]].On; + int solder_showing = + PCB->Data->Layer[PCB->LayerGroups.Entries[solder_group][0]].On; + + Settings.ShowSolderSide = !Settings.ShowSolderSide; + if (Settings.ShowSolderSide) + { + if (active_group == comp_group && comp_showing && !solder_showing) + { + ChangeGroupVisibility (PCB->LayerGroups.Entries[comp_group][0], 0, + 0); + ChangeGroupVisibility (PCB->LayerGroups.Entries[solder_group][0], 1, + 1); + } + } + else + { + if (active_group == solder_group && solder_showing && !comp_showing) + { + ChangeGroupVisibility (PCB->LayerGroups.Entries[solder_group][0], 0, + 0); + ChangeGroupVisibility (PCB->LayerGroups.Entries[comp_group][0], 1, + 1); + } + } + + return 0; +} + /* --------------------------------------------------------------------------- */ HID_Action action_action_list[] = { @@ -6931,6 +6991,9 @@ HID_Action action_action_list[] = { {"SetValue", 0, ActionSetValue, setvalue_help, setvalue_syntax} , + {"SwapSides_nogui", 0, SwapSides_nogui, + swapsides_help, swapsides_syntax} + , {"ToggleHideName", 0, ActionToggleHideName, togglehidename_help, togglehidename_syntax} , -- 1.6.4.1
_______________________________________________ geda-user mailing list [email protected] http://www.seul.org/cgi-bin/mailman/listinfo/geda-user

