FOX Toolkit 1.7.84

FOX is a C++ framework for graphical user interfaces. It provides an effective and simple API, traditional but platform-agnostic themes, many common widgets and controls, drag'n'drop support, selections, icons/images, tooltips and hover widgets, but also 3D features per OpenGL. Its speed comes from conservative memory management, spatial redrawing, and bi-directinal event/message passing between GUI elements.

Tags c++ gui fox toolkit
License GNU LGPLv3
State development

Recent Releases

1.7.8411 Sep 2023 14:45 minor feature: New FXUndoList implementation. The new FXUndoList now supports an alternate history mode, i.e. it remembers redo-command After taking a different path. The internals of FXCommand have changed a bit, it now sports a reference count; for the most part That does not affect any user-code.. Also in FXUndoList: on 64-bit machines, space-accounting is now performed in. long to manage potentially Large amounts of undo data. Adie editor undo sytem now supports merging undo commands, if the text is changed letter-by-letter it will. Consolidate contiguous commands, assuming they are considered mergeable. Currently we're keying on character classes to decide whether to merge or not. Idea is to not back up over programming-language special characters.. Inlined some math functions for greater speed.. Inlined some character-class APIs in fxascii for greater spead.. FXSystem::system() to kick off command line via operating system shell (Windows).. Minor annoyance in sideways scrolling in PathFinder.. Added "Seibenmeilenstiefel" scroll mode holding shift key.. FXRex now has option to excape regular expression special characters. Major convenience mode.. FXRex : could not always properly add control charactor using cX syntax.. FXRex : signed vs unsigned charactar surfaced due to internal representation change.. Adie status-line indicator for current language mode.. When loading a new file, Adie checks "emacs" modeline presence first, if modelines are on.. New APIs added to Math namespace for hashing values (32- and 64-bit), as well as unhashing values. Hashing float and double added so as to use these in hash tables as a key.. FXText now uses new UTF8 navigation techniques, where it makes sense. This is a performance upgrade.. Minor in FXText widget.. Experimental -O3 when compiling for release mode; its a major performance bump.. Inlined branch-free toUpper() and toLower() major boost in case-insensitive comparisons.. PathFinder and Adie now has command line parameter to force win
1.7.8315 Jun 2023 03:19 minor feature: FXThread::current() yields thread-id.. Updated icons in FXFileDialog, PathFinder, and Adie editor.. FXPath::enquote() should also engage escaping when embedded braces found in string.. FXPath::enquote() places quotes around empty file, because it is the only way to pass empty string parameter sometimes when passing arguments to sub process.. Updated help information in Adie editor.. Adie now gives warnings if (1) file being edited is changed by another program, (2) file being editor was removed by another program If warnings are turned off, you will still get prompted when you're about to save or the window. This minimized unexpected loss of information.. X11 line width (needed for some broken GPU drivers).. Updated VC++ project files.. Ascii character classifications now inlined, potentially much faster. Important for Adie regex-based Syntax coloring engine, where improvement is noticable.. Adie editor search/replace now supports whole-word search option.. Adie editor now has "New File" in addition to "New". The new option prompts user for filename Immediately, and thus kicks syntax colorizer into the correct mode, if the mode is determined by File extension. This is normally the case.. Adie word-wrap toggle on menu bar is helpful to quickly reveal long lines running past Right edge of the screen.. When you're in the middle of editing a large file, and scroll around to look at something (e.g. a declaration), You can now quickly jump back to the last location being edited. This is done by implicitly defined Bookmark called the "Insert Point". Promise you will find this feature quite convenient.. FXPath::title() has been renamed to FXPath::stem(). This seems to be the apropriate name For what it does, which is to return the name less the extension and the directory-part.. Adie offers quick switching editing windows from right-mouse popup menu. Also added is "Open Selected" Which opens the selected text as a filename.. Some internal streamlining in FXRex, the regular
1.7.8229 Mar 2023 10:25 minor feature: New FXINI, FXINIFile classes added to parse (and unparse) configuration (registry) file format into FXVariant datastructure.. Updated variant test program to load/save configuration (registry) file format.. Some minor parsing infinity and nan in JSON parser.. Keyword recognition in JSON only when keyword expected. Now reserved words/keywords allowed in places where identifiers are expected (JSON5).. Some minor parsing infinity and nan in JSON parser.. Shell-command dialog for Adie text editor now has command scrollback for previously executed commands.. New feature to executed highlighted line as command in Adie.. Fast conversion of FXColor (RGBA) pixel value to/from FXVec4f or FXVec4d using AVX2.. default parameter in FXString find_last_of(), find_last_not_of().. Quaternion normalize() will be replacing adjust(). A new fast incremental quaternion Fastnormalize() API added to re-normalize almost-normalized quaternion. This technique is MUCH faster than normalize(), since only multiply-add used, no sqrt() or division.. FXJSON parser speedups.. FXFile, FXIODevice, FXIO updates.. FXMappedFile class for memory mapped files added.. New API FXThread::ticks() returns CPU tick counter; this replaces old fxgetticks().. Some internal improvements w.r.t. FILETIME on Windows in different places.. FXStat::stat() API added for getting permissions from open file by handle.
1.7.8114 Nov 2022 03:25 minor feature: Using _InterlockedExchangeAdd64 and other FXAtomic (Windows).. FXApp should never write FOX-wide settings; only per-app settings. This rule was violated for a few types of settings.. Horizontal and vertical scrollbar multi-line scrolling can now be individually controlled.. Added a couple nice color themes in ControlPanal to choose from.. Adie Syntax class API class leads to somewhat simpler code. Possibly faster.. Tentative alias_cast() template may be used for shutting up GCC alias warnings. This means type-punning Related warnings are now properly suppressed.. Additional math-functions added to FXExpression mathematical expression evaluator.. Some internal branch-avoiding optimizations in FXRex, the regular expression matcher.. Subtle off-by-one in fxprintf, when very small, denormalized floating point numbers were printed.. Added orthogonal() API for 3D vector classes: it returns vector orthogonal to given vector.. More forgiving and simpler implementation of quaternion arc() implementation.
1.7.8012 Oct 2022 03:45 minor feature: New Visual C++ 2015 build project files for FOX distribution; you should be able to import them to any post-2015 version of Visual Studio.. Conversions to smaller integer sizes in FXVariant now saturate to maximum (unsigned) values; success-flag will be set false if saturation happens.. ControlPanel has new section for configuring "sub-pixel rendering" feature for Linux font system.. New feature in JSON parser/unparser is to allow saving in JSON5 mode; default is still regular JSON mode.. JSON unparser allow setting preferred quote type.. JSON unparser allows unicode identifiers for keys.. Minor in JSON parser when parsing and unescaping string: ensure we're using the correct quote type (JSON5 allows two Quote types).. Improved matrix to quaternion code.. In FXVariantMap, space reserved for 32-bit machines was updated.. FXVariant now has some API's to remove item from map (if map type), or array (if array type).. Allow for a few more items in Adie's window list and recent file list.. Minor updates to Adie man page for new commands format.. Adie FindInFiles now remembers previous search directory when scrolling back to prior search commands.. Can start Adie with given window size now.. Slightly simpler syntax is possible to open file onto given line number (and column).. Allow ascii mode when reading registry on Windows; is command line parameter in FXApp.. Silenced numerous warnings introduced enabling new compiler flags.. Small layout problem in PathFinder.. Updated VC++ Studio project files: 64-bit build now default... Some in fxendian bit manipulation APIs.. API added to find system directory.. Also __snprintf() and __vsnprintf() now handle denormal floats even when library was compiled for release (with FTZ/DAZ).. in FXText.. Minor warning.. More user-friendly type-names in FXVariant.. in FXReadWriteLock for MacOS.. Calling adopt() on FXSettings sets both instances to modified, as it should have.. FXColorDialog remembers its size from last time it was used.. FXF
1.7.7912 Mar 2022 07:45 minor feature: FXJSON parser identifier recognition.. Added Adie syntax colorizer for data tables.. New rule type in Adie syntax colorizer: span rule.. Changed keywords in Adie syntax colorizer: more succint.. Syntax colorizer now UTF8 aware.. Some speed-ups in FXRex.. Adie syntax patterns for C++ have been sped up with use of possessive match where possible.. More checks in Syntax Parser.. Math implementation updates: faster pow10i(), fpMantissa().. The function fpExponent() in Math has been to return correct exponent for denormal floats.. Internal number formatting routine __snprintf() and __vsnprintf() for hexadecimal float conversion.. Also __snprintf() and __vsnprintf() now handle denormal floats even when library was compiled for release (with FTZ/DAZ).. In addition __snprintf() and __vsnprintf() more spiffy formatting options for "engineering mode" with exponent mode enabled, and nice columnar formatting also supported.. The __snprintf() and __vsnprintf() now use substantially less stack space for conversion.. The __snprintf() and __vsnprintf() properly handle zero-precision case for integer conversions.
1.7.7817 Feb 2022 14:05 minor feature: Major rewrite of FXJSON parser. Faster, stricter, better UTF8 support.. in FXString.. New functions added to math APIs.. Minor to FXPtrList.. Better HotKey processing in FXAccelTable.. Now use nullptr in lieu of NULL (C++ compiler feature).. Julia syntax highlighting added to Adie text editor.. Drop conversion check in FXJSON parser.. FXPath::expand() recursive environment expension up to some limit .. FXCondition can use FXScopedMutex and FXReverseMutex.. Use of static_assert() conditional upon compiler support.. URL encode should also encode @ and : Off-by-one in FXText.. Warning.
1.7.7722 Apr 2021 09:25 minor feature: Subtle FXString::format() numeric rounding.. Adie text editor rare crash.. FXString unicode conversion.. Additional checking ensuring FXString::substitute() called properly.. Subtle FXString manipulation.
1.7.7602 Apr 2021 10:25 minor feature: Add handy icon button to Adie file list widget to hide/show hidden files.. FXText widget parameter verification improved for content-modification APIs.. FXText widget block mode replace, block insert, and other block operation regressions.. FXText widget block selection.. FXRex grammar depiction.. In FXJSON parser, a single bad-utf8 precase label was missing.. Not all systems have pthread_rwlock_setkind_np(), causing compile to fail on those systems.. New FXASSERT_STATIC macro added; it is defined for C++ language gt; 2011.. Scoped FXReverseSpinLock class added, similar to FXReverseMutex scoped lock.. The unixToDos() API would potentially add a second CR if input was already DOS format; now.. Adie text buffer loading and saving updated.. Adie extract range selection to file, and extract block selection to file option added.. Adie replace text range from file, or replace text block from file option added.. FXString::length() now returns boolean instead of throwing exception when out of space; internals of FXString somewhat fortified against low-memory situations (you're unlikely to run into memory on FXString on modern machines, unless you're dealing with truly gigantic strings).. A number of places are now defining specific trace topics using the new topic-tracing implementation.
1.7.7503 Mar 2021 08:05 minor feature: FXSystem::getUserDirectory() had on Windows with non-unicode build.. Configure scripts allows specification of freetype2 install locations.. Adie rules for C# language updated with current set of keywords.. Added TypeScript coloring rules to Adie syntax file.. FXDir::createDirectories() now insists on absolute path as input.. FXPath::upLevel() now works for relative paths as well.. FXPath::enquote() : enquoting string containing '#' was flawed.. Building using VC++ now keys on DEnot _DE.. Adie syntax rule for CMake.. Some small to FXPath::simplify() for path separators.. Set DPI Awareness upon launch on Windows.. Dropped unnecessary asserts in FXCursor (Windows).. Updated FXTRACE() implementation. Trace topics in addition to levels. You can change the set of topics to trace using new. -tracetopics command line Parameter. The old. -tracelevel is still there, it sets a range of topics. New APIs are added to set topics programmatically: setTraceTopic(), setTraceLevel(), SetTraceTopics(). The trace topics allow dumping reduced amounts of information When deging a particular aspect of your program.. Removed fxstrhash() in favor of FXString::hash().. Support convert to/from Modified Rodrigues Parameter in quaternion classes.. Orthogonalize 2x2, 3x3, 4x4 matrices using Gram-Schmidt orthogonalization added.. Some further work in FXReactor, FXDispatcher.. address sanitizer in FXDictionary, FXHash, FXReverseDictionary, FXSettings, FXStringDictionary, FXVariantMap.. Leaked icon resource in Adie, ControlPanel, PathFinder Preference panel.. to SUNRAS image loader loading 1-bit per pixel images.. Potential NULL cursor pointer during create().. Miscellaneous compiler warnings here and there.
1.7.7404 Dec 2020 11:45 minor feature: API additions in FXAccelTable for convenient single call parse- and add to table.. Support for Borland C++, Digital Mars C++, and Watcom C++ removed.. FXXMLString class added; deserialize XML from an FXString.. Work-around for VC++ lack of support for hexadecimal floating point literals.. FXCursor.cpp non-compile.. Lots of warnings.. All "register" declarations now expunged.. Miscompile and performance in FXRandom implementation.. Engineering mode display option in Calculator.. Engineering mode option formatting doubles in FXString.. Expression now allows underscore in variable names; internal optimizations in parser.. Relaxed parsing of fractional seconds in systemTimeParse().. Obtain leap seconds given TAI, in addition to leapseconds from UTC.. Highlight text block via keyboard arrow keys in FXText.
1.7.7327 Aug 2020 17:25 minor feature: Added math function Math::pow10i(). Performs integer power of 10. NOTE: function Math::pow10() will go away as this has been deprecated; use Math::exp10() instead!. FXString::hash() now switched over to FNV1a algorithm; is slightly better than old one on dictionary tests; the classname hashing in FXMetaClass was switched too. Note this means libraries using FOX That need hashing would need to be recompiled!. Serious in FXText : caused assertions from book-keeping discrepancies in cursor movement.. More stringent checking floating point input containing thousands-grouping.. Hexadecimal floating point input (fxscanf) now supported.. Hexadecimal floating point output (fxprintf) now supported.. Possible speedup in FXDictionary, FXSettings, FXStringDictionary, and FXVariantMap.. Non-compile discovered in *BSD.. Finite wait-API added in FXSemaQueue.. Adie text editor bookmark menu labels slightly more intelligent caption.. printing out denormalized numbers, in optimized mode FTZ/DAZ floating point flags in effect .. When printing out floating point numbers, correct exponent in case it was denormalized. Important Note: we have reason to believe (a) glibc version of fprintf() has a with small denormalized numbers Printed with " a", and (b) we believe both GCC and clang++ compilers have parsing hexadecimal Denormalized floating point numbers.. Some math functions renamed for consistency: ipow() to powi().. Change in behaviour: Math::fpExponent() now returns exponent without bias.. Change in behaviour: Math::fpMantissa() now returns mantissa including the hidden bit unless number is denormalized .
1.7.7215 Jul 2020 15:45 minor feature: Added math function Math::pow10i(). Performs integer power of 10. NOTE: function Math::pow10() will go away as this has been deprecated; use Math::exp10() instead!. String to double conversion routines accuracy improvement implemented; approximately 16th digit accuracy now.. Added a and A handling in fxscanf.cpp. Hex float support parsing to be switched in soon; Not yet 100 working at this time.. When parsing exponent-part of floating point number fails, properly rewind input to the Part before it; this will leave the rest of the string for another conversion specifier if There is one.. When parsing number-separator, don't allow consecutive number separators. Future implementations May be more strict still.. FXThread thread naming update for MacOSX and other operating systems.. The math.cpp test program now implements testing functions when they are missing from the Operating system.
1.7.7108 Jul 2020 06:45 minor feature: FXSystem::Time not initialized inside FXSystem::systemTimeParse(); must initialize to zero prior to call. Reason: need to be able to determine what fields were actually Set during the parse.. Added FXSystem::daylightSavingsActive() API. Determines if daylight savings time in effect at the given time.. On Windows, FXSystem::daylightSavingsActive() uses TIME_ZONE_INFORMATION to determine when Daylight savings is to be switched. But Linux and Windows versions may need additional work.. FXSystem::localTimeZoneName() returns time zone name as known by O.S. Note its returned as UTF8 string.
1.7.7030 Jun 2020 18:05 minor feature: Changed order of paramter in FXSystem::systemTimeParse(); new order allows default Parameter for time parsing format, " m/ d/ Y H: M: S", which is very convenient.. Added localTimeZoneName() API.. Changed parameter order and implementation of universalTime() and localTime(); the New order now allows default parameter (" m/ d/ Y H: M: S") for time formatting and Parsing. New implementation using recently added routines also allows adjustment for Time zone offset if time zone offset is parsed from time string ( Z or z option).. FXSystem::systemTimeParse() does not initialize FXSystem::Time struct anymore; thus, Should be zeroed out prior to being called. However, FXSystem::systemTimeParse() will Assign as much as it can based on the time- and date-components being parsed. Also note, FXSystem::systemTimeParse() can properly parse ISO week number and day, and Compute proper date from that. Its a bit tricky.
1.7.6926 Jun 2020 10:05 minor feature: More FXSystem time related API changes.. FXString 16-bit character conversion.. Military time zone parse.. FXFileSelector onCmdDirectoryUp() selects directory we were in before, for quick downward Navigation.. FXFileList sets both current and anchor item when entering directory.. The fxprintf.cpp used in string formatting now supports a and A for floating point Printout.
1.7.6801 May 2020 03:05 minor feature: Added FXSystem::Time struct, system-independent time in parts. This comes with (at the moment) Two routines, FXSystem::systemTimeFromTime() which converts FXTime to FXSystem::Time, and FXSystem::timeFromSystemTime() which converts time in parts to FXTime (in nanoseconds).. New routine FXSystem::systemTimeFormat() formats FXSystem::Time to a string, similar to strftime(), With a few extensions.. New routine FXSystem::systemTimeParse() parses FXSystem::Time from a string, similar to strptime(), With a few (more) extensions.. New routine FXSystem::daysFromCivil() converts year, month, day to days since Unix Epoch in days.. New routine FXSystem::civilFromDays() converts Unix Epoch in days to year, month, day.. New routine FXSystem::timeFromNTPTime() Converts NTP time (64-bit ssss:ffff) to FXTime, nanoseconds Since Unix Epoch).. New routine FXSystem::ntpTimeFromTime() Converts FXTime time to NTP time (64-bit ssss:ffff).. New routine FXSystem::leapSeconds() returns number of leap seconds since FXTime. It can be used to compute UT1 time (plus or minus fraction of a second).. The sysctl.h is now obsolete on Linux still checked as not obsolete on *BSD .. Blending on in FXGLShape.. WM_ERASEBKGND message handler (on Windows) should return 1.. Small default width/height size calculation in FXTable.. Some in FXMat3d, FXMat3f with some SSE/AVX code.. Additional routines in fxendian.h: pop64(), pop32().. New routines in FXElement.. Some more missing math functions added in fxmath.h.. in FXDate for pre-1970 time values (rounding wrong way).. FXTRACE in FXMetaClass constructors/destructors.. Some progress on new FXEventLoop/FXDispatcher/FXReactor classes.. FXThread naming.. Initialize FXQuatf/FXQuatd with Rodrigues angles, other APIs for Rodrigues angles added.. FXJSON parser exponent parsing.. FXCallback.. FXText /improvements.
1.7.6713 Sep 2019 16:05 minor feature: Two subtle in new double to string conversion fxprintf.cpp; first, compiler optimization Caused code to be generated that overflowed, making results incorrect when optimization was on. Second, another (unrelated) overflow situation happened converting double to unsigned long. Now that both are I believe we have a very fast numerical conversion that appears to be Reliably generating about 15 to 16 digits out output last digit may be off by 1 or 2 in typical Case .. Allow more bookmarks in FXFileSelector, for frequently visited directories.. Work-around for operating systems missing lrint() and lrintf() in fxmath.h. Testing reveals replacement Implementation to be very to original, with exception of tie-breaking rule rounding numbers that are Exactly midway between two integers; we are, however, mostly happy with the way our implementation works if lrint() is needed on an operating system where theses functions are missing.
1.7.6505 May 2019 07:25 minor feature: FXJSON now has JSON5 JSON5 support; line-comments, multi-line comments, Unquoted key names, etc.. Experimental block-selection in FXText widget.. fxscanf.cpp to be able to read NaN and Infinity/Inf.. strtod() to recognize Infinity.. The escape() of empty string returns "", not empty string.. The unescape() supports line-continuations.. Additions to Math namespace.. Additions to FXQuatd and FXQuatf.. Some missing functions added to FXExpression.. FXPath::convert() transforms foreign operating system-style paths to local conventions (path separator, path list separator, Environment variable syntax).. Improved FXPath::expand().. FXThread::wakeat() now using absolute time on Windows (using undocumented API).. FXReverseDictionary class added.. FXDirWatch class added.
1.7.6422 Feb 2018 18:25 minor feature: Switched FXDir to use readdir() instead of now-deprecated readdir_r(). Supposedly now Thread-safe.. Some internal streamlining in FXRex.. In FXText, duplicate line leaves cursor in place, but highlights the new line (if you duplicate one too Many, you can therefore immediately delete it again).. Add some help messages for PathFinder's Preferences dialog.. Add columnFromPos() and posFromColumn() functions in FXText.. in FXText not recalculating width if only single line present (was introduced recently).. FXRex reverse algorithm was not working for verbatim mode; it does now.. Some limitations on FXRex regex-reversal algorithm removed.. Adie open-selected rework had introduced some ; is now.. Added new convenient API's to Math namespace.. Added new API's to vector classes.. FXText block select, block copy to clipboard, and block delete now work.. FXText shiftText() had minor shifting text containing tabs; this has been dealt with in a very sophisticated way, an internal routine which is also needed for block operations.
1.7.6215 Dec 2017 13:25 minor feature: Newly added arbitrary-length look-behind assertions in FXRex are a bit more bullet-proofed.. Some with partially filled buffers in FXText.. Large number of updates to syntax patterns in Adie.stx.. some minor in reversing of regular expressions, needed for arbitrary-lookbehind assertions in regular expression engine.. in FXDispatcher.. Added disconnect API to FXCallback, the new fast delegation class.. Word boundary in back-scanning regex engine.. FXRex empty branch ; empty branches no longer allowed.. Removed limitations on message lenghts in fxerror(), fxwarning(), etc.. In FXRex, when patterns are reversed, some escape sequences are dangerous; partially, this could be by requiring that the hex escape sequence require two hex characters. For octal character sequences, However, this can not be done, so those are flagged as unsupported in look-behind patterns.. Some for Windows build.. Added API to FXPath to check if a filename is a reserved filename, such as "COM1", "PRN" etc.. FXDirBox flicker, particularly under Windows, due to bad implementation.. The call to ::system() does not work as desired under Windows. Calls to ::system() are used to spawn Child processes, for instance, clicking on an icon in PathFinder. These calls have now all been replaced by Newly developed APIs in FXPath, like parseArgs().. A Windows-specific version of parseArgs() has been added, it follows Windows commandline escaping rules.. More options in file-associations for launching applications from PathFinder. Applications may be launched with the current file ( f), the list of all selected files ( F), the url of the current file ( u), The url's of all selected files ( U), or the current directory ( d). These options can be used at the same time, for instance, an association "tar cvfz d.tar.gz F" would tar up all the selected files Into an archive that's named after the current directory.. Updated Makefile colorizing.. PathFinder now as its own notion of executable paths; this allows user
1.7.6123 Sep 2017 18:25 minor feature: Regular expression now supports non-simple possessive matching.. Possible signed character in fxscanf.. Some better feedback in Adie while searching patterns in multiple files.. Find in files in Adie remembers last-used patterns and folders.. APIs added to FXText to manage virtual columns (columns past end of line). This will be needed For block select operations.. FXIconList lasso speedup, especially when YUGE numbers of files in a folder.. Minor PathFinder spruce-ups.. New APIs in FXPath: parseArgs() builds argv vector from command line, suitable to passing to execve() (etc.) System calls (or FXProcess).. Improved enquote() and dequote() for UNIX in FXPath.. In Adie, ShellCommand now kicks off sub-command w/o needing a shell; uses new API parseArgs() to Assemble command and start sub-process with it.. Minor in FXCallback template.. Added rotate() to FXVec3d and FXVec3f.. Added additional APIs to FXAtomic.
1.7.6019 May 2017 00:05 minor feature: Context back-up changed in incremental syntax recolorizer (Adie).. Some typos here and there.. Configure script and makefile updates.. Many updates being worked on inside FXText.. Compiler warnings for GCC 6.3.1, which seems to flag a few new things.. Some FXText widget speedups.. in FXString.. Added visiting() API to FXDirVisitor.. Disable and enable buttons in FindInFiles dialog in Adie editor when starting/stopping searches.. Brace-matching change: matching brace can now stay visible as long as cursor on a brace (if enabled). Enabling permanent highlighting also makes the match search outside of the visible part of the text buffer, in case the matching brace is scrolled into view later. Thus, people with slow machines may notice brace-match could Take slightly more time, when working with really large files.
1.7.5915 Apr 2017 15:05 minor feature: Changed the way bookmarks are done in Adie; you can delete them one by one.. A fair number of changes and -in FXText widget.. Cursor doesn't blink during movement in FXText and FXTextField.. Limit accumulation of repaint-areas yields less visible flicker in some case.. Redraw of line numbers in FXText now with less flicker during resizing.. Adie text editor now supports adie, emacs, and vim modeline parsing; you can set language (syntax) mode, tab width, wrapping, and a few other things.. Dropped jump-scroll mode support in Adie: never used by anyone.. Some extra options added to Adie Preferences Dialog.. Syntax file for Adie can now force hard-tabs, autoindent, and other attributes. This means editing 'Makefile' will automatically switch hard-tabs on!!.. Adie on-line help updated with description of syntax for 'Adie.stx' syntax description file.. Documentation in FXAccelTable.h expanded to include syntax for accelerator keys.. Option for brace-matching added to FXText. Also, added option to keep brace highlighted forever, or until cursor moves or a selection is made.. Show 'indeterminate' state for checkbuttons in Preferences panel, if default settings for tab-mode, wrap-mode, auto-indent have been superceeded by Attributes from the syntax-file or a parsed modeline.. Added 'SaveTo' option in File Menu of Adie text editor.
1.7.5815 Mar 2017 22:05 minor feature: Adie improvement: don't clear bookmark selecting it 2nd time; now, remove bookmark by invoking "Delete Bookmark" With the cursor on the bookmark to be deleted.. Bookmarks now at start of line; thus, only one per line.. Use __buildin_bswapXX() only for GCC 4.8 and newer; older versions gy, apparently.. Added SaveTo option in Adie text editor.. FXText and FXTextField cursor blink ; don't blink while moving (so user doesn't lose track of where it is!).. When multi-file mode in FXFileSelector, enquote files only when needed; and escape quotes and backslashes if they appear.. FXFileSelector now returns filenames as typed into the box in all modes, including multi-file mode.. Now allow relative search paths in Adie file search paths. This means you can list places to look for files in your project Directory subtree, regardless of where the project subtree is referenced from; for example, "../include:/lib" will let you Open a file from "../include" when you're in "lib", and vice-versa.. FXFileList properly hops back to original directory when dragging over directories.. Major speedup in FXIconList lasso-selection mode. Much, much faster when lassoing items in very large folders.. FXFileSelector's getFilename() returns first of many, if box contains multiple names.. FXFileSelector scans for first non-wildcard extension when substituting extensions when filter is changed.. FXTreeList and FXFoldingList should SEL_EXPANDED message as side effect of makeItemVisible expanding a subtree.. Missing setPattern(), getPattern() API's added for FXDirDialog and FXDirSelector.. Added syntax pattern for hexadecimal floating point numbers.
1.7.5705 Dec 2016 08:25 minor feature: Use _InterlockedExchange() in FXSpinLock instead of non-inlined version.. Emulation code added for atomicBoolDCas(() if no built-in version available.. Some in FXXML parser.. Check for decode error in XML parser.. Encode non-ascii string in FXURL.. Return original user-data pointer in addTimeout() and addDeadline(), addChore(), and removeChore(). This allows one to Delete user-objects that may be referenced by those callbacks.. Added non-wrap mode as output format in reswrap.. Split off OpenGL objects from FOX library placed into separate glviewer subdirectory.. Use nanosecond-accurate stat() output, if available, in FXStat.. In FXText and FXTextField, can now use wide-character delimiters.. Only escape left and right quotes in FXString escape() if non-zero.. a problem in FXSpinner and FXRealSpinner.. Factory function on abstract classes (FXIMPLEMENT_ABSTRACT) now yields NULL object instead of cratering program.. FXApp runWhileEvents(() blocks for just a little bit, allowing for roundtrip in case last commands caused events.. Removed FXFile::rename() and FXDir::rename() in favor of FXFile::move().. Some improvements to PathFinder file manager.. Disallow assignment to FXObjectListOf and FXPtrListOf from rvalues not type-compatible with lvalue.. Added peek() API to FXPtrQueue.. Namespace preneeded in FXIMPLEMENT_ABSTRACT macro.. In FXDirVisitor, check both file index (inode number) and volume id, as file indexes may be same on different volumes.. In FXDirVisitor, drastically reduce number of system-calls by passing FXStat results when recursing.. to selection-tracking variables in PathFinder.. Improvements in fxscanf.cpp scanning digit groupings; not perfect yet however.. Added API in FXDirVisitor to allow access to FXStat result while in callback; this can further reduce system calls.. Some corner cases in FXPath::absolute().. in FXFile::copy().. Updates to Adie.stx default language syntax file.. Compiler warning.
1.7.5626 May 2016 21:25 minor feature: Removed quoted string length limitation in XML parser.. Removed comment length limitation in XML parser.. Pass all text of processing instruction in one single callback from XML parser.. XML declaration now only recognized if followed by whitespace.. Updated Visual Studio 2008 project files to add enable intrinsics flags. This was causing problems compiling FXAtomic file.. In FXAtomic, favor inlined x86 or x86-64 assembly over GCC builtins, due to spotty implementation of these primitives.. Quoted string in XML could have newlines or blanks; adjusted parsing routine to not lose track of line and column numbers while parsing Over strings.
1.7.5522 May 2016 12:25 minor feature: Added XML Parser capability. This is a SAX parser, which generates callbacks for each XML element encountered. There are two new classes, FXXML which is the core parser class, and FXXMLFile which parses files or inputs from devices. The FXXML class may also be used to parse from memory buffers.. FXWSQueue implements a work-stealing queue. A Work-Stealing queue supports a single thread adding or removing jobs from The front end, and multiple threads removing jobs from the backend.. PathFinder now has new ways to select files quickly: by means of wild-card patterns. The new selection method is based on the list of file-patterns available from the normal filter drop-down Box (which may be configured from the Settings Panel). It can be invoked from Edit/Select Files menu.. New fxmath function fclamp() added; usually, this is implemented in terms of fmax() and fmin() which are Branch-free on many machines.. Using new Math functions in most places inside library itself.. Added line to box (2D) functions to FXExtent.. FXText shows block-cursor when in overstrike mode.. in case clearElms() is used with volatile pointers.. More work done on FXDispatcher.. Dont add accelerators for strings on Bookmarks menu in Adie editor.. Escape amp; in FXRecentFiles to avoid accidentally installing accelerator.. index type in FXGLObject.. Added new classes for generic callback infrastructure, FXCallback. To support older compilers, The current implementation does not yet use varyadic templates (maybe at some future time, it will). The new FXCallback mechanisms are already in use in FXXML and will soon be used in FXDispacher as well.. Some in FXJSON.. Missing va_end() in fxprintf() and fxcanf(). Not serious on most compilers, however.. Updated syntax patterns for Adie editor.. In fxscanf(), a n does NOT increase return count.. Thousands grouping in fxprintf().. FXVariant (and other collection classes) indexed with FXival instead of FXint. Allowing for 64-bit very large data structures.. M
1.6.5116 Mar 2016 10:05 minor feature: Small for 64-bit casts in dctest.cpp (compiler warning ).. JPEG image I/O color spaces handled better.. FXApp input callback message ID for SEL_IO_EXCEPT was wrong.. Change in how FXStat determines if a file is an executable (Windows).
1.7.5407 Jan 2016 16:45 minor feature: New namespace Math collects most math library calls in C++ namespace; also on Windows, implements missing math functions Where needed. This includes single-precision math functions, and thus old macros for these have been removed.. Help-file in Adie now regenerated during build from plain-text source.. Block-cursor in FXText when in overstrike mode.. Join-lines operation added to Adie.. Removed deprecated API's from FXComplexd and FXComplexf.. Updated VC++ project files.. Handle NaN and Inf on floating point string input (fxstrtod).. FXPath::isHidden() should work on Windows.. Warnings in fxstrtoll() and fxstrtoull().. Added at() API's to FXVariant, like FXDictionary and FXArray have (syntactical convenience).. Use FXival for FXVariant which allows large sizes on 64-bit machines.
1.7.5327 Nov 2015 13:25 minor feature: FXFontDialog initialized to sensible size when first-ran.. FXPath::match() algorithm major correctness improvements for nested patterns, and better error Detection for broken patterns.. some layout in PathFinder when choosing large fonts, menubar icons were not centered vertically.. Dialog to search files for regular expression in Adie now fully functional.. Invalidated bookmark locations could cause trouble when bookmark menu popped up; now.. Some functions refactored in Adie.. Minor problem in groupbox example application.. Added facility to change scroll bar width in ControlPanel.. Added checkbutton to search only for first occurrence of pattern in file in FindInFiles dialog.. Pass base directory of search to FindInFiles visitor so we can relativize paths to it when recording search matches.. Zero array in FXIcon to shut up valgrind.. FXComplexf and FXComplexd APIs more compatible to standard C++ library: added norm(), abs(), arg(), exp(), log(), and conj(). The old names conjugate(), logarithm() and exponent() will probably be deprecated.. Some improvements to Adie's incremental search capability.. FXDirVisitor recursion limit added.. FXDirVisitor now has skip as well as early-out return mode.. Included paper reference motivating FXRandom shift-xor counts changes.. Change file mode improvement in PathFinder.. FXPath::isValidPath() API added.. Some to PathFinder directory handling.. Expand environment variables when switching directories in PathFinder.. Some compiler warnings.. FXThread priority.. FXSettings parser.. Incremental search history now being saved in Adie.. Backward search in Adie.. Search and Replace Dialog.
1.7.5202 Jul 2015 10:25 minor feature: Squeeze out useless instruction from fxgetticks().. Add adopt() of FXVariantArray API to FXVariant.. Fixes in Adie syntax parser.. Problem in FXIODevice fixed.. CMYK color conversion in JPEG image support fixed.. Improved FXRandom implementation.. Escape key to close dialogs now handled via FXAccelTable instead of hard-wired.. FXReplaceDialog search history implementation improvement.. Improvements to FXDirVisitor, and added early-out option.. Fix Adie text editor core-dumping issue with backward searches.. FXPath::match implementation improvements; more to come.. Added return codes to FXIO, FXIODevice.. Added setMode() API to FXIO, FXIODevice.. Early-out in dictionary classes.. Improved speed of failed search in dictionary classes.. Better docs on FXExpression.. Execute shell commands feature added to Adie.. Scrolling Syntax menu in Adie; list of supported languages getting too big.. Added some protection to FXMessageChannel.
1.7.5116 Mar 2015 13:45 minor feature: Syntax-colors in Adie can now be language-specific. Language families like C/C++/C#/Java share common syntax-colors. Syntax-colors in Adie now have initial (default) foreground color value in Adie.stx file. End-user can change, however. Fixed syntax-file parser in Adie: token hash incorrectly calculated. Fixed uninitialized value issue in FXFileSelector, flagged by Valgrind. Use thread-safe time functions on Windows, when available. Fixed potential endless loop in FXText::findText(). Some fixes for VS2008. Removed deprecated FXMutexLock in favor of FXScopedMutex. Many standard clipboard types pre-registered now. Charset conversions moved into FXWindow getDNDData(), setDNDData(). UTF8, UTF16, and ASCII support, for FXString. Off-by-one error fixed in fxscanf() when scanning character-sets. Template FXHashOf added. New class FXDispatcher being implemented (experimental). Insertion of command output into Adie text buffer is now undo-able. Log-window added to Adie; pops up when executing command outputs to stderr. Implement Larsson, Moeller, Lengyel sphere-box overlap algorithm; use branch-free fmax, fmin, fmaxf, fminf where possible. Fix warning in fxendian.h. Added encode/decode URL feature to Adie. Equality operator in FXVariant has been removed. Inherit handle option works on Windows. Added return codes to FXIO, FXIODevice. Added setMode() API to FXIO, FXIODevice. Early-out in dictionary classes. Improved speed of failed search in dictionary classes. Better docs on FXExpression. Execute shell commands feature added to Adie. Scrolling Syntax menu in Adie; list of supported languages getting too big. Added some protection to FXMessageChannel.
1.7.5012 Nov 2014 13:45 major bugfix: Major changes in the regular expression engine. New API amatch() for anchored match, and new API search which replaces match(). More sensible parameter order and moved some flags from run-time to compile time. Internals of FXRex are now ready for UTF8 matching; however parsing part will need to follow before these new capabilities can be put to use. FXRex::substitute() now interprets the usual escape sequences when creating replacement pattern from regular expression match captures. Speedup in FXText getByte(), getChar(), etc. by introduction of branch-free handling of gapped-buffer accesses. Moved hard-wired search and replace dialogs out of FXText and into Adie text editor; this is part of the FXText widget slim-down program. Adie text editor search and replace improvements. Basically, stream-lines mouse-free usability. Adie incremental search bar now pops up at bottom of window. This is much less disruptive as text does not get "pushed down" when this toolbar pops up. The FXHash find() routine now returns the slot index, or -1 if not found. If you use FXHash you should be aware that simply replacing find() by at() will fix your code to the new system. This was done based on request from a user who noted the find() API in FXHash behaved differently from the find() in FXDictionary. Strip leading and trailing space from display in Adie's bookmark menu. Added ParallelMax constant declaration for FXParallelFor. Change to FXText findText() API. The new version can perform not only forward and backward search, but also anchored match. The anchored match is performed if neither SEARCH_FORWARD or SEARCH_BACKWARD flags are passed. Goto Line dialog moved from FXText to Adie text editor proper (also part of FXText widget slimdown program). Adie Replace Dialog now has Search button. Adie Replace Dialog Replace function now first checks if current highlighted text is the one being searched for, and only searches further if it isn't. This logic will therefore replace already hi