librnd 3.0.2 (r33224) ~~~~~~~~~~~~~~~~~~~~~ [core] -Fix: don't crash on NULL string in rnd_conf_print_native_field() (ConfDump() action) [dad] -Add: HATT for subdialog: allows a DAD dialog to place a subdialog in the widget tree (subdialog typically received from the caller) -Add: assert on subdialog can not be set() -Add: new, DAD based file selection dialog (default on all HIDs) [doc] -Add: user manual for the new fsd -Add: define what exactly the CHANGE_CB does for a tree [gtk] -Cleanup: util_watch doesn't depend on in_mouse -Fix: tree table: add the tree view widget directly in the scrolled window so they can interact; this way moving the cursor will automatically update scroll -Fix: do not omit tree table when RND_HATF_SCROLL is not set (did not set wltop) -Fix: uninitialized pixels in custom mouse cursor imported from xbm smaller than 24x24 -Fix: DAD tree click release should stop gtk from double-opening the given subtree -Fix: more robust fix for subtree expand when the arrow is clicked: let gtk handle the arrow -Fix: tree table enter_cb is called only on double click or enter on a row -Add: implement the subdialog HATT -Add: implement internal DAD API for widget poke: entry selection [gtk4] -Del: comment referring to gtk3 -Del: trunc_text custom widget for gtk3 - there's a different one for gtk4 -Add: mark rules-hint not to be used with gtk4 [hid] -Fix: describe what really rnd_hid_fsd_flags_t fields do (most of them are deprecated and have no effect) -Add: mark RND_HID_FSD_IS_TEMPLATE obsolete and schedule removal -Add: fileselect descr argument is not really used at the moment -Add: API for optional DAD widget poke [hid_gtk2_gl] -Fix: gdk_color_parse() doesn't handle alpha, remove it when it is present in the input color string [lesstif] -Fix: remember if popup is open and don't lose get_xy coords (crosshair coords) so that actions triggered from the right context popup won't ask for new coords -Fix: close the popup menu when an item is selected and mark the popup inactive after the corresponding action finished -Fix: tree table: call DAD CHANGE_CB on enter pressed -Fix: tree table: double click on entry should call change cb -Fix: memory handling error on HATT_STRING set() -Add: HATT_SUBDIALOG implementation [lib_hid_common] -Import: plus and minus xpm's from pcb-rnd (layer selector) [scconfig] -Fix: do not accept lesstif installation if it doesn't have XmEXTERNAL_HIGHLIGHT (required for picture buttons and toggle buttons) [script] -Fix: use the 'selected' callback instead of the 'changed' callback for DAD_TREE() because the API around 'changed' is not clear librnd 3.0.1 (r32954) ~~~~~~~~~~~~~~~~~~~~~ [build] -Fix: running 'make' in any plugin changes to the right source directory to rebuild that plugin [core] -Fix: change internal GUI HID load mechanism: do not autoload HID plugins, but try to selectively load only the ones that are requested by the user or preferences; when there is absolutely no preference, load them all, but make sure to load lesstif first because it is broken and order of -lXm and -lXt matters even in dynamic linking [dad] -Fix: coord spin: print values to at most 6 decimal digits to reduce rounding errors [doc] -Add: link edakrill from the -rnd box -Add: mention genht and fungw in INSTALL for extended user scripting [gtk_common] -Fix: implicit declaration of tool function in dlg_topwin [hid] -Fix: don't ever fall back to automatically pick a GUI hid if it's marked hidden [lib_gtk_common] -Fix: implicit declaration of tool calls in bu_menu -Add: center view after the initial zoom-to-extent [lib_hid_common] -Fix: Zoom() without arguments is "auto zoom" which should zoom to extent _and_ center (pan) [loghid] -Fix: do not let loghid hook itself (would lead to infinite loop) -Fix: sanity check on all loghid calls to avoid infinite loop (loghid calling loghid) -Fix: mark loghid's GUI sniffer hidden so it's never picked up as default/fallback HID [poly] -Fix: excess semicolon ruined strict C89 validity [scconfig] -Cleanup: const correctness: don't make char * const if it's malloc'd and free'd [tests] -Fix: don't mind if some files are already removed in make clean's make uninstall of the local librnd installation librnd 3.0.0 (r32916) ~~~~~~~~~~~~~~~~~~~~~ [action] -Add: API CHANGE: introduce RND_APP_PREFIX() for RND_ACT_FAIL() and other ACT macros to know the host application namespace prefix -Cleanup: rename from pcb_act* prefix to rnd_act* prefix for clarity and namespace [anyload] -Add: spare fields [conf] -Fix: don't crash if native node is queried before the hash is initialized -Fix: don't crash if app didn't specify user conf dir -Fix: conf ignores should be coming from the app using rnd_app.*, not hardwired in librnd -Cleanup: rename pcb_conf_merge_all to rnd_conf_merge_all to keep namespace clean -Cleanup: API CHANGE: rename RND_CFR_DEFAULTPCB to RND_CFR_DEFAULTDSG because librnd is not about PCBs only but abotu any design a CAD-like app does -Cleanup: fix up the symbol name of rnd_conf_pcb_hid_uninit() in internal public API (remove the _pcb from the middle, probably an earlier renaming error) -Add: comment to explain a status bit left-over from pcb-rnd -Add: spare fields in callback struct [core] -Fix: don't crash on action uninitialization if the action system was not initialized -Fix: API CHANGE: typo in public symbol prefix (rnd_pcphl_*) -Fix: use %lx for printing unsigned long on version mismatch error msg -Del: pcb_compat.h: it was relevant in the 2.x.x series for backward compatibility, but 3.0.0 has other breaking API changes as well -Del: pre-3.0.0 compatibility layers -Change: lib versioning scheme for detaching from pcb-rnd -Cleanup: API CHANGE: rename pcb_conf_internal to rnd_conf_internal to clean the namespace -Cleanup: rename pcb_long64_t to have rnd_ prefix -Cleanup: remove unused PCB_PACKAGE, rename PCB_VERSION and PCB_REVISION to RND_* for namespace purity (internal public API) -Cleanup: remove references to pcb from public API comments -Cleanup: prefix pcbhl_ with rnd_ for keeping the namespace clean -Cleanup: rename pcb_color_* to rnd_color_* in internal API for clarity -Cleanup: namespace: pcb_hid_dlg prefix changed to rnd -Cleanup: namespace: pcb_dad public internals to rnd_dad prefix -Cleanup: rename pcb_conf_* to rnd_conf_* for namespace cleanup -Cleanup: pcb_ -> rnd_ prefixes in actions, safe_fs, pixmap, internal hid APIs -Cleanup: pcb_ -> rnd_ prefixes in hidlib error init, macro of tools, macro of grid, macro of conf -Cleanup: PCB_ -> RND_ prefixes in PCB_OBJ_PROP -Cleanup: PCB_ -> RND_ prefixes in internal feature macro -Cleanup: rename pcb in internal APIs and comments -Cleanup: remove some pcb-rnd refs from anyload -Add: spare fields in pixmap structs, color cache and hidlib API -Add: rnd_coord_t spare to all struct with spare fields (rnd_coord_t size depends on configuration) -Add: SetGridOffs() action -Add: publish the prototype of rnd_pcbhl_conf_postproc() for pcb-rnd to be able to set the home dir -Add: install all funchash headers - pcb-rnd needs them [DAD] -Fix: don't use lable for DAD_COORD in gui actions -Cleanup: API CHANGE: make RND_DAD_CFG_NOLABEL the default and remove the feature macro -Add: spare fields in spin struct [doc] -Fix: doc link points to developer/, there's no user doc for the lib -Fix: refine the documentation on how menu file name is really used -Fix: broken link to minisvn (web svn cgi) -Fix: license title is not pcb-rnd but librnd -Del: key/menu related rules from Makefile (librnd doesn't come with a menu file) -Cleanup: remove $LP and $LC from packager's doc (we install only librnd, that's $P and $C) -Update: unix installation from pcb-rnd -Update: change README from pcb-rnd to librnd -Update: AUTHORS and INSTALL from pcb-rnd to librnd -Update: README with the dir layout -Update: html headers and main web page from pcb-rnd to librnd -Update: there's only one recommended init sequence now which is generic enough for all cases -Import: action doc from pcb-rnd for those actions that got moved from pcb-rnd to librnd -Add: document how spare fields are used to achieve better binary compatibility -Add: 'news' page -Add: test compilation result on IRIX -Add: packager's doc -Add: explain better why there's no windows binaries for the lib -Add: action/ in the dir listing -Add: logo, @ png for mail addresses -Add: change -rnd on the index page to Ringdove link collection -Add: mention ldconfig in INSTALL [gtk] -Fix: --help doesn't hardwire pcb-rnd -Cleanup: rename PCB_GTK_KEY() to RND_GTK_KEY() in the internal public API -Cleanup: rename PCB_WORKAROUND_* to RND_WORKAROUND_* (in internal public API) to clean the namespace -Cleanup: PCB_ -> RND_ prefixes in internals -Cleanup: PCB_ -> RND_ prefixes in preview widget -Cleanup: rename event coord converter macro so it doesn't have PCB in its name anymore -Cleanup: rename pcb_ -> rnd_ in internal APIs (pcb_gtk) -Cleanup: rename pcb_ -> rnd_ in internal APIs (pcb_conf_hid_gtk) -Cleanup: rename pcb_ -> rnd_ (file name pcb_gtk.h to rnd_gtk.h) -Cleanup: rename pcb_ -> rnd_ in internal APIs -Cleanup: rename pcb -> rnd in internal APIs -Cleanup: rename pcb -> rnd in internal APIs [hid_batch] -Fix: --help doesn't hardwire pcb-rnd -Cleanup: remove pcb terminology [hid_lesstif] -Fix: wrong FSF address in a non-unified address block in the license banner -Fix: invalid memory write on filling in lesstif command line arguments to other plugins in the wrong array -Cleanup: rename pcb_ -> rnd_ in internal APIs -Cleanup: rename pcb_ -> rnd_ in internal APIs -Cleanup: rename pcb_ -> rnd_ in internal APIs for motif box -Cleanup: rename pcb_ -> rnd_ in internal APIs -Cleanup: rename pcb_ -> rnd_ in internal APIs (pcb_x and pcb_y) -Cleanup: rename pcb_ -> rnd_ in internal APIs [hid_remote] -Fix: use rnd_config so that app prefix is defined for actions -Cleanup: rename pcb_ -> rnd_ in internal APIs [hidlib] -Fix: accept NULL for rnd_app.conf_internal, take it as if it was an empty string -Cleanup: code style/indentation after rnd_app refactoring -Cleanup: remove old/obsolete struct fields (now that we have a breaking API change for 3.0.0 anyway) -Change: API CHANGE: move package ver/name/url into rnd_app -Change: API CHANGE: move conf paths into rnd_app -Change: API CHANGE: move crosshair move/suspend/restore into rnd_app -Change: API CHANGE: move crosshair attached/marks draw into rnd_app -Change: API CHANGE: move expose callbacks into rnd_app -Change: API CHANGE: move conf_internal into rnd_app -Move: rnd_conf_lib_dir and rnd_conf_dot_dir into rnd_app as these need to be filled in by the app -Move: conf postproc hook to rnd_app -Add: move menu related back references to rnd_app -Add: explain where the API wrapper is called from -Add: rnd_fix_locale_and_env() is rewritten as a macro so it can perform some checks that depend on app compilation -Add: rnd_fix_locale_and_env() throws an error on coord bit configuration mismatch between librnd and the app -Add: app revision field in rnd_app for better version report -Add: spare fields in hid_attrib and main arg struct [irc] -Cleanup: namespace pollution: use rnd_ instead of pcb_ for internal action names -Cleanup: remove unnecessary pcb-rnd references, generalize for ringdove -Cleanup: pcb_ -> rnd_ prefixes -Add: when reporting version on irc, include both host application and librnd versions [lib_gensexpr] -Change: buildin by default (apps will need it) -Change: move package into core (would be alone in the lib_io package) [lib_hid_common] -Fix: wrong plugin name in cookie string -Fix: remove plugins/dialogs from the conf system on uninit -Fix: missing header for the plugins dialog -Fix: zoom with =0.1mm broke because it did not convert with unit -Cleanup: API CHANGE: rename pcb_* to rnd_* in public API -Cleanup: API CHANGE: rename PCB_GUI_NOGUI to RND_GUI_NOGUI -Cleanup: rename pcb -> rnd in internal APIs -Cleanup: const correcness -Import: online-help xpm from pcb-rnd -Import: manage plugins dialog from pcb-rnd (the plugin infra is common to all ringdove apps) -Add: xpm name resolution action so that non-gui app plugins don't need to depend on lib_hid_common for optional GUI [lib_hid_gl] -Cleanup: remove prototype for non-existent function [lib_wget] -Cleanup: API CHANGE: rename pcb_* symbols to rnd_* (to clean the namespace) -Change: buildin by default (apps will need it) -Change: user agent should be more generic: librnd-wget -Add: spare fields [menu] -Cleanup: remove pcb_ and PCB_ prefix from the internal public API in favor of rnd_ and RND_ [poly] -Cleanup: rename pcb_ prefix to rnd_ in pline support, polyarea internals and poly offs -Cleanup: rename pcb_ prefix to rnd_ for pcb_poly_ in internal APIs -Cleanup: rename prefix pcbo_ to rndo_ [safe_fs] -Fix: API CHANGE: rnd_file_readable() needs to get a rnd_hidlib_t * first arg so it can do the access checks later [scconfig] -Fix: need to install typed double linked genlist's .c file as well, as it's a template included by the app -Fix: use genlist's own make install instead of manually listing a few files -Fix: make sure all parts of genlist ends up in the .so, some apps will use them -Fix: do not let librnd-specific argument parsing leak out to apps (e.g. coord type) -Fix: do not crash when value is missing for --key=value custom args -Fix: 'make map_plugins' moves the resulting plugins.h into librnd scconfig dig - this one is not installed -Fix: do not hardwire PREFIX/lib in librnd.mak, use libarchdir -Fix: all plugins are considered hidlib plugins - if they are builtin, link them in librnd-hid.so -Fix: LIBRND_LIBDIR from config.h shall use libarchdir instead of hardwired /lib -Fix: put plugin srcs on the dep list even if they are configured with --plugin and not --buildin -Fix: LIBRND_PLUGIN dir set with full path from trunk to fix up deps -Fix: missing return value for dep resolver -Fix: install genht's ht.c, it's part of the public API -Fix: proper pointer comparison for NULL -Fix: install/uninstall rule: don't do anything manually for genlist, it's installed using its own Makefile -Fix: install doc to $(SHAREDIR)/doc/librnd3 so different versions of the lib can be installed in parallel -Fix: the postarg hook needs special casing for when running from librnd's configure, since there's no librnd install yet -Fix: move -l's at the end of the command line for building the .so files - some C compilers are sensitive to this -Fix: save NULL as empty string when saving fungw ldflags in plugin state -Cleanup: split to-be-removed header installation from core header extra installation -Cleanup: require template users to define $(LIBRND_LIBDIR) so templates can cross-call -Cleanup: remove app-specific installation paths from config.h -Cleanup: prefix BINDIR with RND_ -Cleanup: move GUI hid related detectioins from public scconfig helper API into internal - ringdove apps won't need to deal with this anymore -Cleanup: move the coord bits logics back from public API to private - apps should use whatever librnd was configured with -Cleanup: remove hooks_gui.c from the public scconfig API: only librnd shoudl deal with gui details -Cleanup: move librnd-only help from public scconfig API to local implementation -Cleanup: remove unused LIBDIR_INSTALLED from Makefile.conf template -Del: obsolete fallback def of RND_DAD_CFG_NOLABEL that already got removed -Del: hidlib property of plugins: every plugin in librnd is hidlib, and no other plugin elsewhere is, no need to track this anymore; switch over central plugin list to no-hidlib syntax -Del: remove bison/yacc/byaccic detection, librnd doesn't have any grammar -Move: librnd-specific detections back from the public API to internal - apps shouldn't try to compile librnd anymore -Change: lib plugins that are of interest for apps are default built-in -Change: API CHANGE: librnd.mak doesn't depend on LIBRND_ROOT anymore (embedded checkout of librnd not supported now) but uses LIBRND_PREFIX which it also sets -Change: do not instal anything in /etc - host app will load from its own directory -Change: SHAREDIR should be $PREFIX/share/librnd3 to avoid collision with different versions -Change: libdir is $PREFIX/lib/librnd3 to allow multiple major versions -Add: install rnd_hook_detect.h, apps' hook.c depend on it -Add: install genregex template header, required by pcb-rnd -Add: install lib-like plugin header files so application plugins can depend on them -Add: save and install $(SHAREDIR)/plugin.state, which lists the 3state of each plugin in both scconfig importable way and shell script processable comments -Add: when running for an app, calculate plugin external dependencies -Add: mark librnd plugins external in the plugin state dump -Add: generate librnd.mak to have extra -I and -L for the case librnd is installed at some non-standard path -Add: API CHANGE: rnd_hook_postarg() needs to get librnd prefix so it can load plugin states -Add: export -rdynamic for tests -Add: save fungw ldflags in plugin state - the host app needs it in case of system installed fungw -Add: calculate default confdir when not specified (API CHANGE: postarg function needs to get the application name) -Add: install cquote in libdir/scconfig/ - apps need this to compile internal version of menu and config files -Add: install sccbox (for applications without scconfig) [script] -Cleanup: pcb_ -> rnd_ prefixes [stroke] -Cleanup: rename pcb_ prefix to rnd_ in internals [tests] -Fix: librnd link test gets dummy empty internal menu so it can initialize and return 0 -Fix: librnd test: more robust uninstall -Cleanup: simplify live test code app initialization -Update: rnd_printf test doesn't need any glue layer with librnd 3.0.0 API -Add: librnd test: tweak plugin path so the test runs with all-plugin builds and by default use the batch hid [tool] -Add: spare fields [util] -Fix: pup list util for the packager's doc: use the right package dir -Import: awk_on_formats for packager's doc