0.8.2 alpha3 (r4136) ~~~~~~~~~~~~~~~~~~~~ [boxsym-rnd] -Update: use attribute -symbol-generator instead of symbol_generator to avoid collisoin (and dash for consistency) [build] -Fix: explicit rule for building load_cache object -Fix: explicit rule for building src_3rd ttf_bbox's mapper [doc] -Fix: do not hardwire UID as means of reference from abstract to concrete model, leave the decision to the implementor -Change: rewrite attribute source syntax to make the GUI be able to trace back sources -Add: release procedure imported from pcb-rnd, tuned for sch-rnd alpha state -Add: explain that the indirect subtree hosts different group types, including devmap -Add: explain the first level of groups within the indirect subtree -Add: document how --layers works -Add: computer readable tables of query fields for concrete objects; generated html version -Add: query: copy relevant parts for functions from pcb-rnd doc -Add: portmap & devmap & display name document -Add: document loclib_name field for groups -Add: attribute key prefix '-' and '+' to control merging -Add: devmap file format -Add: document child_xform [examples] -Del: old project file example - we've switched to config-tree-based project files -Fix: portmap example slot2.lht: specify the portmap only once -Fix: remove redundant copies of the titlebox -Update: switch over from slot to -slot attrib avoiding attrib collision -Add: include devmap loclib in devmap example (devmap loclib is mandatory) [export_lpr] -Add: print (using generic lpr implementation from librnd) [export_png] -Change: switch over from local copy of draw_png to using librnd 3.2.0's pixmap draw plugin -Add: --layers [export_ps] -Change: switch over from local copy of ps/eps draw code to librnd's lib_exp_text -Add: depend on lib_exp_text -Add: --layers for ps and eps [export_svg] -Change: switch over from local copy of ps/eps draw code to librnd's lib_exp_text -Add: depend on lib_exp_text -Add: --layers [gui] -Fix: potential NULL pointer deref on load -Fix: overwrite sheet's loadname on save as to keep it in sync (not on plain save) -Fix: invalidate_all() after compile - a lot of dyntext has changed -Fix: compile button invokes the action not with the project that was active at setting up GUI but the project that's active at the moment (the user may have switched in multi-sheet setup) -Import: title.c from pcb-rnd to set app top window title -Add: action for relative-switching sheets -Add: adapt title.c for sch-rnd -Add: sheet selector (multi-sheet support) [io_geda] -Fix: more detailed error messages in path parsing -Fix: separator in H path xy coords is not comma but space [io_lihata] -Fix: project file header to match pcb-rnd's -Del: remove old project file loading - switched to librnd -Cleanup: switch over from csch_message() to rnd_message() -Add: save/load conf subtree to/from sheet file -Add: load and save group ->loclib_name -Add: accept coraleda project in test-parse [lib] -Fix: export util: determine default export file name using loadname of the sheet, not realname (makes a difference if sheet is a symlink) -Fix: when creating dummy project file, make sure the the proper dummy lihata doc is created for it -Fix: reverse prio levels of plugins - order should be from lower prio (larger integer) to higher prio (smaller integer) according to the spec -Fix: attrib source type is not a single char but a string (to match the spec) -Fix: uninitialized stack var caused wrong net name for comparison/log in wirenet merge -Fix: segf when compiling on unsaved page -Fix: compile: when a group ref overwrites an attribute of the referee with the same prio, that's not a compilation error, simple skip the write -Del: local implementation of project file name calculation (csch_project_name_by_sheet_name()) -> use librnd's -Del: get rid of local message.[ch] implementation in favor of librnd's -Change: high level attrib code always gets source as pointer, so that allocation can be simplified in a subsequent commit -Change: make struct csch_source_arg_s opaque, making the allocation scheme an internal business of the attrib code -Change: make connections layer visible by default -Optimize: simplify temp attrib source allocation, save two malloc()s -Move: local lib support, remember loclib_name, centrally allocate loclibs -Add: library changed event -Add: layer visibility table for default exports -Add: temporary workaround until librnd4.0.0: LoadFrom() uses multi.h API to load multiple sheets instead of replacing current sheet -Add: csch_lib_clear_sheet_lib() - will be useful for cleaning the library before a global rehash -Add: preview_text hook for library backends, so non-symlib implementations can get something displayed in the library window -Add: unset dummy bit on project file when it's written out by librnd -Add: compiler: implement attribute collision rules, introducing the '-' prefix for omitting attribute promotion -Add: run standard attribute compilation on ports -Add: API for attribute source decompile -Add: utility function for embedding a group_ref (converting it into a group) - floater transformation not yet done -Add: function to remove a lib entry from the tree -Add: new drawing layer for symbol meta (bbox & status) [library] -Update: prefix all the misc attributes with the a minus sign so they are not promoted to the component [propedit] -Fix: don't let group ref child objects changed [query] -Fix: clean up user functions before compilation instead of expecting the previous compilation succeeded -Fix: throw error message if there's user function in expression -Fix: report compilation errors using rnd_message() instead of --debug-only trace -Fix: reset lex buffer before parsing a new script (matters after a compilation error) -Add: include last seen line number in compilation error report [scconfig] -Fix: use configure .sch-rnd dot dir (under $HOME) instead of hardwired string -Cleanup: switch over to use /local/csch instead of /local/pcb in the db tree [sch-rnd] -Fix: uninit gui support plugin before unloading all plugins so that it won't hold its deps back with refco and every plugin is properly uninited and unloaded -Fix: typo in buffer code: when buffer place event took over creating the target object, take the right object for result -Fix: set rnd_render in expose_main() so that gui exporting works -Fix: buffer paste at 0;0 should call group update with xform (there's no move that would do that) -Fix: arrow tool shift-click on selected object should unselect it -Cleanup: remove code dups with pcb-rnd, using librnd's new exec prefix helper -Cleanup: move export helper function from sch-rnd.c to export.c -Change: use our own app's config prefix in the default conf for clarity -Add: explicit rule for compiling src_3rd/libuundo objects -Add: print runtime librnd version as well -Add: make it possible to render (draw) using local layer visibility instead of the current GUI's (required for reliable exports) -Add: export helper: interpret a layer visibility description string and set xform visibility accordingly -Add: export menu -Add: print menu -Add: multisheet: temporary code for switching sheets by saving/loading config states (before librnd 4.0.0) -Add: SymlibRehash() action -Add: prj/ conf subtree with list of sheets, allowed to load only from the project file -Add: refuse to load view conf from the sheet file or cli, scope should be at least project -Add: emit LOAD_POST event after loading a sheet -Add: object right click context menu for symbol vs. local library handling (embed/unembed) -Add: draw dashed bbox on the symbol meta layer -Add: symbol meta layer: draw an L or E in the top left corner depending on whether the symbol is loclib grp-ref or embedded grp [sch_dialogs] -Fix: missing return value on library dialog error exits -Fix: library: remember the full path of cursor so it can be restored after extending the local lib -Fix: don't let {e t} edit group ref child objects -Fix: tree dialog: track of what object was last shown in preview and do not change zoom/pan, only redraw on status changes as long as object selection did not change -Fix: generate file name change event on changing sheet name to get the titlebar updated -Fix: attr dialog: prefix group ref referee keys with a space so they are not found for most context (and cursor is not set to them when a target key is requested) -Fix: attribute dialog: disable the floater button for group refs (grp refs can't host new objects) -Fix: attribute dialog: allow limited edit of referenced group attributes -Fix: attribute dialog: don't let the user change priority value on referenced group's attributes -Fix: don't crash on library selection if nothing is selected when "use selected" is clicked, take it as a cancel -Add: update all library GUIs open for the related sheet upon a library changed event -Add: attribute dialog displays referenced grp's attributes as well -Add: dyntext edit: when invoked on a grp_ref direct dyntext child refering to the group_ref's attribute, invoke the attribute editor, that's the only way to change the text -Add: dyntext edit: throw error if grp_ref child was a dyntext but could not be edited -Add: dyntext edit: widgets to directly access/edit attribute value in the simplest and most common cases -Add: print error messages when the attr edit button can't figure which attribute to edit -Add: create the PrintGUI() action using librnd's implementation -Add: attribute dialog: set the name of the left-right pane for testing save/restore -Add: tree dialog preview: show original sheet, not current GUI sheet (it is a local dialog) -Add: if lib backend preview_text() is available, use that for generating the preview instead of trying to draw a symbol (useful for non-symbol libs) -Add: button for following attribute history row -Add: AbstractDialog() takes optional abst_id and attr_name to navigate cursors to an existing attribute -Add: cross-call from abstract attribute history to attr source abstract object (opening the right attribute dialog) -Add: abstract attribute source traceback button: when concrete object attribute is clicked, open the attribute editor with the object's oidpath and attr name to get the cursor right -Add: abstract attribute side: when presenting attribute history, auto-select highest prio line, that's the one that determined the final value -Add: include libmaster's name and sheet name because multiple instances may be open -Add: special buttons for local lib handling [std_devmap] -Fix: do not modify portmap attribute values while parsing for assisted edit -Fix: assisted portmap edit: return 'changed' state after modification -Fix: port map quick edit: memory management bug on initial pcb/pinnum fillin -Update: prefer -slot over slot for the slot attribute -Add: more detailed error messages on invalid devmap attributes -Add: figure which symbol(s) contributed the devmap attribute -Add: local lib support - automatically save any devmap used on the sheet in the local lib -Add: implement loclib refresh-from-external-lib -Add: count/list devmap usage from local lib [symlib_fs] -Fix: when loading a parametric symbol from the rendered temp file, replace group file name with the original parametric symbol file name - nobody is interested in the temp file name [symlib_local] -Add: when enabled, create local lib reference for buffer pasted symbol groups [target_pcb] -Del: no need to manually derive port attributes, they are all compiled centrally -Fix: when display name is set, description should include where it was copied from [util] -Update: example boxsym has "-slot" attr so it doesn't propagate 0.8.1 alpha2 (r3606) ~~~~~~~~~~~~~~~~~~~~ [boxsym-rnd] -Fix: do not emit excess, zero sized box -Fix: swap order of pins from bottom->top to top->bottom on the left and right side to match the order in the file [build] -Fix: replace "fp" plugin class with "symlib" class as sch-rnd has symbol libraries, not footprints -Fix: classification of std_* plugins (they are feature, not io) -Add: ./configure: --enable-bison and --enable-byaccic -Add: define sphash so that plugins can use it -Add: new plugin class "engine" to separate them from more generic features [doc] -Add: generated doc on stock parametric symbols -Add: devmap: specify how non-slotted portmap entries look like -Add: describe how does the display/name attribute work, explain heavy symbols -Add: explain portmap and devmap [examples] -Add: a real LDO example circuit (using the stock lib and portmap) -Add: a working devmap example with 2 of the same n mosfet symbols with different pinouts -Add: devmap example conn1 gnd and vcc connections -Add: slotting example with devmap -Add: inhomogeneous slotting example (clocked SR latch built of 4 NAND gates) -Del: project file special subtree for symlibs (project file becoming config based) [export_png] -Add: disabled-by-default until draw_png is moved to librnd [export_ps] -Add: export ps (ps and eps) [export_svg] -Add: standard svg export; low level draw copied from pcb-rnd [export_tedax] -Add: register an export HID as well so the standard librnd export mechamism works -Add: call the generic exporter from the export plugin -Add: more details in error messages on pin number/refdes -Fix: use abstract net's ->netname for the final fallback if there's no better attribute based name -Fix: do not export components with no name; such component is meant to be graphical by definition -Fix: no parent refdes is not an error, it only means parent component (and all pins) should be omitted from the netlist -Fix: prefer display/* attributes over pcb/* attributes (do not hardwire workflow) [gui] -Fix: use gui_inspect search for right click so that terminals are picked up over symbols, wirenets and floaters -Add: compile box in the top status bar -Add: view button invokes ViewDialog() [io_geda] -Add: plugin main to read gschem sheets and symbols [io_lihata] -Fix: reverse ordering of negative OIDs to preserve object order on a load-save round trip (new negative OIDs are assigned in decreasing order) -Del: don't load symlib dirs from a special subtree from project file, it'll be part of the normal config tree -Add: test parse callback -Add: support for group ref child xform load and save [lib] -Fix: avoid excess object redraws in text update -Fix: wrong ordering of io plugins by priority: higher value is better -Fix: if test parse returned okay, rewind() f once again because the real parser may also depend on it; also rewind after test parse when loading group -Fix: inhibit redraws during load, just in case the loader triggers some -Fix: wirenet util: don't print warning on ignored text object in wirenet mapping; such text object is typically the netname -Fix: search all selected: recurse into non-selected groups so that partial selection is found -Fix: if a new wirenet group is created during recalc freeze, add it to the recalc list (to be recalced after unfreeze) -Fix: wirenet unfreeze merge: recalc connections as well; calculate final net name on unfreeze merge, communicate renames using error messages so that the user gets notified -Fix: batch undo ops for drawing a wirenet segment as it often breaks down to multiple junction and conn operations -Fix: recalc connections on wirenet line move -Fix: do not add the same library root twice even if it got two map requests -Fix: reverting before save should get back to the default sheet -Fix: invalid free(): on sheet uninit remove comm_str only after removing all pens because pen hash depends on comm_str -Add: fully working net/component compilation that considers engines and views -Add: API: csch_oidpath_list_clear(), csch_text_invalid_chars() -Add: API: abstract type name resolver -Add: pointer domain for object arrays (vtp0 of csch_chdr_t *) -Add: recursive wirenet recalc freeze/unfreeze with a single recalc at the end -Add: wirenet: group merges after recalc unfreeze -Add: i/o API: call for backup sheet save (no side effects like resetting the changed flag) -Add: remember if a project is dummy (not loaded or saved, just created from scratch) -Add: abstract objects shall remember their abstract model parent for easier callbacks -Add: throw an error on port trying to connect to two different nets (except when it is being merged) -Add: project should remember last compilation abstract model so it can be displayed -Add: new search flavor, gui_inspect() that allows some of the non-movable/non-selectable objects to be picked up too (symbol lock bypass on terminals) -Add: project view accessors: return current view or view by name -Add: helper function to get the abstract object for a concrete object -Add: dyntext resolves abstract model's attributes using a.key references -Add: API: introduce an extra argument in project loading to tell if all sheets need to be loaded recursively as well -Add: API: project util: clear view list -Add: API: helper function to decide if any parent of an object is selected -Add: API: object hash functions -Add: API: group bit for preferring local lib -Add: group ref child transformations (experimental) -Change: use \001 instead of for dyntext rendering: should render as an empty box and it takes much less space and likely fits where the non-empty printout would -Change: auto terminal placement creates a floater for display/pinnum instead of concrete model's name to let filter plugins decide what to print -Del: lib_find API: always use cached lib -Move: realpath resolved from symlib_fs to core lib - will be needed by any fs based library -Move: fs lib mapping call from symlib_fs to core lib - will be used by any lib implementation -Cleanup: rename library.[ch] to util_lib_fs.[ch] for naming consistency and code repurpose -Cleanup: remove ->netname of abstract net, keep ->name only (consistent field naming) -Cleanup: in the concrete model only groups have attributes, remove attr hash from chdr -Cleanup: unreg actions on unload; related memory leaks [lib_alien] -Split: move read_helper out from io_geda to a reusable lib (multiple io plugins are going to depend on it) [library] -Fix: remove excess, zero sized box from the LDO sym -Fix: common awk: do not move name2 (pin name) by str length, it's good in its left aligned state -Fix: gnd symbol connects to net called GND not gnd, more widespread -Add: common awk: generate pin number with display/pinnum -Add: devmap for IRF510 in TO220 - perfect for example as the pinout differs from 2n7002 -Add: switch() --help: make style a proper enum and explain each possible value -Add: style=rotary support in switch() -Add: default titlebox symbol -Change: symbol lib terminal floaters: switch over from concrete model's pin name to display/pinnum [propedit] -Fix: integer overflow on coord entry maximums [query] -Add: concrete model query(), code based on pcb-rnd's quert() [sch-rnd] -Fix: font rendering: font rotation was determined too early, before a potential text_update that would calculate hte final transformed rotation angle -Fix: timed backup save uses the backup save i/o API so that the changed flag of the sheet is not lost -Fix: don't redraw while exporting -Fix: don't postproc sheet twice -Fix: draw code sets layer group to 1 to comply with HID API requirements -Fix: do not render sheet if set_layer returns 0 (respect the HID API) -Fix: invalid memory handling on exit: reset current sheet and project to NULL after freeing them so that emergency save is not done -Fix: overlapping strncpy() in librnd due to wrong handling of conf file name -Fix: use librnd's pixmap free instead of a plain free() so all internal fields of the pixmap are free'd too -Fix: do not call csch_init() twice, it leads to memory leaks -Fix: don't postprocess the sheet twice after loading from command line -Cleanup: rename default sheet file for naming consistency (with default project file) -Cleanup: unregister central resources (events, actions) on exit; memory leak cleanup -Add: advanced search menu (same as in pcb-rnd) -Add: menu for listing locked objects using query() -Add: menu for portmap quick attr -Add: menu: devmap library browser in window menu -Add: make multi-port net merge configurable from the conf system -Add: default views read from the config when creating a dummy project -Add: project file helpers: create new view, save project file; when creating a new project file, create the first overwrite subtree so it becomes a valid project file -Add: API: project util function for deleting the nth view -Add: API: buffer paste: generate event for hooking in and replace direct object dup -Add: conf node editor/paste_to_local_lib to control whether paste should be using the local lib [sch_dialogs] -Add: upgrade TreeDialog() to handle object arrays for pcb-rnd "view list" equivalent for now -Add: view dialog -Add: attr edit: fill in right side abstract attributes -Add: abstract model browser -Add: library dialog: optional modal version that returns the full path of the selected row -Add: parametric lib dialog (using rnd_inclib's) -Add: extend tree dialog to handle a whole project (multiple sheets) -Fix: quick attr connect: always enable the 'del' button, because del can be done by text input as well; instead of disabling, when clicked: check if key exists, throw error if not -Fix: attr dialog: if a new str attr is created, e.g. after {a a}, select the attr row for quicker floater button access -Fix: attr dialog floater creation: use the wire pen for wirenet name attr with {a a} -Fix: handle cancel on dyntext attribute picker -Fix: tree dialog: refresh preview after select/unselect/del on object -Cleanup: tree dialog: do not depend on ctx->sheet where object is available (switching over to project based operation) -Cleanup: use frame instead of separator in attribute dialog common buttons now that the related expfill bug is fixed in librnd [std_cschem] -Add: new plugin for handling standard cschem attribute mechanisms (such as component "connect" attrib) -Move: quick attr edit for symbol connect attribute moved to std_cschem, because that's the plugin processing this attribute by default [std_devmap] -Add: portmap engine -Add: devmap engine using cached fs lib [std_tools] -Add: copy/move all selected objects if there's selection [symlib_fs] -Add: set the sym_prefer_loclib bit in newly loaded groups -Add: test-parse files for group-type before adding them in the library (add symbols only) [symlib_local] -Add: prepare for one more layer of groups in indirect so that different backends can easily sotre their data without interference -Add: create a with-attributes and a no-attributes hash of the local lib while mapping -Add: event handler for buffer paste symbols, decides if ref needs to be created -Split: code that finds the local symlib into a reusable function (buffer place will need it as well) -Add: sort out what to do on symbol paste, fetch local lib root when needed -Add: look up the root dir and hash table for paste ref placement [target_none] -Add: dummy target that displays original names [target_pcb] -Add: target plugin for the PCB workflow; sets port display/pinnumber 0.8.0 alpha1 (r2889) ~~~~~~~~~~~~~~~~~~~~ Initial release.