modal = truemodifier 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_screenfor Linux multi-monitor environments center_within_rootmethod 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
stylesetter to be able to use predefined Tk styles by name - Support for
columnuniform/rowuniformgrid arguments, aliased also ascolumn_uniform/row_uniform event_generatemethod for raising custom Tk events (wrapper aroundtk.event_generate)- Fix
unbind_all, usetk.bind_removeinstead oftk.bind(..., '')which was causing weird effects when reloading events closest_windowmethod to find the closest parent window-type widgetenabled/disabledpair of attributesvisible/hiddenpair of attributes
icon_photoas alias foriconphotoattribute onrootandtoplevelinitial_coloras alias forinitialcolorattribute onchoose_colorbuilt-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 anentrywhen 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_textvariableinsamples/hello/hello_entry.rb - Improve validation text in
samples/hello/hello_entry.rbto say "... not a valid phone!"
- Hello, Theme! sample
- Hello, Progressbar! sample
- Upgrade to glimmer 2.7.3
- Hello, Scale! sample
scalevariabledata-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
:aboutMenu 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
_optionsmethod 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: falseoption (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_barkeyword underrootortoplevel - Support contextual menu by nesting
menukeyword underrootortoplevel
- Moved
OSclass toGlimmer::Tk::OSto avoid clashing with os gem when installed for users - Moved
DragAndDropEventfromGlimmer::Tk::DraggableAndDroppableintoGlimmer::Tknamespace directly asGlimmer::Tk::DragAndDropEvent
- Upgrade to glimmer 2.5.1 (includes more advanced data-binding/observer features)
- Support
drag_source trueonlistwidget - Support
drop_target truekeyword alternative toon_dropfor 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
lblwidget as the non-tile-themed version oflabel(i.e.::TkLabelnot::Tk::Tile::TLabel) - Add
#proxymethod to all Tk widgets to return Glimmer widget proxy objects (e.g.Tk::Tile::TButton#proxyreturnsGlimmer::Tk::WidgetProxyobject) - Provide question mark alias of
event.drop_accepted(i.e.drop_accepted?) - Have
DragAndDropEventsource/targetbe the enhanced Glimmer widget proxy instead of the unenhanced Tk widget - Look into improving code that uses
TkLabelexplicitly 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 ofOSclass 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_frameGlimmer custom widget as a frame that automatically provides scrollbars when its content's size exceeds its size - Support
scrollbar_framexscrollbarandyscrollbarattributes (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
menuandmenu_itemwidgets including:command(default),:separator,:radiobutton, and:checkbuttonstyles - Support menu item
acceleratorattribute - Support menu item
selectionattribute - Support menu item
stateattribute - Support menu item command event, which is triggered on mouse/keyboard menu item selection or via accelerator
- Support
topleveliconphoto(more conveniently via direct path) andresizableattributes
- Support
focus: trueorfocus: [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
textwidget grab focus after every formatting modification in Hello, Text! (e.g. after clickingBfor Bold)
- Hello, Toplevel! (Custom Window and Custom Dialog)
- Support
mac_styleattribute undertoplevel - Support registering multiple general event listeners on widgets (previously, later event listener registrations replaced former ones)
- Support
escapable trueproperty underrootandtoplevelto close on hitting ESCAPE button
- Improved Meta-Sample by utilizing Ruby from
RbConfig.ruby - Improved girb_runner.rb to be more platform independent
- Fixed
textwidget 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
textselection format without having a selection, have it apply to current insert mark word - Support registering multiple general event listeners on
textwidget (previously, later event listener registrations replaced former ones) - Implement
:no_selection_defaultoption of:insert_word,insert_letter, ornonefortextselection 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
textundo/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
textwidgetInsertMarkMovedlistener event to track insert mark movement (or aliasesInsertMarkMove,insert_mark_move,insert_mark_moved, all case-insensitive) - Support
entrywidgetchangedandmodifiedlistener event aliases forchangeevent - Autodiscover format options when moving cursor in
textwidget (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
textwidget 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
textgeneral 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.0toend)) - Ensure unregistering observers (like data-binding observers) when destroying a widget
- Add
Glimmer::Tk::ToplevelProxywidget 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
textwidgettextattribute after realizingvaluedoes the same thing - Support
textwidget 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_fileandinsert_imagein 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_filefiletypessupport to take a real Ruby hash instead of['{Image Files} {.png}'] - Support
gridkeyword 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
fontattribute (liketext) support pre-defined fonts like'caption'and'heading'(just likelabel)
- Improve Hello, Text! (toolbar buttons: bold, italic, underline)
- Set correct
wrap 'word'attribute fortextwidget in Hello, Text! - Default
textwidget towrap = 'none' - Default
textwidget tofont = {family: 'Courier New'} - Fix issue with unbolding text in
textwidget when selecting multiple lines with an empty line
- Ensure spinbox data-binding updates on text key changes (without incrementing/decrementing)
- Optimize
text=attribute setter ontextwidget 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
stylekeyword 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 fortextwidget 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
spinboxcommand {}andon('increment') {}/on('decrement') {} - Support
spinboxformatattribute (e.g.format '%0.2f' - Make
grid sticky: 'nsew', column_weight: 1the default for all widgets (column weight is only applied to the first widget in a series of siblings) - Support
textwidget withtextattribute/data-binding just likeentry - Set
background '#ececec' if OS.mac?onrootby default - Support
'modified'/'selected'event bindings fortextwidget
- Hello, Entry!
- Update
entrydata-binding logic to trace 'write' changes toentrytextvariableas that is more correct than monitoringvalidatecommand - Support
entryvalidate(alias forvalidatecommand),invalid(alias forinvalidcommand), andchangeevent bindings - Support
entryshowandvalidateattributes - Support
gridoptionsrow_weight(for row expansion),column_weight(for column expansion),row_minsize(alias:min_height), andcolumn_minsize(alias:min_width)
- Hello, Radiobutton!
- Support
radiobuttonensuring 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
checkbuttonwith specifiedonvalueandoffvalue(when they do not have values 1 and 0) - Alias
roottitleattribute astext& add children attribute to widgets - Alias
notebookframe:titleas:text - Alias message_box
:titleas: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
rootevent binding:'WM_DELETE_WINDOW'and alias'DELETE_WINDOW' - Support
rootevent binding:'OPEN_WINDOW' - Support
rootattribute:background(any color includingsystemTransparent) - Support
rootboolean attribute:alpha - Support
rootboolean attributes:fullscreen,topmost,transparent - Support
rootattributes:stackorder,winfo_screendepth,winfo_screenvisual,winfo_screenwidth,winfo_screenheight,winfo_pixels('li'),winfo_screen,wm_maxsize - Support
rootattribute:state('normal', 'iconic', 'withdrawn', 'icon', 'zoomed')
- Hello, Root! sample
- Support
rootwidth,height,x,yattributes - Support
rootattribute:resizable - Support
rootattribute:minsize - Support
rootattribute:maxsize - Set minimum width/height on
root(190 pixels)
- Hello, Frame! sample
- Avoid setting grid geometry manager on
toplevelwidget - Support
framewidthandheightattributes - Support
frameborderwidthattribute - Support
framereliefattribute - Support
framepaddingattribute - Rename Hello, Tab! to Hello, Notebook!
- Hello, Label! sample
- Support
labelanchorattribute ('e','se','s','sw','w','nw'or'center') - Support
labelwidthattributes - Support
labelimageattribute - Support
labeljustifyattribute ('left', 'center', 'right') - Support
labelfontattribute ('default', 'text', 'fixed', 'menu', 'heading', 'caption', 'small_caption', 'icon', 'tooltip') - Support
labelforegroundattribute - Support
labelbackgroundattribute (note that it does not work in Mac 'aqua' theme) - Support
labelcompoundattribute - Support
labelreliefattributes ('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 truein first button.
- Update Hello, Button! to demo all button attributes
- Support
buttonimageattribute (accepting image arguments:subsample,zoom,from,to,shrink,compositingruleto automatically process image) - Update
rooticonphotosupport to accept image arguments:subsample,zoom,from,to,shrink,compositingruleto automatically process image - Support
buttoncompoundattribute ('center', 'top', 'bottom', 'left', 'right') - Support
buttondefaultattribute ('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_configureattributes/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
iconphotoattribute onrootwidget, intelligently accepting a direct image path orTkPhotoImageobject - Set
rooticonphotoattribute to Glimmer icon by default if not set in an application. - Provide
iconphotocode example in README - Upgrade to glimmer 2.1.1
- Upgraded to tk 0.4.0
- Fixed
girbby changing to a pure Ruby script
- Upgraded to tk 0.3.0
- Label text data-binding
- Entry text data-binding
- The
gridgeometry manager - Hello, Computed! sample
listcustom 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!