NOTE: As of gentoo 0.11.1, this file is kind of obsolete. Take a look at NEWS instead. List of changes, additions and fixes in the various development versions of everybody's favourite Unix file manager, gentoo. Notes closer to the top of the file are more recent (as you also might figure out from the version numbers). Although it may sound unlikely, I sometimes do changes so minor that they don't show up here. 0.9.24 * Wrote a silly one-line script (in "scripts/chkdef") to help me hunt down missing includes. Fixed a couple of <stdlib.h>'s. * Cleaned up the text viewing code slightly, creating a new source file. * Implemented a ViewTextOrHex command, which looks at the contents of a file and then decides if it should be viewed with ViewText or ViewHex. Very handy as View action for the Root style. * Fixed uses of mmap(), they didn't check for erroneous return values correctly (MAP_FAILED is -1, of course, not NULL). * Uses of mmap() now fall back on plain read() I/O if mmap() fails, as it can on some filesystems. * The example config now knows how to view Internet RFC documents (the plain text ones, compressed using either 'compress' or 'gzip'). Requires a smart 'less' command. :) * Previosly, if you ran the Rename command but cancelled it, it would complain about a overwrite nesting problem the next time envoked. Fixed. * The first entry input field (created by {Is:...}) in a command input window will now be focused. A gross hack, but it works. Also, the text will be selected in the widget, just as it is in e.g. the Rename command's dialog. This can speed up text entry. * You can now press Escape to close the text viewing window. Works both when used through ViewText and when capturing command output. Occasionally, this seems to fail... I don't know why. * The text widget in the text viewer is given the focus as the window opens, which should allow scrolling using the keyboard directly. * Command input menu widgets (created with {Im:...} now support specifying two texts for each item: the label and the actual text that results from choosing it. To use this feature, put a colon (":") between the label and the text. For example, you could enter {Im:"Number"="One:1","Two:2","Three:3","Four:4"}. This would produce a menu with textually labeled items, that produce numerical results. Note that there is currently no way to actually put a literal colon in the label part... * The command argument parser has been overhauled, and is now WAY better. It's now a lot more shell-like, and separates arg- uments with spaces. This might mean that you have to add quotes (double or single) in some cases. The new improved parser makes a lot of tricks (such as using a {Im:...}-code to choose between two commands *with arguments*) possible that weren't before. Note that file names ({f}- and {F}-codes) are always quoted, so don't write "{f}". * In command input windows, you can now have multiple descriptive texts. They are created by the {It...} code, which was formerly used to support a single window title. Use several {It...} codes after each other to create multi-line messages. Use {It:"-"} to create a horizontal dividing line (not very textual, but anyway related IMO). * Added a {Iw:"title"} code which lets you set the actual window window title for an input window. Hm, perhaps this should be called {It}, and the existing {It} be renamed to {Il}... Yeah, maybe, but it hasn't been. :) * Changed the (perhaps little-known) keyboard quit shortcut from Escape to 'q', to reduce risk of premature quitting. * If, during a copy, an error occurs, but the destination file has the same size as the source, the error will be ignored. * Rewrote interface between command output grabber and the text viewer. Asynchronous termination now cleaner & more stable. * The width of dirpane columns is now adjusted using a so called "spin button", rather than a slider. Precision improvement. * Fixed a couple of incorrect {}-sequence "helpers" in the command config page. 0.9.23 * Fixed a couple of source-code compatibility issues reported by users. * Added a (very simple) workaround for the (IMO) broken semantics used by rmdir() on non-empty directories under SGI's IRIX (it returns EEXIST, rather than ENOTEMPTY). The fix should not affect the behaviour of gentoo on other platforms (I hope). * The Delete command also no longer reports ENOTEMPTY as the reason why you can't delete dirs in which you can't write, but EPERM. * The shortcut buttons now support showing their respective paths as a tooltip popup. It is individually controllable for each shortcut, and the default is to not show anything, so you're going to need to turn'em all on if you want this. * Fixed numerous calls to gtk_entry_new_with_max_length() that had the max length 1 char too long. Pretty harmless, but... * Added support for tooltips on command buttons, too. These are somewhat more flexible than the shortcut ones; the string that is displayed is configurable, too! :^) As with the shortcuts, there's a flag that controls if the tip is shown, per button. Note that the tooltips won't show up during configuration. * You can now double-click on a dirpane column content type row (in the right list on the config tab) to Edit it. :) * Removed all blank lines from the man-page, since everybody but me seems to have a 'man' command that cares about them. * Replaced all literal integer arguments to the exit() function with one of EXIT_FAILURE or EXIT_SUCCESS, as is proper. * Implemented automounting, which is pretty cool! You just access the mountpoint, and gentoo mounts the required device for you. On exit, it will (optionally) unmount any mounts it did. You can read more about in "docs/scratch/mount.txt". * Fixed a bug in the Rename command's behaviour for the case when no rows were selected. * The Move command no longer rescans both panes when it doesn't have to (i.e. if you run it without a current selection). * Rearranged command row editing buttons slightly. Also stopped following the current item around when moving it, since GTK+ really has problems with that. * Added ActivatePush and ActivatePop commands, which implement a stack. Useful if you wish to use other activation commands in a command sequence, but not affect which pane is current after the sequence finishes. Just do "ActivatePush", ..., "ActivatePop". * The progress window now cancels the operation if you hit Esc. 0.9.22 * Added display of current line and percentage to text viewer. * Added a GTK+ widget name ("cstPreview") to the CList used to preview panes in the File Styles config page. * The textviewer now doesn't get all confused (and crash) if you are mean enough to close it while its Goto dialog is open. * Added Search capabilities to the textviewer. Might not be the most intuitive search function you have ever used, but seems to work. For more information about how to use it, check out "docs/scratch/search_howto.txt". * The dirpane position history now works even better, especially for cases where files have disappeared (right after Delete). * Clicking the little "H"-button (to toggle "Hide Allowed?") now also activates the pane. Makes it less confusing. * The "IQSize" dirpane column type now also has an option not to show the filesystem size for directories, just like the regular "Size" has. The "Blocks" content doesn't, though. * Modified the File Types config so that now when you click Add, the new type appears just below the currently selected one. If there's no selection, it appears next-to-last. The list redrawing is (still) pretty much broken; I blame GTK+ for that... * Changed order of things done at startup, so now it is possible to specify a GTK+ RC path of "~". This used to fail. * Added a "run_file" user command example, since many (2) people have asked how to define one of those... Was it so hard? :^) * Added the command-line option "--no-rc" which causes gentoo to skip loading its config file (.gentoorc). For reasons of symmetry, I also added the "--no-gtkrc" flag, which does the obvious thing. * Inspired by the man-page written by Josip Rodin (maintainer of the Debian Linux package of gentoo), I finally do 'man 7 man' and write up one of my own. You can find it in "docs/gentoo.1x". * Replaced the ".." label on the DirParent-button (left of path entry widget in panes) with a specially crafted icon. Might be clearer in meaning and easier to spot. * Added a File Type (and Style) for Perl source code... * Moved the XPM files that are compiled into the program into their own directory (graphics/) so they're less in my way. :) 0.9.21 * Fixed a huge bug in the creation of the default button rows. The same row was added twice to a list, causing great confusion in the memory management routines when attempting to free it... * The Type configuration page now shows the icon as well as the name of the corresponding Style. Looks kind'a neat. :^) * Added an option to blank out the "Size" column for directories, until you run GetSize on them. The option is in the column- specific dialog (click "Edit" with the Size-column selected on the Dir Pane config tab). * If a config change caused the dirpanes to rebuild, they would lose the indication of which was current. Fixed. * The Mode-column now also shows type and the setuid, setgid and sticky bits, using (I think) the same format as GNU ls. This format is highly magic. Because of the way in which gentoo currently treats links, they will never be shown as links by Mode. Sorry. * Oh, darn. It seems that I accidentally disabled all {}-codes in 0.9.20. Major oops. Fixed. * The vertical position memory for dirpanes had somehow stopped working (I didn't touch it, I promise!) too. Fixed that as well. That is really a fragile kludge, but I like it so much that I'll try and keep it... * Added some glitz to the text viewing window used by the ViewText and ViewHex commands. A few of the buttons are ghosted out; these have not been implemented yet (left in to show what's coming). * The overwrite-confirmation requester (and all other dialogs using the same underlying code) is now automatically raised, which should reduce confusion between it and e.g. the progress reporting window. * Replaced the HTML documentation with a version that is sanctioned by one of Obsession's web-professionals (<ulf@obsession.se>). It sure has the looks, but the content is still outdated. :( Sorry. 0.9.20 * Removed -Wsign-compare from the CFLAGS, since it's not supported on older (2.7.x, I believe) versions of gcc. It seems I'm not the last person to upgrade (I'm now running 2.8.1)... ;^) * The cfg_buttons.c module didn't compile on Red Hat systems. Of course, 0.9.19 was released without testing on RH first. :( * Made sure "gentoo.h" is included first in all modules, which is really a must. * Added inclusion of <stdlib.h> to some places, where it was obviously needed. As usual, I don't have any problems at all with this, but users running RH indeed have... Hm. * Updated the icons/ directory with Johan's latest creations. You can find more at <http:/http://www.dsv.su.se/~j-hanson/>. * Um... Thought I found a race-condition bug in the command-running code, but couldn't find it before it magically disappeared. :( * Possibly fixed a bug that has been here since the first release, making gentoo have problems with empty directories. It turns out that the implementation of realloc() I have on my system doesn't work as the man-page says it should. :( * The Copy command (and therefore, indirectly, parts of the CopyAs, Clone, Move and MoveAs commands) now always checks the size of a file before starting to copy it. It used to rely on the value in the pane, which is not always up to date. The new size, if any, will *not* appear in the pane. It will just be silently used. If you don't like this, create user command wrappers for each of these commands that first does a DirRescan, then runs the command in question (e.g. Copy). * Wrote up a short tutorial/howto on how to define user commands. You can find it in docs/scratch/command_howto.txt. Cleaned up the docs/scratch directory while I was at it. * The user command parser now has rudimentary support for quoting portions of the definition. Use double quotes. Quotes override everything, so you can't use {}-codes inside quoted portions. :( 0.9.19 * Added gtk_text_freeze()/thaw() calls when generating hex dumps (the ViewHex command). Speeded it up a *lot* (perhaps 10-100X). * Implemented a DpHide command which toggles the hiding (the "Hide Allowed?" flag) directly. Connected it to the little H-button next to the pane's path, which was useless in 0.9.18. This is not a final design; I'm just trying it out. I like it, though... * Implemented a rudimentary but nice Information command, which opens up a dialog showing summary info about each selected row. It became pretty Windowsy, but not too much. * While writing the Information command, I felt the need for a recursive directory traverser, so I wrote one in the fileutil.c module. * Replaced guts of the old GetSize command with a call to the new directory traverser. Smooth. * The MoveAs command would fail if a move across devices was attempted. Now it won't. It also had completely broken progress reporting, fixed that too. * The progress reporting module now uses the new fileutil-function for its recursive scanning/counting, rather than its own. Good. * The ViewText command now uses mmap() on files having a positive size, while reading 0-length files with read() (for /proc). * Added a "Scrollbar Always?" flag to the dirpane config tab, which makes the pane's vertical scrollbars disregard the number of lines, and appear always. The horizontal one is still "smart". * The overwrite dialog now shows sizes and last-changed dates of conflicting files. * Changed button caption in About & child dialogs to "Close", which I think sounds less modal than "Continue" and "OK"... ;) * The CopyAs and MoveAs commands now allow you to enter an absolute path to the wanted destination, rather than rely on the implicit path of the destination pane. Also, they and the Clone command now always select the suggested name in their dialogs (like the Rename command always did). * Fixed a bug in the fut_size() function (probably harmless). * The command selection dialog (opened by the Run command among other things), no longer creates a silly empty tree if there are no user-defined commands. :) * Almost completely rewrote the guts of the userinfo.c module. It now uses BSD-ish system APIs for reading password and group data, and thus no longer requires (or allows) the user to specify from which files to read. It also no longer re-reads the system data files on every unknown ID; this takes too long on fat systems. * Fixed a few signed-vs-unsigned comparisons. * In celebration of the rewritten userinfo module, I added support for ~-expansion to gentoo's path parser. This is used when parsing the paths you enter in the config, as well as shortcuts and stuff typed into a pane's path entry box. Note that ~-expansion, unlike $-expansion for env-vars, works only if path *begins* with ~. * If you include the same directory multiple times in e.g. the icon path, you no longer get multiple copies of each icon. Unless you try harder. * Added "{ic...}" and "{Im..."} codes to auto-insert-window in the commands config. Thosw had been forgotten. * User-defined commands now do ~-expansion, too, using the {~NAME} code. Leave NAME empty ("{~}") to lookup current user's home dir. Unlike paths, you can embed {~NAME} codes anywhere in the command. * Removed silly "Name" list column title in file type config. :^) * The dirhistory was broken; it used inode numbers as unique IDs for remembered rows. That won't work, since inodes are only unique with- in their particular device. Now uses both device AND inode numbers. * Improved the buttons.c module a great deal, adding more utility- calls in order to increase opacity of related data structures. The net result should be increased stability. * Encapsulated shortcuts in their own module, which cleaned up the corresponding configuration module considerably. * Improved the pseudo-XML module used for config files greatly. It now looks and works a whole lot cleaner, while requiring less code in the "client" modules, thus hopefully increasing stability. * Changed the config file format used for paths, at the expense of breaking backwards-compatibility. Sorry about that, but I really feel it's worth it. * The supplied config now knows about PostScripts files, and can view them if you have ghostview (gv) installed. ;^) * The Copy command no longer unselects files it fails to copy. This is more in line with the Move, CopyAs and MoveAs commands. 0.9.18 * Capitalized A Couple Of Words in the selection dialog... * Example config now understands PDF files (and you can view them, if you have AcroRead installed). * Fixed a bug in the directory history, where it could sometimes set the pane vertical position from random data on newly entered directories! Yuck. Reported by Johan Hanson, the icon wiz. * Added recognition of JPEG images to the config... * Now uses the latest version of Johan's icon package, in icons/. Check out those new image-icons! Also uses the "Bad.xpm" icon as the built-in icon for load-failure (in "icon_failed.xpm"). * Removed the explicit priority field from file types. The priority is now simply taken from the type's list position. Added up and down arrows in config page for easy adjustment. Makes the handling of types more consistent with other things, but loses the automatic sorting... * Implemented a per-pane adjustable configuration flag, that controls whether the pane cares about file hiding or not. Connected this to another "secret" keyboard shortcut: try pressing 'h'... * Tidied up the command interface to the configuration window, and added a "ConfigureSave" command in the process. Don't hold your breath for a loader, though... * Added true GTK+ widget names to the pane column lists. Now the supplied GTK+ RC file only sets the fonts there, rather than in ALL CLists. Neat. Updated README.gtkrc accordingly. * Changed the order of the config pages somewhat, making them some- what more logical (or something). * Fixed a potential memory-leak when deleting types, and also made it select a new current type after deleting, which is nice. * The children.c module now uses the POSIXly correct API for dealing with signals. Since POSIX signals are supposedly reliable, this might work better. Some testing on Solaris actually seems to support this theory, too. Good. * The output capture window no longer opens before there's some- thing to show. This has the interesting (?) side effect that if there is no output, it never shows up at all, which is nice. * The GTK+ Text widget used by gentoo now has a name, which allows you to control its look through the GTK+ RC file. See example. * Removed the progress reporting for the Delete command, since I really didn't like the way it behaved (I'm surprised nobody has complained). * The command selection dialog (used by the Run command and when setting up actions) now remembers collapsed/expanded states for its two subtrees. No saving, though. * Added a Zip-disk size template to the Split command. * Fixed the UnselectFirst command, which didn't refresh correctly. * Improved the behaviour of the vertical position history when the number of rows in pane changes drastically. Not good, but better. * Polished up my str_snprintf() implementation... Safe (& shiny) now. * When capturing output, the viewing position of the widget is now forced to the top when output ends, rather than being random. * Changed the wording in the quit-confirm dialog slightly. :) * Changed the implementation of the ViewText command; it can now be used to look at files in the /proc filesystem (at least on Linux). Avoid kcore, though... * Added a ViewHex command, which (slowly) renders hex dumps. * Added a default value for the GTK+ RC path compile-time symbol. * Fixed a bug: fileutil.c thought that root could execute any file, regardless of x-flag. 0.9.17 * Damn! I hadn't tried to compile 0.9.16 on SunOS *before* releasing it, so of course it didn't compile. A quick fix, but incredibly stupid. * Damn again! I must have overwritten my "glib.h" at home with a 1.1.x version, or some such, because a couple of functions in the "dirhistory.c" module were defined with types from 1.1.x. 0.9.16 * Idling around in the source, I spotted the fut_locate() function which was looking extraordinarily kludgy. Improved it slightly. * Added an inclusion of <stdio.h> to the dialog module. It really should be there, since the module in fact calls fprintf(), refers to the symbol stderr, and so on. On the other hand, I get no compiler objections when compiling, which makes me curious. On inspection, it turns out that dialog.c includes <gtk.h>, which in turn includes <gtkcolorsel.h>, which in turn includes <stdio.h>, so there. The question now is why this fails, as it apparently does on some users' systems. I don't get it. Without having direct access to those systems, it's hard to fix these kinds of errors... * Added -Wmissing-prototypes to the compile flags; this exposed a number of cases of, er, missing prototypes. Fixed them, so now the global name space is less polluted. :) * The selection history has been changed; it now hashes the lines' inode numbers rather than (dynamically duplicated) name strings. This greatly improves speed, while conserving loads of memory. * The path entry widgets now loose focus if you click in the pane listing. It was previously rather difficult to "unfocus" it. * The supplied example configuration no longer uses any rules with 'file'. Makes it less intimidating on systems with "bad" 'file' implementations, hopefully. 0.9.15 * Optimized the directory history handling. Very trivial, but didn't occur to me before the release of 0.9.14... Shouldn't be a big deal either, but it helps me sleep at night. * Fixed a trivial but evil bug, which effectively prevented you from being able to type in the path entry widgets. Oops. * The history system has been extended to also include the set of lines that was selected, so when you return to a directory, the same lines will be reselected. Also, the vertical position in the pane is retained. * Added support for building combo widgets for use in command input dialogs. Use the {Ic...} code (same other syntax as menus) for this. * Fixed the definition of the sample 'create_tar' command. It didn't, but now it does, and uses a combo too. * Added support for cancelling certain dialogs by pressing ESC on the keyboard (the command input dialogs, for example). * Added support for reading in a GTK+ RC file, thus allowing the looks of all widgets to be customized by the user. This is very cool. The implementation is functional, but also minimal. Read more about it in the README.gtkrc file! * Fixed a bug in the Makefile, and made sure that my local GTK+ RC config is included in the distributions. * Compiled gentoo with optimization for the first time, which revealed some potential bugs (data flow analysis rules!). Fixed'em all. The Makefile's default is still to compile for debugging, though. 0.9.14 * Added display of GTK+'s version in the About dialog box. :^) * Fixed a tiny bug where error messages "stuck" when they shouldn't. * Added (GCompareFunc) casts where necessary. I'm dumbstruck as to why the warnings I suddenly see have never shown up before... * Added a Play action, and a corresponding FilePlay command of course. This should come handy to people using gentoo to manage collections of MP3 music, for example... * Removed use of alloca() in the dialog.c module, having re-read the C FAQ (fear of portability problems). * Handling of dirpane default paths improved (used to refer to my home dir on my personal system, which clearly sucked). * Added some lines to the Makefile's "dist" target to copy my current personal config into the "gentoorc-example" file; this should ensure that distributions always include a current config. * Running 'make install' no longer installs the configuration file. It will let you know where to put it though, so you can choose between a site-wide and a personal installation of the config. * Added another submenu to the right-button pane menu, with shortcuts to the various FileXXX action commands. Pretty neat. * Added a cute little code module (options.c) to deal with command- line parameters. Also added the option --root-ok, which will make it possible to run gentoo as root, something that is normally not allowed because of the security risk (this is development software, and all that). * Implemented a neat little path history. Click the down-arrow to the right of the path entry widget, and a pop-down list showing the 16 most recent directories appears. Select one, and off you go! The number of paths stored should be configurable, but isn't yet. 0.9.13 * Removed the last (?) couple of non-ANSI-isms from the code, as well as a couple of other silly warnings reportedly detected by Sun's cc compiler (but not, irritatingly, by gcc on my system). * Cleaned up the quit-handling, by discovering GTK+'s nice support for quit handlers. Now all child processes started by gentoo are killed as gentoo exits. This might be suboptimal if you want to use gentoo as some kind of application launcher, so I added a "survive" option to the command config, for that purpose. * Enabled GTK+'s timeout support for the dirpane popup menu, since I've received a couple of reports stating that there is some kind of problem with the menu disappearing too quickly, or something. I've not been able to reproduce this error myself, but this might fix it... * Added checks of gtk_clist_get_selection_info()'s return value, which should fix the sometimes odd drag behaviour. These checks were really necessary, but I hadn't noticed until I ran gentoo on Solaris. * Improved handling of hard-coded paths; all paths (?) that need to be compiled into gentoo are now defined in the Makefile and handed to the compiler using the -D option. Fixed paths for config file, icons, and password & group files this way. * The chmod command now works a little better (it respects its own default values). * Moved the two quit commands into their own code module, and also moved the initialization of the built-in commands to the cmdseq module. * Fixed yet another pointer initialization bug in the dirpanes, which caused bus errors on Solaris. Compiling code on different systems really is good for you! * It is now possible to access selected files in the destination pane in command definitions. To do this, include the 'd' flag in the control code (e.g., {fdu} or {Fd}). The source pane is the default (for convenience and compatibility). * The position of the path entry widget is now configurable; it can be either above or below the actual pane contents. * Added support for hiding files from the directory panes. Three modes available: no hiding (like before), hide entries beginning with a dot (fast & common), or hide entries whose name match an RE. Cool? * The initial position and size of the gentoo window are now config- urable. You can get gentoo to track the position & size as well, and save them when you quit. Note, however, that you cannot manually make the window smaller than the size specified. This sucks, but I haven't been able to figure out how to fix it. Tips welcome. * Fixed a bug with the progress reporting in the CopyAs and Clone commands (wasn't properly initialized => loads of GTK+ warnings). 0.9.12 * Did even more ANSI code cleaning. * This version builds right out of the box on SunOS 5.5.1 (aka Solaris 2.5, I think). At least it does for me, using gcc and gmake on the Solaris box. The version of gcc used was 2.7.2. Read more about this in the INSTALL file. * Fixed a tiny bug in the generation of the filename for configuration saving (had no practical effect). * Updated the gentoorc-example file, which had grown horribly old (it was from 0.9.7, i.e. not even format compatible). Oops. * Reimplemented the strcasecmp() function, since it's giving me a portability headache. * Got a new logo for the About-box, from Ulf (ulf@obsession.se). 0.9.11 * Empty command names are now ignored, reducing the number of silly dialogs when double-clicking on styles with empty actions. This is better, since an empty action really shouldn't cause any execution. * After some hints from Drazen Kacar (dave@fly.cc.fer.hr), who ported gentoo to Solaris 2.6, I went through the code, fixing non-ANSI-isms and making it generally a bit more well behaved (I hope). It now compiles using "-Wall -Wno-unused -ansi -pedantic" with no warnings. Some of the items fixed include the removal of non-constant variable initializers, empty "default:"-clauses in switches, lots of signed vs. unsigned comparisons, some stupidly illegal pointer arithmetic (like "(gpointer) 1 + i"), use of umode_t when I meant mode_t, and so on and so forth. Also found and removed one of those silly trigraph sequences that had sneaked into a comment. * Finally got around to re-implementing support for the input menu code in user commands ({Im...}). Cut away all the old code kept in there a fall-back, which cut the cmdparse module's size in half. 0.9.10 * Hacked away the focus-ability from the scrollbars of the panes as well as the shortcuts. This leaves only the pane path entry widgets as being "focusable". Unfortunately, it seems as if these have to remain that way in order to work at all. :( * Added a call to err_clear() in the command sequence executor. * Wrote a first version of a progress-reporting system; opens up a dialog with bars and stuff. Currently only being used by the Copy command; there's a whole lot of integration left to do. It also didn't become quite as powerful as I wanted it to -- writing a good progress reporter is simple, but difficult. * Continued polishing the progress reporting, and implemented use of it from the Delete and Move commands, too. Still haven't gotten around to putting it into the CopyAs, Clone, and MoveAs commands, however. Also, it will need some configuration, and the error message shown when you hit the Cancel button in the progress window is somewhat confusing (Linux seems to lack the ECANCEL error). * Added a cute little "Grab Current"-button to the default path frame in the dirpane config. * Worked around the GTK+ problem with title-less CLists in the child dialog, too. Might possibly be the last one... * Removed all occurances of // comments, thus making the code a lot more kosher (this is C after all). 0.9.9 * Changed the selection mode in the cmdseq_dialog. Looks nicer now. * I (think) I fixed a memory-overrun problem leading to SEGV faults in the cmdseq_dialog/cmd_run modules. * Added some semi-cool auto-completetion features to the command sel- ection dialog. Just type, and it might figure out what you want... * The Copy command would not stop on first error. Now it will. * Implemented the narrowness-support for buttons. I'm not sure I like it, but I'll leave it in there for a while. * Rearranged the text in the About box somewhat. Huge deal, huh? :) * Fixed a bug in the overwrite-module that prevented it from inter- pretating its flags correctly - it would always hide itself. 0.9.8 * The "multi dialog" routines (in the dialog module) are no longer busy-looping when waiting for user response; gtk_main() is reentrant!! So, there's no longer a moral penalty for using these routines. * Tore out, publicly humiliated, and finally shot (!) the old command code, and rewrote it all. That's a 3,000+ line rewrite, but it was sure worth it... The new command architecture is way cleaner, cooler, and more flexible. It's not config-compatible, though. Sorry. * Rewrote the configuration of the buttons; it is now done without opening an extra dialog. Still haven't actually implemented that little "narrow" flag, though. :) 0.9.7 * Switched to GTK+ 1.0.6, which just appeared. Don't know if this will require any changes in gentoo, but I'll investigate. From reading the ChangeLog it looks as if most changes are internal. * After the switch, the style config page (of all pages...) started to produce warnings from GTK+. Some extensive tracking showed that its the visual property preview CList that's responsible. That's about all I know right now, though... (Later) Fixed it. The problem was that the clist had no titles, and that made GTK+ attempt to render a NULL widget. Fixed by adding empty titles and hiding them. This should be reported (I've posted about this to the gtk-devel mailing list). * Fixed some very minor mishap in the style-config GUI construction. * DirEnter now resets the internal double-click row. * Fixed a tiny bug in the DirToOther command which prevented it from operating properly (but enabled it to mess up the pane totally). * Fixed a very small, but serious, problem in the delete_dir() function (in cmd_delete): it didn't work for non-empty directories. :( * Extended the old "Append slash" option to append type-specific info just like 'ls -F' does (dir, executable, link, FIFO, socket). * The expand/collapse state for style tree nodes is now saved in the config file, too. :) * Noticed that the file typing didn't work as expected when the only type information was the mode bits; these bits aren't used as "pure" flags in the file system. I knew this, but not well enough... Fixed. * The path parser now supports use of environment variables anywhere in the string; you can use "/home/$USER", for example. Any number of variables can be used, and you can also use ${braced} names. * Removed a slightly redundant function in the fileutil module, and replaced with a (thin) interface wrapper for an existing function. * Did _considerable_ work with gentoo's handling of (soft) links. I must say that, at least symbolically speaking, I hate links. They really mess my life up. Currently, gentoo's handling of links i far from satisfactory I guess. It works fine for me, though. :) Just don't expect it to always do the right thing - it won't (then again, in my opinion, neither will 'cp'). * Implemented an About command, showing the gentoo logo, the version number, copyrught, and a standard disclaimer. * The standard dialogs are no longer modal unless there is a callback specified. Made the About box (and various other dumb confirms/ notifications) behave nicer. 0.9.6 * Found weird bug in the copy command; it fails when copying from a CD-ROM filesystems. I *think* I know why, but my neat fix wasn't... * Fixed a bug with the overwrite-handling in the interactive commands (rename, copy as, clone, move as) that caused it to end up in an illegal state. Found that one myself. :) * Fixed bug where write-protected files couldn't be copied, because the destination was made write-protected too. This caused some confusion when working on CD-ROMS... * Added overwrite confirmation to the Split command, where it had been forgotten. :( * Found and fixed a highly magical problem; gtk_clist_thaw() clears the value of the global 'errno' variable, which made the rest of gentoo loose track of errors. Weird. The same behaviour was then traced to gtk_clist_set_foreground/background() (in dpformat). * Priorities are now shown in the file type listing in the config. * Clicking in the column area of the other pane now only activates it; no change of sorting order is done. Convenient++. * Fixed a minor bug in the buttons config; it would only care about button label changes if the command sequence as set, too. * Implemented the row moving buttons in the button config. * Added some code to reorder the list of styles, so that parents are closer to the front of the list, and leaf nodes in the rear. This ensures that the serializing of the list is always done so that when a child appears, its parent has already appeared. This also fixed a bug in the reparenting in the config. :) * Fixed (I think) the style-sorting, by tweaking the code a little. No change in resource-consumption, though. * Wrote a fun little SelectExt command, which extends the current selection based on the style tree relationships. Makes it dead simple to select e.g. all archives, once you've found _one_. * Tracked down and nailed an ugly bug in the style_dialog module. * Altered the move_to() call in dirpane column editing, since it just fscked up everything. Still don't trust it. * The Quit command wouldn't always (problem in the confirmation dialog). * Nailed down a fairly big race-condition related bug in the command execution system. Clearly, parallel programming is not what I do best. :( * Renamed the DirOther command to DirFromOther, and also added a complementary command (called DirToOther, of course). * Fixed a bug in the Makefile where it thought that the final target ("gentoo") was my project directory. :) * Added two cute little Up and Down arrows to the shortcuts config, and implemented the required operations (really!). * The collapsed/expanded state for the style tree items is now re- membered while gentoo is running (not saved in the config file, though). Perhaps I'll add it to the file if someone feels it should be there... * Did great changes to the handling of sigchild; now the signal handler only notes that something needs to be done, but doesn't actually do anything directly. The real action is done in the (new) queue module. This prevents nesting calls to GTK+, something I have a hunch won't work as expected. * The command input dialogs (for {I...} sequences) now support Escape and Return to cancel or accept, respectively. Great happiness. * I suspect that strerror() also resets errno (or something), so I added yet another save/restore pair (in the errors module). * Improved the behaviour of dp_enter_dir() when the directory it wants to enter doesn't exist/is unreadable. 0.9.5 * Changed constant MAXINT to INT_MAX to comply better with Debian's include files. * Fixed incorrect length limit in configuration of dirpane's default path (was 32 letters, should be PATH_MAX), and also on the definition of a user command (was 32, should be unlimited). * The ViewFile command was totally broken; it didn't check for selected files when no file was doubleclicked, but viewed'em all! Not so good. * Implemented a overwrite "protection" module, which eases the addition of such warnings to different parts of the program. * Rewrote the Copy, Move and Delete commands to use the new overwrite stuff. * Added overwrite handling to the Rename command, and also the CopyAs and Clone commands. * Discovered that the standard C library actually _has_ support for regular expressions! It's even a couple of bits better than the old code by Mr Spencer I had used earlier. Quickly ripped out all uses of Mr Spencer's code, replacing it with POSIX-compliant calls only. * The quit-confirmation dialog now supports saving the config right then and there, and then quitting. Pretty smooth. * When closing the main window, the confirmation dialog would always open, even if it already was. This caused massive confusion and lock- ups. Fixed. * Fixed overwrite protection for the MoveAs command. I *think* that's the last of the commands that really needs it... * The built-in button sheet is now less confusing, I hope. * Poked around a little in the style system, looking for some kind of Heisenbug that seems to be living in there. Didn't find anything. * Fixed a bug in the style config, where seq_get_sequence() was called twice, with the first result just dropped. Very unoptimal. Also fixed the general behaviour of the get-routine; now it returns NULL if the sequence is empty (was "", which is silly). * After some more styled poking (see above), I *think* I nailed it. I definitely fixed some serious wrong-doings in the styles module; styles were copied straight, without reallocating properties. Weird. Also, we were a "modified"-setting short, which is always sh*t. * Error reporting when MkDir fails improved. There was none. ;) * Fixed kill of useless child when running nonexistant external cmds. This needs more fixing. * ovw_overwrite_file() affected the value of errno. It shouldn't. * Hacked the operation of the Rename command; it now totally ignores renames that aren't. * The DirEnter command was broken. It would always return failure. :( 0.9.4 * Fixed major bug in style handling; inherited properties were always copied straight over, rather than being reallocated when necessary. This created huge problems with command sequences (aliasing and crap). * Implemented a new command, ViewText, which simply calls up the internal text viewer. This is far better than having text reading an implicit default action. There are now NO default actions, anytime. * Style system (and command sequence comparisons etc) were basically broken. Fixed (I think). * Implemented priorities for file types, complete with a slider in the configuration page. 255 different priorities are available. * Added ellipses ("...") to the menu items that bring up dialogs. :) * Made the button editor window resize nicer. :) 0.9.3 * Renamed the "doubleclick" action; it's now called "default". Better. * Added a fun little button with an arrow on it, next to the path entry box in each pane. Does an Activate and a DirParent; this behaviour is currently hardcoded. :) Consider it a demo. * Doubleclicking in panes now works a lot better. Try clicking first on one row, then rapidly (doubleclick speed) clicking on another row. * The entire bottom part of the GUI can now be empty (no shortcuts, no buttons). Perhaps not very useful, but looks clean and nice. * Rewrote the button handling and configuration from scratch; ~1050 lines thrown away and rewritten. It's already better, but not very much. There's more potential now, however. * Now pops up a confirmation dialog if you're trying to quit after having clicked "OK" in the config dialog. To get rid of this, open the config and hit "Save". * Added a new command, "QuitNow", which always just quits; no questions. * Added the {#} user command special sequence to the help-dialog in config. * Regular expression matching in type system can now be case-insensitive. * When you exit the config, any currently selected button is unselected. 0.9.2 * The suffix file type check rules now correctly handle suffixes that are "complex"; the first letter in the suffix doesn't have to be the last letter of its type in the string (think ".tar.gz") any longer. Snail. * Implemented support for sorting on the icon column. Uses the row's style to sort, and keeps styles together based on their parents. Complex, and slow. * Oops. Since no commands are actually waited for any longer, all commands in a sequence were started in parallel (regardless of the background flag, which basically only affected the GUI). This of course ruined the entire concept of a command *sequence*. Fixed. * The list of user commands in the config window is now sorted. * Fixed a couple of minor details that prevented button banks of a size different from 8x3 to load properly. Seems to work now, but is fairly untested. 0.9.1 * No more warnings about pixmap loading on startup (window now realized). * Fixed the style selection dialog, which was a) horribly implemented, with code duplication and b) completely and utterly broken. * Modified the Makefile to put object code in a separate directory. Makes it easier to overlook, and a lot easier to create distributions. * Happy with the new and improved directory layout, I fixed the "make dist" target; it can be used to create an aptly named distribution archive. * Implemented CopyAs, MoveAs, and Clone commands. Real neat. * Implemented a rudimentary GetSize command. May need some polishing, but does good work already. * Implemented a paned separator between button bank and shortcuts. Reminded me of the old problem with the initial positioning of a paned widget. :( * Added a couple of commands for interactively selecting a command to run (RunBuiltin and RunUser). Not immediately useful, but sometimes nice. * Made the "label" entry widget in button command config auto-focus. :) * Um, fixed a HUGE evil bug in the copy code: it didn't close the files!! * Got suspicious, and sure enough; the split command didn't close output files either. I sure am sloppy sometimes. * Copy, move and delete commands now all use the standard directory filter to remove unwanted files. Currently, this is only "." and "..". * Copy and split now always open their destination files with O_TRUNC set. This is really a must, otherwise you can't replace a large file with a smaller one.