Index: trunk/src/action.c =================================================================== --- trunk/src/action.c (revision 49) +++ trunk/src/action.c (revision 50) @@ -4824,6 +4824,59 @@ /* --------------------------------------------------------------------------- */ +static const char changenonetlist_syntax[] = + "ChangeNonetlist(ToggleObject)\n" + "ChangeNonetlist(SelectedElements)\n" + "ChangeNonetlist(Selected|SelectedObjects)"; + +static const char changenonetlist_help[] = + "Changes the nonetlist flag of elements."; + +/* %start-doc actions ChangeNonetlist + +Note that @code{Pins} means both pins and pads. + +@pinshapes + +%end-doc */ + +static int +ActionChangeNonetlist (int argc, char **argv, Coord x, Coord y) +{ + char *function = ARG (0); + if (function) + { + switch (GetFunctionID (function)) + { + case F_ToggleObject: + case F_Object: + case F_Element: + { + int type; + void *ptr1, *ptr2, *ptr3; + gui->get_coords (_("Select an Element"), &x, &y); + + ptr3 = NULL; + type = SearchScreen (x, y, CHANGENONETLIST_TYPES, + &ptr1, &ptr2, &ptr3); + if (ChangeObjectNonetlist (type, ptr1, ptr2, ptr3)) + SetChangedFlag (true); + break; + } + case F_SelectedElements: + case F_Selected: + case F_SelectedObjects: + if (ChangeSelectedNonetlist (ELEMENT_TYPE)) + SetChangedFlag (true); + break; + } + } + return 0; +} + + +/* --------------------------------------------------------------------------- */ + static const char changesquare_syntax[] = "ChangeSquare(ToggleObject)\n" "ChangeSquare(SelectedElements|SelectedPins)\n" @@ -8022,6 +8075,9 @@ {"ChangeSize", 0, ActionChangeSize, changesize_help, changesize_syntax} , + {"ChangeNonetlist", 0, ActionChangeNonetlist, + changenonetlist_help, changenonetlist_syntax} + , {"ChangeSquare", 0, ActionChangeSquare, changesquare_help, changesquare_syntax} , Index: trunk/src/change.c =================================================================== --- trunk/src/change.c (revision 49) +++ trunk/src/change.c (revision 50) @@ -93,6 +93,7 @@ static void *ChangeViaName (PinTypePtr); static void *ChangeLineName (LayerTypePtr, LineTypePtr); static void *ChangeElementName (ElementTypePtr); +static void *ChangeElementNonetlist (ElementTypePtr); static void *ChangeTextName (LayerTypePtr, TextTypePtr); static void *ChangeElementSquare (ElementTypePtr); static void *SetElementSquare (ElementTypePtr); @@ -215,6 +216,20 @@ NULL, NULL }; +static ObjectFunctionType ChangeNonetlistFunctions = { + NULL, + NULL, + NULL, + NULL, + ChangeElementNonetlist, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; static ObjectFunctionType ChangeJoinFunctions = { ChangeLineJoin, ChangeTextJoin, @@ -1058,6 +1073,15 @@ return ChangeElementText (PCB, PCB->Data, Element, NAME_INDEX (PCB), NewName); } +static void * +ChangeElementNonetlist (ElementTypePtr Element) +{ + if (TEST_FLAG (LOCKFLAG, Element)) + return (NULL); + TOGGLE_FLAG(NONETLISTFLAG, Element); + return Element; +} + /* --------------------------------------------------------------------------- * sets data of a text object and calculates bounding box * memory must have already been allocated @@ -1813,6 +1837,62 @@ } /* ---------------------------------------------------------------------- + * changes the nonetlist-flag of all selected and visible elements + * returns true if anything has changed + */ +bool +ChangeSelectedNonetlist (int types) +{ + bool change = false; + + change = SelectedOperation (&ChangeNonetlistFunctions, false, types); + if (change) + { + Draw (); + IncrementUndoSerialNumber (); + } + return (change); +} + +#if 0 +/* ---------------------------------------------------------------------- + * sets the square-flag of all selected and visible pins or pads + * returns true if anything has changed + */ +bool +SetSelectedNonetlist (int types) +{ + bool change = false; + + change = SelectedOperation (&SetNonetlistFunctions, false, types); + if (change) + { + Draw (); + IncrementUndoSerialNumber (); + } + return (change); +} + +/* ---------------------------------------------------------------------- + * clears the square-flag of all selected and visible pins or pads + * returns true if anything has changed + */ +bool +ClrSelectedNonetlist (int types) +{ + bool change = false; + + change = SelectedOperation (&ClrNonetlistFunctions, false, types); + if (change) + { + Draw (); + IncrementUndoSerialNumber (); + } + return (change); +} +#endif + +/* ---------------------------------------------------------------------- * changes the square-flag of all selected and visible pins or pads * returns true if anything has changed */ @@ -2164,6 +2244,23 @@ * Returns true if anything is changed */ bool +ChangeObjectNonetlist (int Type, void *Ptr1, void *Ptr2, void *Ptr3) +{ + if (ObjectOperation (&ChangeNonetlistFunctions, Type, Ptr1, Ptr2, Ptr3) != + NULL) + { + Draw (); + IncrementUndoSerialNumber (); + return (true); + } + return (false); +} + +/* --------------------------------------------------------------------------- + * changes the square-flag of the passed object + * Returns true if anything is changed + */ +bool ChangeObjectSquare (int Type, void *Ptr1, void *Ptr2, void *Ptr3, int style) { Absolute = style; Index: trunk/src/change.h =================================================================== --- trunk/src/change.h (revision 49) +++ trunk/src/change.h (revision 50) @@ -50,6 +50,9 @@ #define CHANGECLEARSIZE_TYPES \ (PIN_TYPE | PAD_TYPE | VIA_TYPE | LINE_TYPE | ARC_TYPE | POLYGON_TYPE) +#define CHANGENONETLIST_TYPES \ + (ELEMENT_TYPE) + #define CHANGESQUARE_TYPES \ (ELEMENT_TYPE | PIN_TYPE | PAD_TYPE) @@ -74,6 +77,7 @@ bool ChangeSelectedJoin (int); bool SetSelectedJoin (int); bool ClrSelectedJoin (int); +bool ChangeSelectedNonetlist (int); bool ChangeSelectedSquare (int); bool SetSelectedSquare (int); bool ClrSelectedSquare (int); @@ -98,6 +102,7 @@ bool ChangeObjectJoin (int, void *, void *, void *); bool SetObjectJoin (int, void *, void *, void *); bool ClrObjectJoin (int, void *, void *, void *); +bool ChangeObjectNonetlist (int Type, void *Ptr1, void *Ptr2, void *Ptr3); bool ChangeObjectSquare (int, void *, void *, void *, int); bool SetObjectSquare (int, void *, void *, void *); bool ClrObjectSquare (int, void *, void *, void *); Index: trunk/src/gpcb-menu.res.in =================================================================== --- trunk/src/gpcb-menu.res.in (revision 49) +++ trunk/src/gpcb-menu.res.in (revision 50) @@ -104,6 +104,9 @@ {"CurrentLayer" Attributes(Layer)} {"Element" Attributes(Element)} } + {"Change flags" + {"Nonetlist" ChangeNonetlist(Element) a={"Alt-N" "Altn"}} + } - {"Route Styles" @routestyles -