[MGS] The eWidgets Toolkit is a collection of extended widgets and dialogs for Tcl/Tk. Each widget/dialog is designed to be self-contained, efficient, lightweight, cross-platform, and to work equally well on large and small displays. This will form the basis for my other project [Mogul]. eWidgets was originally going to be a substantial rewrite of the [BWidget] toolkit, but I got very bogged down in the complexity of its internal architecture. I also had already written many new widgets, so they have formed the basis of this toolkit. I would like to hear from anyone who has comments (good and bad) about BWidgets and other mega-widget libraries. In particular, things that don't work, things that are missing, extra functionality, etc. And if you're looking for a new kind of widget that doesn't exist, I might be interested in writing it. I'm always looking for new and better ways of doing things. Please feel free to drop me line at markgsaye @ yahoo.com ---- '''Q.''' Where does one find this toolkit? I don't see a URL. '''A.''' One doesn't, yet. I'm still very busy writing it. When I have an architecture which is somewhat stable, with widgets that work (!), some examples, and a smidgin of documentation, I will make an announcement, and upload stuff to http://ewidgets.sourceforge.net/ and http://sourceforge.net/projects/ewidgets/ . ---- Here's a partial list of widgets, dialogs and libraries that will be included: '''Widgets''' * '''button''' - generic button/checkbutton/radiobutton widget (designed for toolbars) * '''combobox''' - combobox widget (uses popup widget) * '''date''' - date selector widget (useful with popup widget) * '''drop''' - collapsible drop-frame widget * '''filelist''' - listbox file browser widget * '''filetree''' - tree file browser widget (using tree widget) * '''frame''' - scrollable frame widget * '''mdi''' - [MDI] widget * '''menubar''' - menubar widget (using user-definable menu configuration files) * '''notebook''' - notebook widget * '''panel''' - panel widget (like MS Outlook) * '''pathentry''' - file/path-completion entry widget * '''popup''' - popup widget (e.g. as used by combobox) * '''progress''' - progress bar widget * '''scroll''' - scrollable-widget widget (with scrollbars that appear only when needed) * '''scroller''' - 2d x/y scrollbar (similar to BWidget's ScrollView) * '''slide''' - slide widget (similar to scale widget) * '''spinbox''' - spinbox widget * '''text::listbox''' - hierarchical listbox widget * '''text::map''' - graphical widget to display text widget search results (adapted from [Roy Terry]'s Hits!) * '''titleframe''' - titleframe widget * '''toolbar''' - toolbar widget (uses grid and clone libraries) * '''tooltip''' - tooltip widget (balloon help) * '''tree''' - canvas-based tree widget * '''window''' - generic window/toplevel widget '''Dialogs''' * '''dialog''' - generic dialog window * '''dialog::color''' - color selector dialog * '''dialog::directory''' - directory selector dialog * '''dialog::error''' - improved bgerror dialog * '''dialog::file''' - file selector dialog * '''dialog::fileprop''' - file properties dialog * '''dialog::font''' - font selector dialog * '''dialog::message''' - message dialog * '''text::find''' - text find dialog/widget * '''text::goto''' - text goto dialog/widget '''Libraries''' * '''canvas''' - library of canvas widget routines (convert to polygon, reflect, rotate, see, tile) * '''clone''' - library to enable cloning of widgets (including heirarchies), procs (see [cloneProc]), namespaces, variables, images, etc. Widget tree cloning should be useful for tearoff toolbars (i.e. clone a frame to a toplevel). * '''color''' - library of color routines (see [bevel 3d]) * '''file''' - library of useful file commands * '''focus''' - library to manage a stack of focus requests * '''font''' - library of font routines * '''grab''' - library to manage a stack of grabbed windows * '''grid''' - library of grid routines (reflecting/inverting/transposing/inserting & deleting columns & rows/etc) * '''icon''' - library of icon routines (finding, refcounting, etc) * '''image''' - library of image routines (sizes, etc) * '''interp''' - library of interp routines (notably the ability to dump the state of an interp) * '''label''' - library of label widget routines (wrapping, selection) See [http://www.speakeasy.org/~msaye/tk/label/] * '''list''' - library of useful list commands * '''listbox''' - library of listbox widget routines (move selection up & down) * '''text''' - library of text widget routines (maybe) * '''[text::sync]''' - library to synchronize two or more text widgets * '''[window::or]''' - library to handle full-screen windows ---- '''Packages''' I will put links here to individual packages as and when they become available: * '''label''' - http://www.speakeasy.org/~msaye/tk/label/ * '''[text::sync]''' - http://www.speakeasy.org/~msaye/tk/text/sync/ * '''[window::or]''' - http://www.speakeasy.org/~msaye/tk/window/or/ ---- ''[LV]'' [[2003/05/14]] '''Q'''. How do the entries above such as text, frame, etc. that are currently in Tk differ from the Tk versions? ''[MGS]'' - At the moment, I'm not sure that the ''text'' library will exist. It was intended for a collection of miscellaneous text widget commands, most of which have now been split out into separate libraries/widgets such as ''text::find'', ''text::goto'' etc. The '''label''' library contains miscellaneous commands specific to label widgets. For example, see [label selection] and [label wrapping]. See also: [http://www.speakeasy.org/~msaye/tk/label/] The '''canvas''' library contains miscellaneous commands specific to canvas widgets. For example: canvas::see, canvas::tile, canvas::convert, canvas::rotate, and more. The '''window''' widget is effectively just a toplevel with some syntactic sugaring to incorporate some extra properties, notably the toplevel-specific options from the [wm] command. i.e. you could do things like: '''window .mywin -title "My Window Title" -propagate 0 -transient .''' . This also means that you can put wm properties into the options database. The '''frame''' widget is a scrollable frame widget, but not using a canvas as most scrollable widgets do. The scrollable area of the widget works more intuitively (I think) than, say, the [BWidget]'s version. The '''listbox''' library contains miscellaneous commands specific to listbox widgets: moving the selection up/down, deleting the selection, chronological selection, sorting, etc. ---- [Category Package] | [Category GUI]