Revision history for "ptkftp".
4.31 Aug/2002
- Complete redesign from older version.
- Started recording Changes.
4.4 Fri Aug 16, 2002
- Fixed bug where "-browsecmd" callback was called too often.
- Fixed bug where "end" was added as a value on listboxes with no "-width"
option specified when list was automatically resized.
- Fixed problem where listbox width not automatically resized down to new
entry field width when it became smaller.
- Added code to cause the dropdown button and list to be disabled whenever
the list size becomes zero and reactivate whenever a choice is added to
a zero-length list.
- Fixed minor bugs with "choices" and "insert" function.
- Added this Changes file
4.41 Sat Aug 17, 2002
- Fixed disabled background color on entry text.
4.42
- Added "-maxwidth" option to limit maximum width in characters the
entry field will expand to. Otherwise, it can expand as list items are
added to accomodate the widest item string.
4.43 May 31, 2003
- Added several patches by Frank Herrmann to cause the "-browsecmd"
callback to be called whenever the text value changed, and some other
minor tweeks.
4.44
- Added "-listrelief" option to allow one to specify the relief of the
dropdown list (defaults to "sunken" and was previously always "sunken").
- Added "-browse" option to allow for old "-browsecmd" callback behavior
so that it is only called when a selection is actually made from the
dropdown list. This was the behavior before the "Frank Herrmann"
patches were added. The default is the new behavior. To get the old
behavior, use "-browse => 1".
4.47 Thu Nov 20, 2003
- Added "-tabcomplete" option to allow pressing the "<Tab>" key in the
Entry widget to cause an incomplete string typed in to be "completed" to
the next matching string in the list. Pressing the "<Tab>" key again
will transfer focus to the next widget. To get this behavior, use
"-tabcomplete => 1". The default is the old behavior of simply tabbing
to the next widget without altering the typed text.
4.48 Fri Nov 21, 2003
- Fixed bug which caused tab-key to be "stuck" on the widget if there
was nothing in the listbox. Made "-tabcomplete" not change what
user typed in if there is no match in the list. Added
"-tabcomplete => 2" to keep 4.47 behavior (force tab to change the
typed value to a valid list entry or the default value).
4.49 - not released.
4.50 Fri Nov 28, 2003
- Minor tweeks in relief appearance.
4.52 Tue Feb 01, 2005
- Added "-altbinding" option to allow different keyboard binding schemata.
- Added "-disabledbackground" and "-disabledforeground" options.
- Fixed "-labelPack" option to work, if packed above or below main widget.
- Fixed small glitch in listbox vertical sizing.
4.61 Mon Feb 14, 2005
- Added hash-reference as an option for the choices so that it can work like
selects in HTML where one set of values is displyed to the user (the
hash values and the other (the keys) is actually returned. Also added
the functions: dereference, dereferenceOnly, hasreference, and fetchhash
to work with these.
4.63 Apr 29, 2006
- Added option (-deleteitemsok) so that user can delete items from
history list.
4.64 Sun Jul 30, 2006
- Minor tweeks for JFileDialog.
4.65 Tue Oct 25, 2006
- Add right-arrow completion so that if one types the first (few) letter(s)
of one of the choices in the list, then presses the right-arrow (with
the cursor at the end of the typed string, the text will be completed
with the first matching choice in the list (similar to up and
down-arrow, but repeated pressing only toggles between any
matching choices in the list, whereas down-arrow, continues to
switch between all the choices in the list. To revert to pre-4.65
behavior, specify -altbinding => 'Right=NoSearch'.
4.70 Mon Sep 24, 2006
- Added new options: -framehighlightthickness (default 1),
-buttonborderwidth (default 1), and --entryborderwidth (default 0).
- Changed initialization of -borderwidth and -buttonborderwidth to fix
inconsistancies pointed out by Wolfram Humann.
- Fixed activation issue on up and down arrow presses and with "back-
tab with patch from Wolfram Humann. Thanks for the patches!
- Fixed other minor issues.
- Fixed makefile using new version by Alexandr Ciornii that, among
other things, fixes the bug that caused the manpage file to have
an extra TK:: prefix appended to it.
4.71 - Added "-listcmd" callback.
- Added "-nobutton" option to prevent dropdown list button from being
displayed (default 0 (false)).
- Added "-labelrelief" option (default "flat").
- Added invocation of the "-browsecmd" callback if <Return> is
pressed in the text field and -altbinding includes "Return=Go".
- Added a "NoListbox" altbinding to cause the "-browsecmd" callback
to NOT be invoked for specified altbindings, ie.
"NoListbox=listbox.space" causes the callback to not be executed if
the <spacebar> is pressed while the listbox has keyboard focus.
4.72 - Added new user-callable function get(). get() with no arguments
returns the current value of the "-textvariable" variable. If any
arguments are passed, they are passed directly to the listbox->get()
function, ie. "0", "end" to return all values of the listbox.
- Added new user-callable function activate(). activate() invokes
the activate() option on the listbox to make the item with the
index specified by the first argument "active". Unless a second
argument is passed containing a false value, the value of the
"-textvariable" variable is also set to this now active value.
- Added new user-callable function index(), which invokes and returns
the result of the listbox index() function.
- Added new user-callable function size(), which invokes and returns
the result of the listbox size() function (the number of items in
the list.
- Fixed possible bug with the return results from the choices()
function when called without any arguments.
4.73 - Fixed so that whenever the mouse is clicked or the spacebar pressed
within the text area and the text area is readonly and either empty
or does not contain text that matches any of the items in the
dropdown list, then the 1st item is activated and highlighted
instead of the last one.
4.74 - Fixed so that whenever the "-textvariable" variable is undefined,
then the dropdown list is shown, the 1st item will be activated
and highlighted instead of the last one.
4.75 - Remove accidental reference to DBI in test file (fix broken test)
This closes rt.cpan.org bug#50767.
4.8 - Use of a hash for the choices list was broken - hash was reversed
within the insert() function so that fetchhash() returned a hash that
was the opposite of what was passed to choices. Renamed fetchhash()
function to get_hashref_byname() - still returns the reversed hash,
and fetchhash() remains in place for backwards compat. Added new
function get_hashref_byvalue() to return the hash back out correctly!
Also added new functions: get_index('value') to return the index#
(usable by get() function of the list option displayed as 'value');
delete_byvalue('value' [, 'value2'...]) to delete list items
by their displayed values; and reference() to return the displayed
list value for the given hash key (opposite of dereference()).
4.9 - Add new callback option when user deletes an entry from the drop-down
menu with the [Delete] key, as permitted by the "-deleteok" option.
The new callback option is "-deletecmd" which invokes a user-defined
function just before and again just after a menu entry is deleted.
This was needed in order to update arrays in the main program that
are loaded and saved in "history" files in order to know when the
valid list choices had changed and apply them properly. The first
call receives the entry index# (>0) being deleted, and can return
true if the deletion needs to be blocked, false or undef otherwise.
This permits the programmer to block user-deletes, ie. for certain
entries, etc. The subsequent call (with the parameter of -1), occurs
just after the deletion (if the first call did not return true) & can
be used to do something after a deletion has actually occured, ie.
as explained above.
5.0 Wed Jul 11 2018
- Fixed issues involving the -arrowimage / -farrowimage options not
always working properly, particularly on M$-Windows.
- Added new PressButton() function to enable developers to
programatically "press" the dropdown list button.
- Added new get_icursor() function to make fetching the cursor location
in the entry field. Most useful arguments are: 'insert' and 'end'.
- Added -deletecmd callback to allow user to properly update their
history files when feeding them to the drop-down list.
- Added -altbinding options: "Return=NoEmptyGo", "Return=SingleGo",
and "Down=Popup" as well as "Down=None", "Up=None", "Right=None",
"Esc=None", "Return=None", and "Space=None".
- Adjusted dropdown menu's width to work better when -nobutton is set.
- Cleaned up the code and documentation, including fixing some
"strict refs" errors and problems when a -default value is specified.
5.10 Mon Jul 23 2018
- Added -fixedlist option to cause the pop-up drop-down list to be
"fixed" (static) - always visible and be packed as a widget along with
the text-entry and button portions. Default is 0 (not fixed), as has
always been the case. If set to a true value, the listbox will appear
just below the text-entry and button widgets. If set to "top", the
listbox will appear above them.
- Added -listboxtype option to specify that the drop-down list should
use a "Tk::HList" widget by specifying "-listboxtype => 'HListbox',
if Tk::HListbox is installed. The default remains 'Listbox'.
- Also added Tk::HListbox-specific options: -indicator, and -itemtype.
These are ignored if the default Tk::Listbox is used.
The -label option is now dynamically configurable via $w->configure().
- Added -labelforeground, -labelbackground, and -labelfont options.
- NOTE: REMOVED the "altbinding" string "Tab=PopList" as this is now
the default (to roll up / hide the drop-down list whenever
the [Tab] key is pressed within it (unless -fixedlist is specified).
To retain the old behavior of keeping the drop-down list visible,
the developer must now specify "Tab=KeepList". Keeping the list
visible only worked on Unixish systems anyway, as M$-Windows always
rolled up the list anyway.
- Fixed several related key-binding / focusing issues along with the
usual code and doc. cleanups / optimizations.
5.20 Thu Jul 26 2018
- Added "List=Bouncy" -altbinding to make listbox immediately roll
back up when user releases the mouse button, more like a popup-menu.
(User can avoid the "bounce" feature by holding down the [Shift] key
with the mouse). On "fixed" lists, focus immediately jumps back to
the text-entry field, so that it behaves the same as if not "fixed".
- Added -buttonforeground and -buttonbackground color config. options.
- Added -colorstate to options that can be changed dynamically via
$widget->configure.
- Greatly cleaned up the -colorstate option to play nicer with
setPalette() and other color options as well as fixed alot of
annoying issues with it (See revised pod docs).
- Updated the test suite to include new "bouncy" and "fixedlist"
examples.
5.21 Fri Aug 10 2018
- Fixed minor color issue in M$-Windows where the text part wasn't
always readable when in "readonly" mode.
5.22 Wed Mar 27 2019
- Set newly-active item (row) to selected after user deletes a row
(when -deleteitemsok is set). This makes it easier to delete multiple
items without having to move the cursor up and down between deleting
each row.
5.23 Tue Nov 12, 2019
- Redo test harness to work like Tk::JFileDialog to fix bug preventing
popup example program in Strawberry Perl install on M$-Windows.
- Fix type that required Tk::HMListbox (instad of Tk::HListbox) to use
with Tk::HListbox.
5.24 Thu Jul 3, 2020
- Numerous defined-checks added to address CPAN bug# 131589 -
I doubt this catches every one of 'em, so leaving bug open, but this
should address nearly all of 'em. This module was written long before
all the anal "use Strict; use warnings" thing became the rage! ;)
- Also fixed minor issue with the archaic "-colorstate" option.
5.25 Fri Dec 2, 2022
- Fix bug causing right-arrow list search in text field to always fail.
- Fix failure of setPalette to properly update the "-highlightcolor" in
the text field.
5.30 Sat Jun 24, 2022
- Fix entry-field up and down-arrow bindings to properly traverse the
values in the listbox value list - wasn't always working properly
particularly with the up-arrow option.
- Fix broken handling of hash-refs (name/value pairs) when used as
the -choices list.
- Fix -listrelief option not accepting reconfiguration.
- Improve and clarify "Tab=KeepList" & "Tab=Popup" altbindings.
KeepList will also now keep list popped up if <spacebar> used to select.
- Add "-tabcomplete => 3" option to just update the text field to
what is selected in the listbox when tabbing off of it back to the text
field (The other 2 tabcomplete options also do this).
- Tweak the button icons' height slightly to make the widget height
consistant with standard text entry fields (Linux versions, as this was
already correct on M$-Windows systems.
- Tweak widget frame width to make "fixed" listboxes more properly align
in width with that of the text entry field width.
- Stop copying the active listbox item to the text field until the user
actually selects it.
- Remove some redundant listbox activation code plus some other small
code optimizations and cleanups.
- Fix a few more "use strict" nanny-warnings about undefined variable
values (found or observed during coding and testing). None of them
were bugs (as Perl was already defaulting to zero or '' as needed).
- Some general pod doc. cleanups.