modal = true
modifier for toplevels (the root becomes hidden till the toplevel is closed)- If no icon is set for a toplevel, take icon from the root
- An experimental fix of
center_within_screen
for Linux multi-monitor environments center_within_root
method to center a toplevel within the boundaries of the root (useful for modal windows / dialogs)- A helper
window?
method to determine if the widget is a window (root, toplevel) or not - Support for single style name argument in the
style
setter to be able to use predefined Tk styles by name - Support for
columnuniform
/rowuniform
grid arguments, aliased also ascolumn_uniform
/row_uniform
event_generate
method for raising custom Tk events (wrapper aroundtk.event_generate
)- Fix
unbind_all
, usetk.bind_remove
instead oftk.bind(..., '')
which was causing weird effects when reloading events closest_window
method to find the closest parent window-type widgetenabled
/disabled
pair of attributesvisible
/hidden
pair of attributes
icon_photo
as alias foriconphoto
attribute onroot
andtoplevel
initial_color
as alias forinitialcolor
attribute onchoose_color
built-in dialog
- Fix issue with Hello, Entry! breaking after the latest release due to mistakenly converting color
'red'
to'#red'
by thinking it is hex
- Update Hello, Built-in Dialog! with more options for customizing dialogs
- Support setting colors as rgb colors via
r, g, b
(e.g.foreground 210, 48, 110
) - Accept hex color strings not starting with
#
(e.g.background 'f828d7'
)
- Auto-Default to
validate 'key'
on anentry
when definingvalidatecommand {}
,on('validate') {}
,invalidcommand {}
,on('invalid') {}
- Support
@tk.textvariable.trace('write')
kind of variable tracing viaon_var(trace_operation) {}
listeners (e.g.on_textvariable('write') {}
) - Use
on_textvariable
insamples/hello/hello_entry.rb
- Improve validation text in
samples/hello/hello_entry.rb
to say "... not a valid phone!"
- Hello, Theme! sample
- Hello, Progressbar! sample
- Upgrade to glimmer 2.7.3
- Hello, Scale! sample
scale
variable
data-binding
- Hello, Labelframe! sample
- Add default padding to
labelframe
- Support menu item accelerators that include or end with function keys (e.g.
'Alt+F4'
) - Default
:about
Menu Item label to 'About' if not specified
- Upgrade to glimmer 2.6.0
- Remove default height for root/toplevel (automatically calculated from children)
- Support data-binding
_options
method items oncombobox
(not just main value), thus making options update ifnotify_observers(:some_attr_options)
is called
- Center application root/toplevel within screen by default (if x or y are specified, they are respected instead)
- Enhance Hello, Contextual Menu! & Hello, Menu Bar! to display a message box upon selecting a Language/Country
- Explicitly support all menu item attributes:
activebackground
,activeforeground
,background
,bitmap
,columnbreak
,compound
,font
,foreground
,hidemargin
,indicatoron
,menu
,offvalue
,onvalue
,selectcolor
,selectimage
,state
,underline
,value
- Support manual binding of contextual menu by passing
bind: false
option (e.g.menu(bind: false) {...}
as demonstrated in samples/hello/hello_contextual_menu.rb) - Support binding multiple contextual menus (they show up consecutively unless there is conditional logic to control showing them individually)
- Update Hello, Contextual Menu! to add a comment and an example about manual menu binding
- Upgrade to glimmer 2.5.4
- [API Breaking] Update menu bar support to require
menu_bar
keyword underroot
ortoplevel
- Support contextual menu by nesting
menu
keyword underroot
ortoplevel
- Moved
OS
class toGlimmer::Tk::OS
to avoid clashing with os gem when installed for users - Moved
DragAndDropEvent
fromGlimmer::Tk::DraggableAndDroppable
intoGlimmer::Tk
namespace directly asGlimmer::Tk::DragAndDropEvent
- Upgrade to glimmer 2.5.1 (includes more advanced data-binding/observer features)
- Support
drag_source true
onlist
widget - Support
drop_target true
keyword alternative toon_drop
for cases where it is implied what to drop (text in the case of label, entry, combo, list, and button) - Support
on('drag_start')
(instead ofon_drag_start
),on('drag_motion')
, andon('drop')
for consistency with Glimmer DSL for general Tk listener style (on('event')
)
- Support
lbl
widget as the non-tile-themed version oflabel
(i.e.::TkLabel
not::Tk::Tile::TLabel
) - Add
#proxy
method to all Tk widgets to return Glimmer widget proxy objects (e.g.Tk::Tile::TButton#proxy
returnsGlimmer::Tk::WidgetProxy
object) - Provide question mark alias of
event.drop_accepted
(i.e.drop_accepted?
) - Have
DragAndDropEvent
source
/target
be the enhanced Glimmer widget proxy instead of the unenhanced Tk widget - Look into improving code that uses
TkLabel
explicitly in Hello, Drag and Drop! (doevent.tooltip.content {label {...} }
with Glimmer DSL instead) - Add Glimmer Style Guide
- Fix issue with dropping button and list unto checkbox in Hello, Drag and Drop!
- Fix issue with not being able to drop list into checkbox in Hello, Drag and Drop! by disabling functionality for list just like button
- Modified Hello, Drag and Drop! to include a list
- Removed the need to require
'glimmer/tk/drag_and_drop_extension'
to do drag and drop; it is automatically included inrequire 'glimmer-dsl-tk'
now. - Remove 'os' gem due to Tk having the capability to detect the OS it is on using
Tk.windowingsystem
(include Glimmer implementation ofOS
class havingOS.mac?
,OS.windows?
andOS.linux?
) - Default to 'clam' Tk theme on Linux ('alt' looks a bit too classic with certain widgets)
- Add vertical/horizontal scrollbars to Meta-Sample
- Keep only vertical scrollbar in Hello, Text!
- Fix issue with including bwidgets and iwidgets in Windows (by removing from default requires, leaving to users to require manually when needed only and only systems that support them)
- Fix Hello, Menu Bar! sample in Windows (by disabling Windows-special System menu, which does not seem to be working in Tk)
- Support
scrollbar_frame
Glimmer custom widget as a frame that automatically provides scrollbars when its content's size exceeds its size - Support
scrollbar_frame
xscrollbar
andyscrollbar
attributes (to enable/disable via boolean or set to a custom externally instantiated scrollbar if needed) - Hello, Scrollbar Frame!
- Hello, Scrollbar!
- Default to 'alt' Tk theme on Linux
- Added Windows/Linux accelerators to Hello, Menu Bar!
- Fix issue with extra junk character added to beginning of Hello, Checkbutton! by mistake
- Fix issue with Hello, Menu Bar! help menu item crashing in Linux (it is restricted to Mac only)
- Fix issue with Hello, Text! focus losing selection in Linux upon setting background/foreground/font/font-size
- Add Language and Language Name menus to Hello, Menu Bar! sample
- Update Hello, Button! sample to indicate compound option value on image text buttons
- Support Mac
menu_item(:about, label: ) { on('command') {} }
- Support Mac
menu_item(:preferences) { on('command') {} }
- Support Mac
menu_item(:help) { on('command') {} }
- Support Mac
menu_item(:quit) { on('command') {} }
- Support Mac/X11
'Help'
menu - Support Mac
'Window'
menu - Support Windows
'System'
menu
- Hello, Menu Bar! sample
- Support
menu
andmenu_item
widgets including:command
(default),:separator
,:radiobutton
, and:checkbutton
styles - Support menu item
accelerator
attribute - Support menu item
selection
attribute - Support menu item
state
attribute - Support menu item command event, which is triggered on mouse/keyboard menu item selection or via accelerator
- Support
toplevel
iconphoto
(more conveniently via direct path) andresizable
attributes
- Support
focus: true
orfocus: [integer]
option for all selection formatting methods (add_selection_format
,remove_selection_format
,toggle_selection_format
,add_selection_font_format
,remove_selection_font_format
,toggle_selection_font_format
) - Have
text
widget grab focus after every formatting modification in Hello, Text! (e.g. after clickingB
for Bold)
- Hello, Toplevel! (Custom Window and Custom Dialog)
- Support
mac_style
attribute undertoplevel
- Support registering multiple general event listeners on widgets (previously, later event listener registrations replaced former ones)
- Support
escapable true
property underroot
andtoplevel
to close on hitting ESCAPE button
- Improved Meta-Sample by utilizing Ruby from
RbConfig.ruby
- Improved girb_runner.rb to be more platform independent
- Fixed
text
widget binding of standard bind events (e.g.'KeyPress'
or'ButtonPress'
) - Fixed Hello, Text! issue with not being able to bring up Find Dialog once all text is deleted and new text is entered
- Fixed undo/redo issue
- When applying a
text
selection format without having a selection, have it apply to current insert mark word - Support registering multiple general event listeners on
text
widget (previously, later event listener registrations replaced former ones) - Implement
:no_selection_default
option of:insert_word
,insert_letter
, ornone
fortext
selection formatting methods (add_selection_format
,remove_selection_format
,toggle_selection_format
,add_selection_font_format
,remove_selection_font_format
,toggle_selection_font_format
) - Make sure to only allow
text
undo/redo when there are changes to be undoed/redoed - Fix issue with Hello, Text! Find Dialog not coming up with keyboard shortcut (e.g. CMD+F) anymore
- Fix issue with Hello, Text! whereby after applying background, and foreground to a selection, you cannot apply bold, italic, or underline for the same selection (or font-size or font-family)
- Support
text
widgetInsertMarkMoved
listener event to track insert mark movement (or aliasesInsertMarkMove
,insert_mark_move
,insert_mark_moved
, all case-insensitive) - Support
entry
widgetchanged
andmodified
listener event aliases forchange
event - Autodiscover format options when moving cursor in
text
widget (auto-derive from applied tags and widget font) and show in top Hello, Text! toolbar comboboxes and buttons - Fix issue with encountering error 'NoMethodError: undefined method "size" for' when launching Hello, Text!, performing Select-All (CMD+A or CONTROL+A) and then attempting to Bold all the text.
- Fix issue in Hello, Text! whereby bolding a small region of text affects the font of the following region of text till the end of the document
- Fix issue in Hello, Text! where if all text is copied and then pasted multiple times, the
text
widget loses its keyboard/mouse listeners and CMD+F does not work anymore to bring Find dialog
- Hello, Text! Find Dialog toolbar button
- Hello, Text! Find Dialog Windows/Linux CONTROL+F shortcut alternative to Mac CMD+F
- Improve Hello, Text! (toolbar buttons: justify left, justify center, justify right)
on('destroy') {|widget| ...}
support in widgets to better track calls to "destroy" method and'<Destroy>'
binding event (as opposed to the unreliable tracking of '' alone)- Support observing
text
general events (e.g.'<KeyPress>'
) throughon(event) {}
(was not working before because it required applying a tag, a general__all__
tag is applied automatically now on full range (1.0
toend
)) - Ensure unregistering observers (like data-binding observers) when destroying a widget
- Add
Glimmer::Tk::ToplevelProxy
widget proxy support similar toGlimmer::Tk::RootProxy
- Improve Hello, Text! (toolbar buttons: find dialog)
- Fixed Hello, Built-in Dialog! Font Dialog issue
- Hello, Built-in Dialog! (demonstrating all built-in dialogs like get_open_file and choose_color)
- Hello, Separator!
- Improve Hello, Text! (toolbar buttons: insert image)
- Removed unnecessary
text
widgettext
attribute after realizingvalue
does the same thing - Support
text
widget data-binding on 'modified' event and use in Hello, Text! - Support
text#insert_image(text_index, *image_args)
- Support
text#get_open_file_to_insert_image(text_index = 'insert')
shortcut for doing bothget_open_file
andinsert_image
in one shot - Support built-in dialogs:
get_open_file(options = nil)
,get_multiple_open_file(options = nil)
,get_save_file(options = nil)
,get_multiple_save_file(options = nil)
,choose_directory(options = nil)
,choose_color(options = nil)
,choose_font(initial_font_args) {|font| do_something_with_font(font) }
- Support built-in dialog aliases:
open_file
,multiple_open_file
,save_file
- Enhance
get_open_file
/get_multiple_open_file
filetypes
support to take a real Ruby hash instead of['{Image Files} {.png}']
- Support
grid
keyword arg'column_span'
(with _) and'row_span'
as aliases for'columnspan'
and'rowspan'
- Hello, Drag and Drop!
- Improve Hello, Text! (toolbar buttons: font family, font size, cut, copy, paste, undo, redo)
- Drag & Drop support
- Update default dimensions of Meta-Sample root window to 1280x720
- Have any widget with a
font
attribute (liketext
) support pre-defined fonts like'caption'
and'heading'
(just likelabel
)
- Improve Hello, Text! (toolbar buttons: bold, italic, underline)
- Set correct
wrap 'word'
attribute fortext
widget in Hello, Text! - Default
text
widget towrap = 'none'
- Default
text
widget tofont = {family: 'Courier New'}
- Fix issue with unbolding text in
text
widget when selecting multiple lines with an empty line
- Ensure spinbox data-binding updates on text key changes (without incrementing/decrementing)
- Optimize
text=
attribute setter ontext
widget when setting a text value that includes all previous text by having it not delete and reinsert, yet append instead. - Support font attribute for arbitrary fonts with terse syntax (
font 'times 12 bold'
notfont TkFont.new('times 12 bold')
) - Support a quicker way of tagging (instead of the two-step process of tagging with a keyword and then configuring the keyword style) (e.g.
text.tag(5.0, 6.0, :background=>'yellow', :font=>'TkFixedFont', :relief=>'raised')
) - Support styles (via
style
keyword or with attribute defaulting to style when not available) and ability to define and apply a style in one shot - Support
TextProxy#toggle_format
(+TextProxy#add_format
&TextProxy#remove_format
) to be able to toggle a tag format option on or off fortext
widget in one shot instead of having to apply a tag and then configure a tag format - Hello, Text! (a word processor with a toolbar having foreground color and background color)
- Elaborate, Meta-Sample
- Hello, Spinbox!
- Support
spinbox
command {}
andon('increment') {}
/on('decrement') {}
- Support
spinbox
format
attribute (e.g.format '%0.2f'
- Make
grid sticky: 'nsew', column_weight: 1
the default for all widgets (column weight is only applied to the first widget in a series of siblings) - Support
text
widget withtext
attribute/data-binding just likeentry
- Set
background '#ececec' if OS.mac?
onroot
by default - Support
'modified'
/'selected'
event bindings fortext
widget
- Hello, Entry!
- Update
entry
data-binding logic to trace 'write' changes toentry
textvariable
as that is more correct than monitoringvalidatecommand
- Support
entry
validate
(alias forvalidatecommand
),invalid
(alias forinvalidcommand
), andchange
event bindings - Support
entry
show
andvalidate
attributes - Support
grid
optionsrow_weight
(for row expansion),column_weight
(for column expansion),row_minsize
(alias:min_height
), andcolumn_minsize
(alias:min_width
)
- Hello, Radiobutton!
- Support
radiobutton
ensuring that sibling radio buttons share the same variable to achieve mutually exclusive selection - Improved Hello, Checkbutton! sample to demonstrate alternate checkbutton value (half-checked state)
- Support
checkbutton
with specifiedonvalue
andoffvalue
(when they do not have values 1 and 0) - Alias
root
title
attribute astext
& add children attribute to widgets - Alias
notebook
frame
:title
as:text
- Alias message_box
:title
as:text
- Fix reference to
Glimmer::Tk::CheckbuttonProxy
(wasGlimmer::Tk::ChecktbuttonProxy
)
- Hello, Checkbutton!
- Support checkbutton data-binding
- Support event bindings via
on(event) {}
syntax nestable under any widget - Support
root
event binding:'WM_DELETE_WINDOW'
and alias'DELETE_WINDOW'
- Support
root
event binding:'OPEN_WINDOW'
- Support
root
attribute:background
(any color includingsystemTransparent
) - Support
root
boolean attribute:alpha
- Support
root
boolean attributes:fullscreen
,topmost
,transparent
- Support
root
attributes:stackorder
,winfo_screendepth
,winfo_screenvisual
,winfo_screenwidth
,winfo_screenheight
,winfo_pixels('li')
,winfo_screen
,wm_maxsize
- Support
root
attribute:state
('normal', 'iconic', 'withdrawn', 'icon', 'zoomed'
)
- Hello, Root! sample
- Support
root
width
,height
,x
,y
attributes - Support
root
attribute:resizable
- Support
root
attribute:minsize
- Support
root
attribute:maxsize
- Set minimum width/height on
root
(190 pixels)
- Hello, Frame! sample
- Avoid setting grid geometry manager on
toplevel
widget - Support
frame
width
andheight
attributes - Support
frame
borderwidth
attribute - Support
frame
relief
attribute - Support
frame
padding
attribute - Rename Hello, Tab! to Hello, Notebook!
- Hello, Label! sample
- Support
label
anchor
attribute ('e'
,'se'
,'s'
,'sw'
,'w'
,'nw'
or'center'
) - Support
label
width
attributes - Support
label
image
attribute - Support
label
justify
attribute ('left', 'center', 'right'
) - Support
label
font
attribute ('default', 'text', 'fixed', 'menu', 'heading', 'caption', 'small_caption', 'icon', 'tooltip'
) - Support
label
foreground
attribute - Support
label
background
attribute (note that it does not work in Mac 'aqua' theme) - Support
label
compound
attribute - Support
label
relief
attributes ('flat' (default), 'raised', 'sunken', 'solid', 'ridge', 'groove'
)
- Support common themed widget state attributes:
active
,disabled
,focus
,pressed
,selected
,background
,readonly
,alternate
,invalid
, andhover
- Update Hello, Button! to utilize
focus true
in first button.
- Update Hello, Button! to demo all button attributes
- Support
button
image
attribute (accepting image arguments:subsample
,zoom
,from
,to
,shrink
,compositingrule
to automatically process image) - Update
root
iconphoto
support to accept image arguments:subsample
,zoom
,from
,to
,shrink
,compositingrule
to automatically process image - Support
button
compound
attribute ('center', 'top', 'bottom', 'left', 'right'
) - Support
button
default
attribute ('active'
or'normal'
)
- Hello, Button!
- Hello, Message Box!
- Support
message_box
- Upgrade to glimmer 2.3.0
- Support Shine syntax for data-binding
- Update all data-binding samples to use Shine syntax for data-binding
- Add preliminary support for
treeview
(no data-binding) withcolumns
,show
, andheading_configure
attributes/methods
- puts_debuggerer gem to help consumers with debugging in and out of girb
- Upgrade to glimmer 2.1.2
- Fix issue #5 (AndyObtiva#5)
- Support
iconphoto
attribute onroot
widget, intelligently accepting a direct image path orTkPhotoImage
object - Set
root
iconphoto
attribute to Glimmer icon by default if not set in an application. - Provide
iconphoto
code example in README - Upgrade to glimmer 2.1.1
- Upgraded to tk 0.4.0
- Fixed
girb
by changing to a pure Ruby script
- Upgraded to tk 0.3.0
- Label text data-binding
- Entry text data-binding
- The
grid
geometry manager - Hello, Computed! sample
list
custom widget (since listbox is not tile themed yet in Tk)girb
(Glimmer IRB)- Hello, List Single Selection! sample
- Hello, List Multi Selection! sample
- Combobox support
- Button command event observer support
- Combobox text data-binding
- Hello, Combo! sample
- Notebook/frame support
- Hello, Tab! sample
- Initial Glimmer DSL for TK implementation to support Hello, World!