Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | |
2 | <html> | |
3 | <head> | |
4 | <meta name="description" content="Pmw - a toolkit for building high-level compound widgets in Python"> | |
5 | <meta name="content" content="python, megawidget, mega widget, compound widget, gui, tkinter"> | |
6 | <title>Changes to Pmw</title> | |
7 | </head> | |
8 | ||
9 | <body bgcolor="#ffffff" text="#000000" link="#0000ee" | |
10 | vlink="551a8b" alink="ff0000"> | |
11 | ||
12 | <h1 ALIGN="CENTER">Changes to Pmw</h1> | |
13 | ||
14 | <p> | |
15 | 6 January 1997</p> | |
16 | ||
17 | <ul><li><p>Release of version 0.1</p> | |
18 | ||
19 | </li></ul> | |
20 | <p> 14 February 1997</p> | |
21 | ||
22 | <ul><li><p>Fixed bug in Counter demo for the Macintosh - the maximum size of an | |
23 | integer is smaller than the value returned by time.time().</p> | |
24 | ||
25 | </li> | |
26 | <li><p>Fixed bug in Grid demo for Tk 4.2 - grid_bbox returns garbage if it is | |
27 | called without update_idletasks. Also, grid_bbox can only have two | |
28 | arguments in Tk 4.1.</p> | |
29 | ||
30 | </li> | |
31 | <li><p>Modified ScrolledText demo so that the text widget contains enough text | |
32 | to require a vertical scrollbar.</p> | |
33 | ||
34 | </li> | |
35 | <li><p>Changes to PmwBase:</p> | |
36 | <ul><li><p>Prefixed the name of several private variables with a double underscore.</p> | |
37 | ||
38 | </li> | |
39 | <li><p>Added symbolic constants for the indexes into an optionInfo list.</p> | |
40 | ||
41 | </li> | |
42 | <li><p>Changed names of several methods and variables to be more descriptive.</p> | |
43 | ||
44 | </li> | |
45 | <li><p>Removed options() method.</p> | |
46 | ||
47 | </li> | |
48 | <li><p>Simplified configuration option data structures. Modified option | |
49 | handling code so that default options are set correctly. If an | |
50 | option is created before initialise() is called then initialise() | |
51 | checks if the option is set by the keyword arguments to | |
52 | initialise(). If not, then it is given the value found in the | |
53 | Tk option database, if a value exists, or the default value. If an | |
54 | option is created after initialise() is called, then it is given the | |
55 | value found in the Tk option database, if a value exists, or the | |
56 | default value.</p> | |
57 | ||
58 | </li></ul> | |
59 | ||
60 | </li> | |
61 | <li><p>Replaced usage of self._hull in megawidgets by interior() method.</p> | |
62 | ||
63 | </li> | |
64 | <li><p>Added autoclear option to ComboBox.</p> | |
65 | ||
66 | </li> | |
67 | <li><p>Fixed bug in ComboBox - fast clicking on the arrow button could result | |
68 | in an attempt to grab a window that was not yet visible.</p> | |
69 | ||
70 | </li> | |
71 | <li><p>Added "sys.exc_traceback = None" to the except clauses of all try | |
72 | statements so that references to objects in the stack trace would not | |
73 | be left.</p> | |
74 | ||
75 | </li> | |
76 | <li><p>Added takefocus option to PushButton.</p> | |
77 | ||
78 | </li> | |
79 | <li><p>Modified the getcurselection() method of ScrolledListBox so that it | |
80 | returns a string if the selection mode is <strong>'single'</strong> or <strong>'browse'</strong>, rather | |
81 | than a tuple with one element. This also affects methods forwarded and | |
82 | derived from ScrolledListBox.</p> | |
83 | ||
84 | </li> | |
85 | <li><p>Modified ScrolledListBox so that it avoids unnecessary updates by | |
86 | using idle timer.</p> | |
87 | ||
88 | </li> | |
89 | <li><p>Modified ScrolledText to use grid instead of pack.</p> | |
90 | ||
91 | </li> | |
92 | <li><p>Added shutdown() function to Tk module to clean up all references to | |
93 | the Tcl interpreter and then delete it.</p> | |
94 | ||
95 | </li> | |
96 | <li><p>Fixed bug in Tk module for the Macintosh - update() was being called in | |
97 | initialise() before the Tcl interpreter was created.</p> | |
98 | ||
99 | </li></ul> | |
100 | <p> 14 February 1997</p> | |
101 | ||
102 | <ul><li><p>Version 0.1.1 completed and released internally.</p> | |
103 | ||
104 | </li></ul> | |
105 | <p> 6 March 1997</p> | |
106 | ||
107 | <ul><li><p>Pmw now uses the standard Tkinter module. The Tk module has been | |
108 | dropped. This means that the Tk module functions such as after, | |
109 | bell, bind, update, etc, are no longer available and the equivalent | |
110 | Tkinter methods should be used.</p> | |
111 | ||
112 | </li> | |
113 | <li><p>To restore some of the features of the Tk module, Pmw.initialise() | |
114 | now adds run-time hooks into Tkinter to get notification of when Tk | |
115 | widgets are created and destroyed. It also modifies the CallWrapper | |
116 | class so that errors during callbacks and bindings can be displayed | |
117 | in a window. If Pmw.initialise() is not called, Tkinter is not | |
118 | modified and these features are not available.</p> | |
119 | ||
120 | </li> | |
121 | <li><p>If a Tk widget which is acting as the hull of a megawidget is | |
122 | destroyed, then the megawidget is destroyed as well. This can | |
123 | only happen if Pmw.initialise() is called.</p> | |
124 | ||
125 | </li> | |
126 | <li><p>Pmw.initialise() now takes the Tkinter root as its argument.</p> | |
127 | ||
128 | </li> | |
129 | <li><p>The parent of megawidgets now defaults to the Tk root. Previously, | |
130 | the parent of non-toplevel megawidgets had to be given.</p> | |
131 | ||
132 | </li> | |
133 | <li><p>Added PmwBase.tracetk() function to get trace of calls to the Tcl | |
134 | interpreter for debugging.</p> | |
135 | ||
136 | </li> | |
137 | <li><p>Added functions to PmwBase to display a busy cursor over the | |
138 | application such as when a modal dialog is displayed or it is | |
139 | blocked doing a long calculation. Uses busy command of the blt | |
140 | extension, if present.</p> | |
141 | ||
142 | </li> | |
143 | <li><p>Created a nifty new demo which demonstrates most of the megawidgets | |
144 | in a convenient way.</p> | |
145 | ||
146 | </li> | |
147 | <li><p>Added a TextDialog.</p> | |
148 | ||
149 | </li> | |
150 | <li><p>Added functionality to handle the grabbing of nested modal dialogs | |
151 | correctly.</p> | |
152 | ||
153 | </li> | |
154 | <li><p>Added an activatecommand option to Dialog which allows, for example, | |
155 | the PromptDialog widget to set the keyboard focus when it is | |
156 | activated.</p> | |
157 | ||
158 | </li> | |
159 | <li><p>Added tests for Counter and logicalfont.</p> | |
160 | ||
161 | </li> | |
162 | <li><p>The ScrolledListBox selectioncommand is no longer given the widget | |
163 | as its first argument.</p> | |
164 | ||
165 | </li> | |
166 | <li><p>Several method, function and component names were changed, to be | |
167 | consistent with the coding conventions.</p> | |
168 | ||
169 | </li> | |
170 | <li><p>Some of the effects of moving from the Tk module to Tkinter are:</p> | |
171 | <ul><li><p>The Tk module used to exit if there were no non-root toplevel | |
172 | windows shown. This is no longer the case and so the application | |
173 | must handle this explicitly, particularly if the root window is | |
174 | withdrawn and the last non-root toplevel is deleted by the window | |
175 | manager.</p> | |
176 | ||
177 | </li> | |
178 | <li><p>The Tk module bind functions and methods used to take a noEvent | |
179 | argument to indicate that the Tk event should not be passed to the | |
180 | callback. Tkinter does not support this.</p> | |
181 | ||
182 | </li> | |
183 | <li><p>The Tk module initialise() function should be replaced by | |
184 | "root = Tkinter.Tk()" and root should be used instead of "Tk.Root()"</p> | |
185 | ||
186 | </li> | |
187 | <li><p>The Tk module quit() function should be replace by "root.destroy()".</p> | |
188 | ||
189 | </li> | |
190 | <li><p>Toplevels are not hidden when created. To be consistent, | |
191 | MegaToplevels are not hidden either.</p> | |
192 | ||
193 | </li> | |
194 | <li><p>The hide and show methods are not available for Tkinter Toplevels, | |
195 | only MegaToplevels</p> | |
196 | ||
197 | </li> | |
198 | <li><p>There is no grid_configure method.</p> | |
199 | ||
200 | </li> | |
201 | <li><p>Tkinter.Canvas.coords() returns a python list, not a tuple.</p> | |
202 | ||
203 | </li> | |
204 | <li><p>The Tkinter cget and configure widget methods always return | |
205 | strings for the option values. The Tk module used to convert the | |
206 | string to the appropriate python type (such as string, integer, | |
207 | float, Variable, Image, callback function).</p> | |
208 | ||
209 | </li> | |
210 | <li><p>Tkinter Menu and Toplevel classes incorrectly have a pack method.</p> | |
211 | ||
212 | </li> | |
213 | <li><p>Menu class has no geometry method.</p> | |
214 | ||
215 | </li> | |
216 | <li><p>Canvas focus returns <strong>''</strong> rather than None.</p> | |
217 | ||
218 | </li> | |
219 | <li><p>Text mark_gravity returns <strong>''</strong> rather than None.</p> | |
220 | ||
221 | </li></ul> | |
222 | ||
223 | </li></ul> | |
224 | <p> 13 March 1997</p> | |
225 | ||
226 | <ul><li><p>Release of version 0.2</p> | |
227 | ||
228 | </li></ul> | |
229 | <p> 17 March 1997</p> | |
230 | ||
231 | <ul><li><p>Set default WM_DELETE_WINDOW protocol of Tkinter.Toplevel to | |
232 | destroy() and removed duplicated protocol request from all demos.</p> | |
233 | ||
234 | </li> | |
235 | <li><p>Modified text of ShowBusy demo to indicate that busy cursor will | |
236 | only be seen if the BLT extension is present.</p> | |
237 | ||
238 | </li> | |
239 | <li><p>Replaced call to update() in PmwLabeledWidget.py with update_idletasks().</p> | |
240 | ||
241 | </li> | |
242 | <li><p>Changed name of PromptDialog component from <strong>'entry'</strong> to <strong>'entryfield'</strong>.</p> | |
243 | ||
244 | </li></ul> | |
245 | <p> 28 April 1997</p> | |
246 | ||
247 | <ul><li><p>Version 0.3 released internally</p> | |
248 | ||
249 | </li></ul> | |
250 | <p> 19 August 1997</p> | |
251 | ||
252 | <ul><li><p>Many changes made (see the version 0.4 porting guide for | |
253 | more details).</p> | |
254 | ||
255 | </li> | |
256 | <li><p>The option propagation mechanism that iwidgets uses is too | |
257 | cumbersome, too hard to understand and, in python, too slow. | |
258 | Developed a new mechanism which is more explicit in naming | |
259 | options. This resulted in most options which were simply | |
260 | propagated to components being removed. Removed keep(), rename() | |
261 | and ignore() methods and "usual" options.</p> | |
262 | ||
263 | </li> | |
264 | <li><p>For speed, Pmw no longer queries the Tk option database for | |
265 | default values for megawidget options. Hence, resource names and | |
266 | classes do not need to be supplied when creating options and | |
267 | <strong>None</strong> is returned for the resource name and class when using | |
268 | <code>configure()</code> to query the options. Option "types" no longer | |
269 | used.</p> | |
270 | ||
271 | </li> | |
272 | <li><p>Changed method and component names to be more consistent.</p> | |
273 | ||
274 | </li> | |
275 | <li><p>Replaced most uses of pack() with grid().</p> | |
276 | ||
277 | </li> | |
278 | <li><p>Megawidgets no longer inherit from LabeledWidget. Instead they | |
279 | call createlabel() to optionally create the label component.</p> | |
280 | ||
281 | </li> | |
282 | <li><p>Removed child site from EntryField and rewrote ComboBox | |
283 | accordingly.</p> | |
284 | ||
285 | </li> | |
286 | <li><p>Wrote lots more documentation, including automatically generated | |
287 | reference manuals.</p> | |
288 | ||
289 | </li> | |
290 | <li><p>Removed PushButton and rewrote ButtonBox to directly create | |
291 | Tkinter.Buttons rather than PushButtons.</p> | |
292 | ||
293 | </li> | |
294 | <li><p>Added initialisation options - options which can be set at | |
295 | creation time but not later using configure().</p> | |
296 | ||
297 | </li> | |
298 | <li><p>Added aliases for components.</p> | |
299 | ||
300 | </li> | |
301 | <li><p>Modified the base classes so that during option configuration, | |
302 | components are configured <em>before</em> configuration called functions | |
303 | are called.</p> | |
304 | ||
305 | </li> | |
306 | <li><p>Added several more megawidgets.</p> | |
307 | ||
308 | </li> | |
309 | <li><p>Added interface to BLT graph and vector commands.</p> | |
310 | ||
311 | </li> | |
312 | <li><p>Created PmwLazy module for lazy importing of Pmw - avoids loading | |
313 | megawidgets which are not used.</p> | |
314 | ||
315 | </li> | |
316 | <li><p>Added several more functions for handling color and fonts.</p> | |
317 | ||
318 | </li> | |
319 | <li><p>Replaced Counter and EntryField <em>time</em> with <em>timeN</em> and <em>time24</em></p> | |
320 | ||
321 | </li> | |
322 | <li><p>Pmw.initialise() will now create Tkinter.Tk if not given root.</p> | |
323 | ||
324 | </li></ul> | |
325 | <p> 1 September 1997</p> | |
326 | ||
327 | <ul><li><p>Release of version 0.4</p> | |
328 | ||
329 | </li></ul> | |
330 | <p> 5 September 1997</p> | |
331 | ||
332 | <ul><li><p>Modified the base classes so that the Tk option database resource | |
333 | class of megawidgets can be overridden in the call to the | |
334 | constructor using the <strong>hull_class</strong> option.</p> | |
335 | ||
336 | </li> | |
337 | <li><p>The separators in Pmw.PanedWidget are now active - they can be | |
338 | grabbed, like the handles, and moved around. The cursor now | |
339 | changes to the correct left/right or up/down cursor when over a | |
340 | separator or handle. (Clemens Hintze)</p> | |
341 | ||
342 | </li> | |
343 | <li><p>Fixed bug in MessageInfo demo Dismiss button. If it is invoked, | |
344 | an error occurs saying "not enough arguments". (Mark Colclough)</p> | |
345 | ||
346 | </li></ul> | |
347 | <p> 9 September 1997</p> | |
348 | ||
349 | <ul><li><p>Added the <strong>useTkOptionDb</strong> argument to Pmw.initialise which | |
350 | specifies that the initial values of megawidget options are to be | |
351 | set by querying the Tk option database.</p> | |
352 | ||
353 | </li> | |
354 | <li><p>When used to query options, the configure() method now returns the | |
355 | resource class and name of the options.</p> | |
356 | ||
357 | </li></ul> | |
358 | <p> 19 September 1997</p> | |
359 | ||
360 | <ul><li><p>Changed functions datestringtoint() and timestringtoint() to | |
361 | datestringtojdn() and timestringtoseconds(). Changed return value | |
362 | of datestringtojdn() to be Julian Day Numbers rather than seconds | |
363 | since the epoch.</p> | |
364 | ||
365 | </li> | |
366 | <li><p>Fixed a bug in the date Counter due to use of time.timezone, by | |
367 | replacing, when calculating date increments, calls to the time | |
368 | module with calls to datestringtojdn().</p> | |
369 | ||
370 | </li> | |
371 | <li><p>Added century pivot year (setyearpivot function) to Counter date | |
372 | datatypes to handle two-digit years.</p> | |
373 | ||
374 | </li> | |
375 | <li><p>Added date_dmy4, date_mdy4 and date_y4md datatypes to Counter.</p> | |
376 | ||
377 | </li> | |
378 | <li><p>Modified demos All.py and ScrolledText.py so that demos can be called | |
379 | from directories other than the demos directory. (Case Roole and | |
380 | Guido van Rossum)</p> | |
381 | ||
382 | </li> | |
383 | <li><p>Changed the default for the Pmw.Balloon <em>label_justify</em> option to | |
384 | <em>left</em> to improve appearance of multi-line balloons. Pmw.Balloon | |
385 | now replaces newlines with spaces in the statusHelp string so that | |
386 | the strings look better when displayed in a Pmw.MessageBar. | |
387 | (Andreas Kostyrka)</p> | |
388 | ||
389 | </li> | |
390 | <li><p>Pmw.Blt now calls <em>package require BLT</em> when checking for the | |
391 | existence of Blt, so that it can be loaded if it is not statically | |
392 | linked. (Clemens Hintze, Matthias Klose)</p> | |
393 | ||
394 | </li> | |
395 | <li><p>Copied earthris.gif and flagup.bmp files from Tcl distribution to | |
396 | test directory, just in case they have not been installed. | |
397 | (Jonathan Kelly)</p> | |
398 | ||
399 | </li> | |
400 | <li><p>Lots of improvements to the documentation and documenting recent | |
401 | changes.</p> | |
402 | ||
403 | </li></ul> | |
404 | <p> 16 October 1997</p> | |
405 | ||
406 | <ul><li><p>Modified Pmw.Balloon and Pmw.ComboBox to work around a bug in the | |
407 | Windows95 version of Tk which caused the popup windows to appear | |
408 | in the wrong place. (Fredrik Lundh and Jerome Gay)</p> | |
409 | ||
410 | </li> | |
411 | <li><p>Added Pmw.maxfontwidth() function. (Rob Pearson)</p> | |
412 | ||
413 | </li></ul> | |
414 | <p> 24 October 1997</p> | |
415 | ||
416 | <ul><li><p>Changed PmwBase._reporterror to handle the class exceptions of | |
417 | python 1.5. (Case Roole)</p> | |
418 | ||
419 | </li></ul> | |
420 | <p> 29 October 1997</p> | |
421 | ||
422 | <ul><li><p>Fixed a bug in forwardmethods() function which occurred if the | |
423 | <em>toClass</em> class had a method called <strong>type</strong>.</p> | |
424 | ||
425 | </li></ul> | |
426 | <p> 7 November 1997</p> | |
427 | ||
428 | <ul><li><p>Changed tests/Test._getErrorValue to handle the class exceptions of | |
429 | python 1.5. (Michael McLay)</p> | |
430 | ||
431 | </li> | |
432 | <li><p>Changed bug fix in forwardmethods() function to use the | |
433 | <code>exec execString in d</code> construct. (Guido van Rossum)</p> | |
434 | ||
435 | </li> | |
436 | <li><p>Can now use Pmw.MegaArchetype as a base class just to get option | |
437 | handling; it will not create the hull component unless requested. | |
438 | Moved __str__() and interior() methods from Pmw.MegaToplevel and | |
439 | Pmw.MegaWidget to Pmw.MegaArchetype class.</p> | |
440 | ||
441 | </li></ul> | |
442 | <p> 10 November 1997</p> | |
443 | ||
444 | <ul><li><p>Added <em>textclass</em> option to Pmw.ScrolledText and <em>listboxclass</em> | |
445 | option for Pmw.ScrolledListBox to allow embedding of custom | |
446 | widgets.</p> | |
447 | ||
448 | </li> | |
449 | <li><p>Added Mitch Chapman's <strong>FontText</strong> module to the <code>demos</code> directory | |
450 | and used it to display the demo source code in color.</p> | |
451 | ||
452 | </li> | |
453 | <li><p>Added two notebook megawwidgets, Pmw.NoteBookR and Pmw.NoteBookS. | |
454 | (Case Roole and Joe Saltiel)</p> | |
455 | ||
456 | </li> | |
457 | <li><p>Added Pmw.ScrolledCanvas megawidget. (Joe Saltiel)</p> | |
458 | ||
459 | </li> | |
460 | <li><p>Added Pmw.TreeBrowse megawidget. (Michael McLay)</p> | |
461 | ||
462 | </li> | |
463 | <li><p>Added Pmw.Group megawidget and modified to use <code>grid()</code> instead | |
464 | of <code>pack()</code>. (Case Roole)</p> | |
465 | ||
466 | </li> | |
467 | <li><p>Release of version 0.5</p> | |
468 | ||
469 | </li></ul> | |
470 | <p> 12 November 1997</p> | |
471 | ||
472 | <ul><li><p>Added <em>pyclass</em> option to components and removed <em>textclass</em> | |
473 | option from Pmw.ScrolledText and <em>listboxclass</em> option from | |
474 | Pmw.ScrolledListBox. (Suggested by Shen Wang)</p> | |
475 | ||
476 | </li> | |
477 | <li><p>Added label component to Pmw.ButtonBox megawidget.</p> | |
478 | ||
479 | </li> | |
480 | <li><p>Fixed mis-spelling of PmwTreeBrowse in Pmw.py.</p> | |
481 | ||
482 | </li> | |
483 | <li><p>Release of version 0.5.1</p> | |
484 | ||
485 | </li></ul> | |
486 | <p> 5 December 1997</p> | |
487 | ||
488 | <ul><li><p>The pyclass option can now be None. If so, createcomponent | |
489 | returns None.</p> | |
490 | ||
491 | </li> | |
492 | <li><p>Removed tagtype option from Pmw.Group. Can now use the more | |
493 | general tag_pyclass instead.</p> | |
494 | ||
495 | </li> | |
496 | <li><p>Added tcl call to <code>load {} Blt</code> when testing for presence of Blt.</p> | |
497 | ||
498 | </li> | |
499 | <li><p>Added julian and papal options to Pmw.ymdtojulian and | |
500 | Pmw.juliantoymd functions and made sure divisions give the same | |
501 | result as C even when operands are negative.</p> | |
502 | ||
503 | </li> | |
504 | <li><p>Exported ymdtojulian and juliantoymd functions.</p> | |
505 | ||
506 | </li> | |
507 | <li><p>Fixed bug in activate method. Did not prepend TclError with Tkinter.</p> | |
508 | ||
509 | </li> | |
510 | <li><p>When the Blt busy hold command is called from showbusycursor, the | |
511 | bindtags on the busy window are set so that no events cause | |
512 | callbacks to occur for the toplevel or all bindings. Also, while | |
513 | a busy window is up, the focus is changed to the busy window so | |
514 | that no keyboard events are accepted. This fixes a bug where the | |
515 | Tkinter._nametowidget function could crash with a <code>KeyError: _Busy</code> | |
516 | if there was a binding on a toplevel window and the mouse | |
517 | was pressed while the busy cursor was up.</p> | |
518 | ||
519 | </li></ul> | |
520 | <p> 9 December 1997</p> | |
521 | ||
522 | <ul><li><p>Fixed bug in Pmw.datestringtojdn() when dealing with century year, | |
523 | such as 2000.</p> | |
524 | ||
525 | </li></ul> | |
526 | <p> 10 December 1997</p> | |
527 | ||
528 | <ul><li><p>Added <em>where</em> option to <code>Pmw.ScrolledText.importfile()</code>. (Graham | |
529 | Matthews)</p> | |
530 | ||
531 | </li></ul> | |
532 | <p> 16 December 1997</p> | |
533 | ||
534 | <ul><li><p>Modified Pmw.RadioSelect and Pmw.ButtonBox so that you can no | |
535 | longer index their buttons using regular expressions. This | |
536 | feature seemed to have little use and caused problems with buttons | |
537 | labeled for example <em>a*</em> and <em>b*</em>. (Problem reported by Rob | |
538 | Hooft)</p> | |
539 | ||
540 | </li> | |
541 | <li><p>Added updateFunction option to Pmw.busycallback(). If set, the | |
542 | function will be called just after the command given to | |
543 | Pmw.busycallback(). If the function is set the Tkinter update() | |
544 | method, then this will clear any events that may have occurred | |
545 | while the command was executing.</p> | |
546 | ||
547 | </li></ul> | |
548 | <p> 30 December 1997</p> | |
549 | ||
550 | <ul><li><p>Changed ymdtojulian and juliantoymd functions to jdntoymd and | |
551 | ymdtojdn, because the meaning of "julian" is ambiguous, whereas | |
552 | the meaning of "Julian Day Number" is not (maybe).</p> | |
553 | ||
554 | </li> | |
555 | <li><p>Converted Pmw to use python 1.5 package mechanism. (Michael McLay | |
556 | and Case Roole)</p> | |
557 | ||
558 | </li> | |
559 | <li><p>Removed Pmw.py and PmwLazy files. Added __init__.py, PmwLoader.py | |
560 | and Pmw.def files. (Case Roole)</p> | |
561 | ||
562 | </li> | |
563 | <li><p>Applications can now specify at runtime which version of Pmw to | |
564 | use and also which alpha versions, if any. (Case Roole)</p> | |
565 | ||
566 | </li> | |
567 | <li><p>Modified Pmw code for the version of Tkinter released with python | |
568 | 1.5.</p> | |
569 | ||
570 | </li> | |
571 | <li><p>Release of version 0.6</p> | |
572 | ||
573 | </li></ul> | |
574 | <p> 5 January 1998</p> | |
575 | ||
576 | <ul><li><p>Fixed alpha version handling so that alpha versions do not have to | |
577 | supply PmwBase.py and PmwUtils.py. (Case Roole)</p> | |
578 | ||
579 | </li> | |
580 | <li><p>Added example alpha directory and documentation. (Case Roole)</p> | |
581 | ||
582 | </li></ul> | |
583 | <p> 7 January 1998</p> | |
584 | ||
585 | <ul><li><p>Added selectmode option to Pmw.RadioSelect megawidget. (Roman | |
586 | Sulzhyk)</p> | |
587 | ||
588 | </li> | |
589 | <li><p>Added some changes to Pmw.ScrolledCanvas to get around some bugs. | |
590 | (Joe Saltiel)</p> | |
591 | ||
592 | </li> | |
593 | <li><p>Release of version 0.6.1</p> | |
594 | ||
595 | </li></ul> | |
596 | <p> 8 January 1998</p> | |
597 | ||
598 | <ul><li><p>Added some more changes to Pmw.ScrolledCanvas. (from Joe Saltiel)</p> | |
599 | ||
600 | </li></ul> | |
601 | <p> 12 January 1998</p> | |
602 | ||
603 | <ul><li><p>Added Pmw.OptionMenu megawidget. (Roman Sulzhyk)</p> | |
604 | ||
605 | </li></ul> | |
606 | <p> 20 February 1998</p> | |
607 | ||
608 | <ul><li><p>Added new Pmw.MenuBar features to delete menus and menuitems, | |
609 | enable and disable menu bar and to add cascade menus. (Rob Pearson)</p> | |
610 | ||
611 | </li> | |
612 | <li><p>Added extra arguments to Pmw.Color.spectrum for more control over | |
613 | color choice.</p> | |
614 | ||
615 | </li></ul> | |
616 | <p> 23 February 1998</p> | |
617 | ||
618 | <ul><li><p>Added canvasbind() method to Pmw.Balloon.</p> | |
619 | ||
620 | </li> | |
621 | <li><p>Fixed demos/All.py so that it will correctly determine which Pmw | |
622 | version to use even if it is in a directory symlinked to the demos | |
623 | directory.</p> | |
624 | ||
625 | </li> | |
626 | <li><p>Removed "import DemoVersion" from all demos, except All.py, so | |
627 | that they will work unchanged when copied outside of the Pmw | |
628 | distribution.</p> | |
629 | ||
630 | </li> | |
631 | <li><p>Release of version 0.6.2</p> | |
632 | ||
633 | </li></ul> | |
634 | <p> 26 February 1998</p> | |
635 | ||
636 | <ul><li><p>Fixed PmwLoader so that it works on Macintoshes. (Jack Jansen)</p> | |
637 | ||
638 | </li></ul> | |
639 | <p> 2 March 1998</p> | |
640 | ||
641 | <ul><li><p>Fixed PmwBase and PmwBlt so that an attempt is made to dynamically | |
642 | load Blt before it is used. Previously only attempted to load Blt | |
643 | when calling showbusycursor.</p> | |
644 | ||
645 | </li></ul> | |
646 | <p> 16 March 1998</p> | |
647 | ||
648 | <ul><li><p>Added hulldestroyed() method.</p> | |
649 | ||
650 | </li> | |
651 | <li><p>Modified displayerror() function to use value given to | |
652 | reporterrorstofile() if it is set.</p> | |
653 | ||
654 | </li> | |
655 | <li><p>Fixed bug in Pmw.EntryField which occurred when the <em>command</em> | |
656 | option destroyed the megawidget.</p> | |
657 | ||
658 | </li> | |
659 | <li><p>Pmw.EntryField invoke method now passes on the value returned by | |
660 | the <em>command</em> function.</p> | |
661 | ||
662 | </li></ul> | |
663 | <p> 3 April 1998</p> | |
664 | ||
665 | <ul><li><p>Added Pmw.ScrolledFrame megawidget. (Joe Saltiel)</p> | |
666 | ||
667 | </li> | |
668 | <li><p>Color.rgb2hsi() now uses the built-in <code>min()</code> and <code>max()</code> functions.</p> | |
669 | ||
670 | </li></ul> | |
671 | <p> 20 April 1998</p> | |
672 | ||
673 | <ul><li><p>Moved time and date functions from PmwCounter.py to new file, | |
674 | PmwTimeFuncs.py.</p> | |
675 | ||
676 | </li> | |
677 | <li><p>Added optional <em>separator</em> argument to <code>timestringtoseconds</code> and | |
678 | <code>datestringtojdn</code> functions. These functions are now stricter | |
679 | when checking if a string is a valid date or time. For example, | |
680 | it now checks for correct day in month, month in year, etc. These | |
681 | changes also affect the Pmw.Counter date and time validators.</p> | |
682 | ||
683 | </li> | |
684 | <li><p>The <code>datestringtojdn</code> function now accepts all combinations of | |
685 | <strong>'d'</strong>, <strong>'m'</strong>, <strong>'y'</strong> as format string.</p> | |
686 | ||
687 | </li> | |
688 | <li><p>Moved functions to bottom of file and class to top of file in | |
689 | PmwEntryField.py and PmwCounter.py.</p> | |
690 | ||
691 | </li> | |
692 | <li><p>The validation for Pmw.EntryField <em>integer</em>, <em>hexadecimal</em> and | |
693 | <em>real</em> types now use string.atol or string.atof rather than | |
694 | regular expressions.</p> | |
695 | ||
696 | </li> | |
697 | <li><p>The validation for the Pmw.EntryField <em>real</em> type accepts a | |
698 | <em>separator</em> argument, for those who prefer a comma instead of a | |
699 | full stop/period/point as the decimal dividing symbol.</p> | |
700 | ||
701 | </li> | |
702 | <li><p>The Pmw.EntryField <em>time*</em> and <em>date_*</em> validators have been | |
703 | removed. The functionality can be replaced by using the new | |
704 | <em>time</em> and <em>date</em> validators with <em>min</em> and <em>max</em> fields.</p> | |
705 | ||
706 | </li> | |
707 | <li><p>The Pmw.EntryField <em>maxwidth</em> option has been removed. The | |
708 | functionality can be replaced by using the <em>max</em> field of the | |
709 | validator.</p> | |
710 | ||
711 | </li> | |
712 | <li><p>Added an <em>extravalidators</em> option to Pmw.EntryField. This allows | |
713 | new types of validation to be added, particularly in classes | |
714 | derived from Pmw.EntryField. It also allows the use of different | |
715 | names for the same validation, by using aliases. Added | |
716 | SpecialEntry demo to show <em>extravalidators</em> option, based on work | |
717 | by Joachim Schmitz.</p> | |
718 | ||
719 | </li> | |
720 | <li><p>Fixed a bug in Pmw.EntryField when combining use of <em>value</em> and | |
721 | <em>entry_textvariable</em> options.</p> | |
722 | ||
723 | </li> | |
724 | <li><p>The Pmw.EntryField <em>validate</em> option now also accepts a dictionary | |
725 | to handle minimum and maximum validation and to allow the passing | |
726 | of other arguments to the validating functions, such as date, time | |
727 | and number formats and separators.</p> | |
728 | ||
729 | </li> | |
730 | <li><p>Fixed bug in Pmw.EntryField where the entry would scroll to the | |
731 | start of the text if an invalid character was typed.</p> | |
732 | ||
733 | </li> | |
734 | <li><p>Added checkentry() method to Pmw.EntryField, so that it can be | |
735 | updated if the entry widget is tied to a textvariable.</p> | |
736 | ||
737 | </li></ul> | |
738 | <p> 10 May 1998</p> | |
739 | ||
740 | <ul><li><p>The activate() method now takes a geometry option to allow more | |
741 | flexible positioning of the modal dialog.</p> | |
742 | ||
743 | </li> | |
744 | <li><p>Fixed rarely occurring bug in deactivate() method if it is called | |
745 | (perhaps from a timer) during the call to wait_visibility() in the | |
746 | activate() method. This bug used to generate an error and the | |
747 | application would not exit properly.</p> | |
748 | ||
749 | </li> | |
750 | <li><p>Fixed another rarely occurring bug in deactivate() method if it is | |
751 | called while another application has the grab.</p> | |
752 | ||
753 | </li> | |
754 | <li><p>Removed "sys.exc_traceback = None" for except clauses which used | |
755 | to be required by python 1.4 so that references to objects in the | |
756 | stack trace would not be left.</p> | |
757 | ||
758 | </li> | |
759 | <li><p>Now uses sys.exc_info() function when displaying exception | |
760 | traceback.</p> | |
761 | ||
762 | </li> | |
763 | <li><p>The <strong>state</strong> option of Pmw.Balloon and the <strong>orient</strong> option of | |
764 | several others now generate an exception if they have a bad value.</p> | |
765 | ||
766 | </li> | |
767 | <li><p>Added a deactivatecommand option to Pmw.MegaToplevel which can be | |
768 | used, for example, to cancel timers.</p> | |
769 | ||
770 | </li> | |
771 | <li><p>Made changes to Pmw.Counter so that the entry display continuously | |
772 | changes when arrow key presses are repeated quickly.</p> | |
773 | ||
774 | </li> | |
775 | <li><p>Made changes to Pmw.Counter so that the insertion cursor is maintained | |
776 | while counting and the entry scrolls to the end if the value is long.</p> | |
777 | ||
778 | </li> | |
779 | <li><p>Pmw.Counter now behaves correctly when counting past the maximum | |
780 | and minimum values of the EntryField.</p> | |
781 | ||
782 | </li></ul> | |
783 | <p> 28 May 1998</p> | |
784 | ||
785 | <ul><li><p>Made all Pmw.EntryField standard validators publicly available | |
786 | as <code>Pmw.numericvalidator</code>, etc.</p> | |
787 | ||
788 | </li> | |
789 | <li><p>Now uses faster <code>string.replace()</code> instead of <code>regsub.gsub()</code> when | |
790 | applicable.</p> | |
791 | ||
792 | </li> | |
793 | <li><p>If the <em>balloonHelp</em> argument of the Pmw.Balloon bind methods is | |
794 | <strong>None</strong>, no balloon is displayed.</p> | |
795 | ||
796 | </li> | |
797 | <li><p>Merged the code from the PmwUtils module (forwardmethods()) into | |
798 | PmwBase, since it was always used, was used nowhere else, and made | |
799 | freezing a little more complicated.</p> | |
800 | ||
801 | </li> | |
802 | <li><p>Added a short delay between calling Tkinter bell() method (sounds nicer).</p> | |
803 | ||
804 | </li> | |
805 | <li><p>The functions <code>datestringtojdn()</code> and <code>timestringtoseconds()</code> now | |
806 | return ValueError on invalid input.</p> | |
807 | ||
808 | </li> | |
809 | <li><p>Created bundlepmw.py, to help when freezing in Pmw. Placed in bin | |
810 | directory.</p> | |
811 | ||
812 | </li></ul> | |
813 | <p> 29 May 1998</p> | |
814 | ||
815 | <ul><li><p>Fixed rare bug in Pmw.Counter which occured if the counter was | |
816 | unmapped while the mouse button was held down over an arrow button.</p> | |
817 | ||
818 | </li> | |
819 | <li><p>Created contrib directory and placed PmwVerticalGuage.py in it. | |
820 | (Chris Wright)</p> | |
821 | ||
822 | </li> | |
823 | <li><p>Patched PmwNoteBookR.py. (Siggy Brentrup)</p> | |
824 | ||
825 | </li> | |
826 | <li><p>Added addoptions() method to Pmw.MegaArchetype class. (Dieter Maurer)</p> | |
827 | ||
828 | </li> | |
829 | <li><p>By default, MenuBar creates hotkeys for menus and menu items for | |
830 | keyboard traversal. Added traversSpec argument to MenuBar add | |
831 | methods. (Michael McLay)</p> | |
832 | ||
833 | </li></ul> | |
834 | <p> 31 May 1998</p> | |
835 | ||
836 | <ul><li><p>Cleaned up bbox() methods in Pmw.ScrolledCanvas and | |
837 | Pmw.ScrolledListBox.</p> | |
838 | ||
839 | </li> | |
840 | <li><p>The createcomponent() method now disallows the creation of | |
841 | component names containing an underscore, since the query | |
842 | functions would not be able to find them.</p> | |
843 | ||
844 | </li></ul> | |
845 | <p> 2 June 1998</p> | |
846 | ||
847 | <ul><li><p>Release of version 0.7</p> | |
848 | ||
849 | </li></ul> | |
850 | <p> 3 June 1998</p> | |
851 | ||
852 | <ul><li><p>Moved Pmw.TreeBrowse megawidget to contrib directory.</p> | |
853 | ||
854 | </li></ul> | |
855 | <p> 17 June 1998</p> | |
856 | ||
857 | <ul><li><p>Added PmwFullTimeCounter.py to contrib directory (Daniel Michelson)</p> | |
858 | ||
859 | </li></ul> | |
860 | <p> 1 July 1998</p> | |
861 | ||
862 | <ul><li><p>Changed mispelt file PmwVerticalGuage.py to PmwVerticalGauge.py | |
863 | in contrib directory.</p> | |
864 | ||
865 | </li></ul> | |
866 | <p> 7 July 1998</p> | |
867 | ||
868 | <ul><li><p>Fixed bug in Pmw.Counter real datatype. Sometimes incorrectly | |
869 | counted negative decimal fractions. (Reported by David Ascher)</p> | |
870 | ||
871 | </li></ul> | |
872 | <p> 12 July 1998</p> | |
873 | ||
874 | <ul><li><p>The <em>format</em> argument of Pmw.datestringtojdn() now defaults to | |
875 | <strong>'ymd'</strong>.</p> | |
876 | ||
877 | </li> | |
878 | <li><p>Removed Tkinter_test.py from tests since it does not test any Pmw | |
879 | functionality (only Tkinter) and it fails under MS-Windows 95.</p> | |
880 | ||
881 | </li></ul> | |
882 | <p> 23 August 1998</p> | |
883 | ||
884 | <ul><li><p>Changed several exception types to be more consistent.</p> | |
885 | ||
886 | </li> | |
887 | <li><p>Made the interface to Pmw.Blt.Vector more like the builtin python | |
888 | list type.</p> | |
889 | ||
890 | </li> | |
891 | <li><p>It is no longer an error to call Pmw.setversion() or | |
892 | Pmw.setalphaversions() after initialisation, as long as the | |
893 | requested version matches the actual version.</p> | |
894 | ||
895 | </li> | |
896 | <li><p>Fixed Pmw.NoteBookR so that it behaves better when the | |
897 | highlightthickness is changed.</p> | |
898 | ||
899 | </li> | |
900 | <li><p>The setyearpivot() function now returns a tuple containing the old | |
901 | values of <em>pivot</em> and <em>century</em>.</p> | |
902 | ||
903 | </li> | |
904 | <li><p>Added PmwFileDialog.py to contrib directory (Rob Hooft)</p> | |
905 | ||
906 | </li> | |
907 | <li><p>Modified demos so that full tracebacks are displayed if an error | |
908 | occurs when importing a module.</p> | |
909 | ||
910 | </li> | |
911 | <li><p>Removed justify() method from Pmw.ScrolledListBox, since it is | |
912 | just a wrapper around the xview and yview methods of the listbox. | |
913 | Also, it was not a permanent justification, as the name implied.</p> | |
914 | ||
915 | </li></ul> | |
916 | <p> 20 September 1998</p> | |
917 | ||
918 | <ul><li><p>Changed implementation of Pmw.ScrolledCanvas.</p> | |
919 | ||
920 | </li> | |
921 | <li><p>Added <strong>borderframe</strong> option to Pmw.ScrolledText and Pmw.ScrolledCanvas.</p> | |
922 | ||
923 | </li></ul> | |
924 | <p> 18 October 1998</p> | |
925 | ||
926 | <ul><li><p>Major overhaul of all scrolled widgets. Modified all to use | |
927 | similar structure, given the peculiarities of each. Fixed several | |
928 | subtle bugs.</p> | |
929 | ||
930 | </li> | |
931 | <li><p>Pmw.ScrolledFrame: now uses a frame positioned within a clipping | |
932 | frame using the place geometry manager. Added borderframe, | |
933 | horizflex, horizfraction, usehullsize, vertflex, vertfraction | |
934 | options. Added reposition() method. Removed getFrame() method; | |
935 | use interior() method instead.</p> | |
936 | ||
937 | </li> | |
938 | <li><p>Pmw.ScrolledListBox: added usehullsize option.</p> | |
939 | ||
940 | </li> | |
941 | <li><p>Pmw.ScrolledText: added borderframe and usehullsize options.</p> | |
942 | ||
943 | </li> | |
944 | <li><p>Pmw.ScrolledCanvas: simplified widget structure. Added | |
945 | borderframe, canvasmargin, scrollmargin and usehullsize options. | |
946 | Added label.</p> | |
947 | ||
948 | </li> | |
949 | <li><p>Modified Pmw.OptionMenu to use standard widgets rather than call | |
950 | tcl procedure. Added <strong>initialitem</strong> option. Now handles | |
951 | <strong>menubutton_textvariable</strong> component option correctly.</p> | |
952 | ||
953 | </li></ul> | |
954 | <p> 1 November 1998</p> | |
955 | ||
956 | <ul><li><p>Documented more Pmw functions and Pmw.ComboBox.</p> | |
957 | ||
958 | </li></ul> | |
959 | <p> 15 November 1998</p> | |
960 | ||
961 | <ul><li><p>Fixed some bugs, cleaned up code and wrote documentation for | |
962 | Pmw.Group. Removed <strong>ringpadx</strong> and <strong>ringpady</strong> options, since this | |
963 | functionality is more generally available by padding the | |
964 | megawidget itself and by padding the children of the megawidget. | |
965 | Modified Pmw.aligngrouptags so that it takes into account the | |
966 | borderwidth and highlightthickness of the ring and so that it | |
967 | works when there is no tag widget. Added <strong>tagindent</strong> option.</p> | |
968 | ||
969 | </li></ul> | |
970 | <p> 18 November 1998</p> | |
971 | ||
972 | <ul><li><p>Renamed canvasbind() and canvasunbind() methods of Pmw.Balloon to | |
973 | tagbind() and tagunbind() and modified so that they work with both | |
974 | Tkinter.Canvas items and Tkinter.Text tagged items.</p> | |
975 | ||
976 | </li></ul> | |
977 | <p> 19 November 1998</p> | |
978 | ||
979 | <ul><li><p>Added havebltbusy() method to Pmw.Blt. (Robin Becker)</p> | |
980 | ||
981 | </li></ul> | |
982 | <p> 21 November 1998</p> | |
983 | ||
984 | <ul><li><p>Modified contrib/PmwFileDialog.py so that when a file is selected | |
985 | with the mouse, the highlight (in the file list) persists and the | |
986 | file list does not scroll to the top. (Rob Hooft)</p> | |
987 | ||
988 | </li> | |
989 | <li><p>Modified Pmw.Balloon so that it can be bound to a tag associated | |
990 | with several Canvas or Text items. (Magnus Kessler)</p> | |
991 | ||
992 | </li></ul> | |
993 | <p> 21 November 1998</p> | |
994 | ||
995 | <ul><li><p>Cleaned up appearance and colors of Pmw.NoteBookR tabs. (Georg | |
996 | Mischler)</p> | |
997 | ||
998 | </li> | |
999 | <li><p>Added <strong>buttontype</strong> option to Pmw.RadioSelect to support | |
1000 | radiobuttons and checkbuttons. (Georg Mischler)</p> | |
1001 | ||
1002 | </li></ul> | |
1003 | <p> 23 November 1998</p> | |
1004 | ||
1005 | <ul><li><p>Updated usage of <code>bind_class(tag)</code> due to change in return value | |
1006 | in Tkinter module in python 1.5.2. (Magnus Kessler, Fredrik Lundh)</p> | |
1007 | ||
1008 | </li> | |
1009 | <li><p>The default time displayed in Pmw.TimeCounter is now the current | |
1010 | local time, not GMT as before.</p> | |
1011 | ||
1012 | </li> | |
1013 | <li><p>The times displayed in the Counter demonstration are now the | |
1014 | current local time, not GMT as before.</p> | |
1015 | ||
1016 | </li></ul> | |
1017 | <p> 7 December 1998</p> | |
1018 | ||
1019 | <ul><li><p>Modified Pmw.ComboBox to take advantage of the fix to the Tkinter | |
1020 | <code>bind()</code> method callback handling of <code>Event.widget</code> in python | |
1021 | 1.5.2. It works even if the <strong>selectioncommand</strong> destroys the | |
1022 | combobox. For simple comboboxes, the invoke() method now returns | |
1023 | the return value of the <strong>selectioncommand</strong>.</p> | |
1024 | ||
1025 | </li> | |
1026 | <li><p>Modified Pmw.EntryField to take advantage of the fix to the | |
1027 | Tkinter <code>bind()</code> method callback handling of <code>Event.widget</code> in | |
1028 | python 1.5.2. It works even if a user-supplied callback | |
1029 | (<strong>command</strong>, <strong>invalidcommand</strong>, <strong>validator</strong> or <strong>stringtovalue</strong>) | |
1030 | destroys the entryfield. Cleans up correctly when destroyed. The | |
1031 | invoke() method now returns the return value of the <strong>command</strong>.</p> | |
1032 | ||
1033 | </li> | |
1034 | <li><p>The invoke() method of Pmw.TimeCounter now returns the return | |
1035 | value of the <strong>command</strong>.</p> | |
1036 | ||
1037 | </li> | |
1038 | <li><p>Modified Pmw.ButtonBox to use the new (in Tk8.0) <strong>default</strong> option | |
1039 | of the Tkinter <strong>Button</strong> widget instead of a separate frame. | |
1040 | Changed default padding to be more compact. Removed "ring" frame | |
1041 | component and "ringborderwidth", "ringpadx" and "ringpady" | |
1042 | options. (Georg Mischler)</p> | |
1043 | ||
1044 | </li> | |
1045 | <li><p>Changed <strong>'pmw1'</strong> fontScheme to set default fonts only when running | |
1046 | under posix, since the default fonts on other systems look better.</p> | |
1047 | ||
1048 | </li></ul> | |
1049 | <p> 10 December 1998</p> | |
1050 | ||
1051 | <ul><li><p>Release of version 0.8</p> | |
1052 | ||
1053 | </li></ul> | |
1054 | <p> 20 January 1999</p> | |
1055 | ||
1056 | <ul><li><p>Added <strong>master</strong> option to Pmw.MegaToplevel and removed <strong>master</strong> | |
1057 | argument from the activate method.</p> | |
1058 | ||
1059 | </li> | |
1060 | <li><p>Replaced rand module in demos with a simple random number | |
1061 | generator (since rand is not built-in on all versions of python).</p> | |
1062 | ||
1063 | </li></ul> | |
1064 | <p> 22 February 1999</p> | |
1065 | ||
1066 | <ul><li><p>Modified <code>__init__.py</code> so that it only accepts directories whose | |
1067 | names begin with <strong>Pmw_M_N</strong> and which have a /lib/PmwLoader.py/ | |
1068 | file.</p> | |
1069 | ||
1070 | </li></ul> | |
1071 | <p> 13 May 1999</p> | |
1072 | ||
1073 | <ul><li><p>Changed Pmw.ScrolledCanvas, Pmw.ScrolledText and Pmw.ScrolledListBox | |
1074 | to speed up scrolling if the scrollmodes are not both dynamic.</p> | |
1075 | ||
1076 | </li> | |
1077 | <li><p>Changed busy cursor and activate/deactivate code so that it works | |
1078 | correctly under fast mouse clicking or fast keyboarding (using | |
1079 | accelerators). Also fixed so that grab is correctly restored | |
1080 | after a Pmw.ComboBox popup list is unmapped inside a modal dialog. | |
1081 | (Clemens Hintze)</p> | |
1082 | ||
1083 | </li> | |
1084 | <li><p>Several dialogs now give focus to one of their components (listbox | |
1085 | or entry widget) when activated. (Clemens Hintze)</p> | |
1086 | ||
1087 | </li> | |
1088 | <li><p>Fixed Pmw.ComboBox so that it unposts popup if the combobox is | |
1089 | unmapped and returns grab and focus correctly if destroyed.</p> | |
1090 | ||
1091 | </li> | |
1092 | <li><p>Improved tracetk() output to be more readable. Also displays | |
1093 | nested calls to the Tk mainloop better and shows callbacks from | |
1094 | tcl to python.</p> | |
1095 | ||
1096 | </li> | |
1097 | <li><p>Upgraded Blt support to blt2.4i. Graph widget is not backwards | |
1098 | compatible with blt2.1.</p> | |
1099 | ||
1100 | </li></ul> | |
1101 | <p> 19 May 1999</p> | |
1102 | ||
1103 | <ul><li><p>Fixed bug in Pmw.Balloon in placement of balloons over canvas | |
1104 | items when the canvas was scrolled. (Tessa Lau)</p> | |
1105 | ||
1106 | </li></ul> | |
1107 | <p> 20 May 1999</p> | |
1108 | ||
1109 | <ul><li><p>Added new Tk event types (new in Tk 8.0 and 8.0.5) to PmwBase | |
1110 | error display method. Also added check for unknown event types to | |
1111 | safeguard against future changes. (Magnus Kessler)</p> | |
1112 | ||
1113 | </li> | |
1114 | <li><p>Added <strong>exclude</strong> argument to <code>showbusycursor()</code>. (Rob Hooft)</p> | |
1115 | ||
1116 | </li></ul> | |
1117 | <p> 1 June 1999</p> | |
1118 | ||
1119 | <ul><li><p>Added wrappers for Blt Stripchart and Tabset widgets. (Nick Belshaw)</p> | |
1120 | ||
1121 | </li> | |
1122 | <li><p>Changed createcomponent() so that arguments to the constructor of | |
1123 | the component can now be specified as either multiple trailing | |
1124 | arguments to createcomponent() or as a single tuple argument.</p> | |
1125 | ||
1126 | </li></ul> | |
1127 | <p> 7 June 1999</p> | |
1128 | ||
1129 | <ul><li><p>Added call to update_idletasks() in Pmw.ScrolledCanvas, | |
1130 | Pmw.ScrolledFrame, Pmw.ScrolledText and Pmw.ScrolledListBox to | |
1131 | avoid endless mapping/unmapping of two dynamic scrollbars when the | |
1132 | window is first mapped and only one scrollbar is needed. | |
1133 | (Reported by Mark C Favas, solution suggested by Dieter Maurer.)</p> | |
1134 | ||
1135 | </li></ul> | |
1136 | <p> 10 June 1999</p> | |
1137 | ||
1138 | <ul><li><p>Fixed bug in bundlepmw.py when called with -noblt option. | |
1139 | (Reported by Kevin O'Connor)</p> | |
1140 | ||
1141 | </li> | |
1142 | <li><p>Pmw.ComboBox now unposts the dropdown listbox before the selection | |
1143 | callback is invoked, to avoid problems when the callback takes a | |
1144 | long time to run. (Reported by Randall Hopper)</p> | |
1145 | ||
1146 | </li></ul> | |
1147 | <p> 11 June 1999</p> | |
1148 | ||
1149 | <ul><li><p>Release of version 0.8.1</p> | |
1150 | ||
1151 | </li></ul> | |
1152 | <p> 29 June 1999</p> | |
1153 | ||
1154 | <ul><li><p>PmwMessageBar.message() now replaces newlines with spaces before | |
1155 | displaying message. Also applies to helpmessage().</p> | |
1156 | ||
1157 | </li></ul> | |
1158 | <p> 2 July 1999</p> | |
1159 | ||
1160 | <ul><li><p>Improved toplevel window positioning under NT, and stopped most of | |
1161 | the ugly flashing.</p> | |
1162 | ||
1163 | </li></ul> | |
1164 | <p> 5 July 1999</p> | |
1165 | ||
1166 | <ul><li><p>The <strong>pmw1</strong> fontScheme is now supported under NT, as is the <em>size</em> | |
1167 | option to <code>Pmw.initialise()</code>.</p> | |
1168 | ||
1169 | </li></ul> | |
1170 | <p> 6 July 1999</p> | |
1171 | ||
1172 | <ul><li><p>Changed the names of positional arguments in the following | |
1173 | methods, so that they have less chance of conflicting with keyword | |
1174 | arguments: MegaArchetype.createcomponent(), ButtonBox.insert(), | |
1175 | ButtonBox.add(), MenuBar.addcascademenu(), MenuBar.addmenuitem() | |
1176 | and RadioSelect.add().</p> | |
1177 | ||
1178 | </li></ul> | |
1179 | <p> 9 July 1999</p> | |
1180 | ||
1181 | <ul><li><p>Added images and example code to the megawidget reference manuals. | |
1182 | (Suggested by Joerg Henrichs)</p> | |
1183 | ||
1184 | </li> | |
1185 | <li><p>Fixed showbusycursor() under NT. It now calls update() instead of | |
1186 | update_idletasks() to force display of cursor. (Solution | |
1187 | suggested by George Howlett)</p> | |
1188 | ||
1189 | </li> | |
1190 | <li><p>Improved display of arrows in ComboBox, Counter and TimeCounter.</p> | |
1191 | ||
1192 | </li></ul> | |
1193 | <p> 16 July 1999</p> | |
1194 | ||
1195 | <ul><li><p>Removed Pmw.maxfontwidth() function, since better functionality is | |
1196 | now supplied by the Tk "font measure" command.</p> | |
1197 | ||
1198 | </li> | |
1199 | <li><p>Removed Pmw.fontexists() function, since in Tk8.0 all fonts exist.</p> | |
1200 | ||
1201 | </li></ul> | |
1202 | <p> 28 July 1999</p> | |
1203 | ||
1204 | <ul><li><p>Fixed bug in date counter with separator other than <strong>'/'</strong> and time | |
1205 | counter with separator other than <strong>':'</strong>. (David M. Cooke, Alan | |
1206 | Robinson)</p> | |
1207 | ||
1208 | </li> | |
1209 | <li><p>Under NT, the font named <strong>'fixed'</strong> is not fixed width, so added | |
1210 | alias from <strong>'Fixed'</strong> to <strong>'Courier'</strong>.</p> | |
1211 | ||
1212 | </li> | |
1213 | <li><p>Changed the <code>bind()</code> and <code>tagbind()</code> methods of Pmw.Balloon to | |
1214 | remove a potential memory leak. The methods now store the | |
1215 | <em>funcids</em> of the callback functions, so that if the same widget or | |
1216 | tag is bound twice, the balloon can remove the old bindings. | |
1217 | (Peter Stoehr)</p> | |
1218 | ||
1219 | </li> | |
1220 | <li><p>Changed NoteBookR so that lowercmd, creatcmd and raisecmd are | |
1221 | called in that order when a page is selected. Also fixed bug | |
1222 | which always raised page 0 when notebook is resized. (Scott | |
1223 | Evans, Charles Choi)</p> | |
1224 | ||
1225 | </li></ul> | |
1226 | <p> 1 August 1999</p> | |
1227 | ||
1228 | <ul><li><p>Added <strong>dynamicGroups</strong> argument to <code>defineoptions()</code> method and | |
1229 | modified ButtonBox, MenuBar, PanedWidget, RadioSelect to register | |
1230 | their dynamic groups.</p> | |
1231 | ||
1232 | </li> | |
1233 | <li><p><code>Pmw.initialise()</code> can now be called multiple times, with | |
1234 | different <em>root</em> arguments, but only sequentially. Pmw does not | |
1235 | (yet) support multiple simultaneous interpreters. Modified | |
1236 | Pmw.EntryField so that it recreates class bindings when | |
1237 | Tkinter.root changes.</p> | |
1238 | ||
1239 | </li></ul> | |
1240 | <p> 4 August 1999</p> | |
1241 | ||
1242 | <ul><li><p>Added relmouse option to Pmw.Balloon. Fixed Pmw.Balloon so that | |
1243 | the balloon is not displayed off-screen. (Tessa Lau)</p> | |
1244 | ||
1245 | </li></ul> | |
1246 | <p> 16 August 1999</p> | |
1247 | ||
1248 | <ul><li><p>Added disableKeyboardWhileBusy option to initialise(). To ignore | |
1249 | keyboard input while displaying the busy cursor, Pmw sets the | |
1250 | focus for each toplevel window to the Blt busy window. However, | |
1251 | under NT, this causes each window to be raised. If this is not | |
1252 | acceptable, programs running on NT can request show/hidebusycursor | |
1253 | not to ignore keyboard input. </p> | |
1254 | ||
1255 | </li></ul> | |
1256 | <p> 25 August 1999</p> | |
1257 | ||
1258 | <ul><li><p>Added Pmw.Blt.busy_forget() and used it in Pmw.hidebusycursor() | |
1259 | when running under NT. There is a bug in the Blt busy release | |
1260 | command under NT where it sometimes fails to display the busy | |
1261 | cursor. Using busy forget avoids the problem.</p> | |
1262 | ||
1263 | </li></ul> | |
1264 | <p> 27 September 1999</p> | |
1265 | ||
1266 | <ul><li><p>Added busyCursorName option to Pmw.initialise() and added cursor | |
1267 | argument to Pmw.Blt.busy_hold(). (Mark Favas)</p> | |
1268 | ||
1269 | </li></ul> | |
1270 | <p> 20 October 1999</p> | |
1271 | ||
1272 | <ul><li><p>Replaced Pmw.NoteBookR and Pmw.NoteBookS with completely rewritten | |
1273 | Pmw.NoteBook.</p> | |
1274 | ||
1275 | </li> | |
1276 | <li><p>Renamed Pmw.OptionMenu.get() to Pmw.OptionMenu.getcurselection() | |
1277 | and Pmw.PanedWidget.remove() to Pmw.PanedWidget.delete(), to be | |
1278 | more consistent with other megawidgets.</p> | |
1279 | ||
1280 | </li> | |
1281 | <li><p>The index() method of several megawidgets now use Pmw.END, | |
1282 | Pmw.SELECT and Pmw.DEFAULT instead of strings, since these may | |
1283 | conflict with component names. </p> | |
1284 | ||
1285 | </li> | |
1286 | <li><p>Pmw.OptionMenu.index() now uses Pmw.SELECT to return | |
1287 | index of the currently selected menu item, rather than None.</p> | |
1288 | ||
1289 | </li> | |
1290 | <li><p>Added destroy() method to Pmw.MegaArchetype to handle cleaning up | |
1291 | of _hullToMegaWidget mapping. </p> | |
1292 | ||
1293 | </li> | |
1294 | <li><p>Removed exclude argument from Pmw.showbusycursor() and added | |
1295 | Pmw.excludefrombusycursor() function instead. (Rob Hooft)</p> | |
1296 | ||
1297 | </li> | |
1298 | <li><p>Fixed several bugs for Windows NT.</p> | |
1299 | ||
1300 | </li> | |
1301 | <li><p>Added Pmw.ButtonBox.button() and Pmw.RadioSelect.button().</p> | |
1302 | ||
1303 | </li> | |
1304 | <li><p>Added Pmw.Color.bordercolors().</p> | |
1305 | ||
1306 | </li></ul> | |
1307 | <p> 21 October 1999</p> | |
1308 | ||
1309 | <ul><li><p>Release of version 0.8.3. (Version 0.8.2 was not released.)</p> | |
1310 | ||
1311 | </li></ul> | |
1312 | <p> 30 October 1999</p> | |
1313 | ||
1314 | <ul><li><p>Added arrownavigation option and previouspage() and nextpage() | |
1315 | methods to Pmw.NoteBook. (Peter Funk)</p> | |
1316 | ||
1317 | </li> | |
1318 | <li><p>Renamed the <code>setnaturalpagesize()</code> method of Pmw.NoteBook to | |
1319 | <code>setnaturalsize()</code> to be consistent with Pmw.PanedWidget.</p> | |
1320 | ||
1321 | </li> | |
1322 | <li><p>Changed Pmw.excludefrombusycursor() to Pmw.setbusycursorattributes(). | |
1323 | Removed busyCursorName option from Pmw.initialise() and added | |
1324 | cursorName attribute to Pmw.setbusycursorattributes().</p> | |
1325 | ||
1326 | </li> | |
1327 | <li><p>Added documentation source and build scripts to ftp site.</p> | |
1328 | ||
1329 | </li></ul> | |
1330 | <p> 6 November 1999</p> | |
1331 | ||
1332 | <ul><li><p>Fixed memory leaks when destroying megawidgets. Added automatic | |
1333 | check for memory leak to test script used by all tests. | |
1334 | Pmw.initialise() now uses a hook into Tkinter.Widget.destroy | |
1335 | rather than Tkinter.Frame.destroy to handle the case of | |
1336 | Pmw.NoteBook being destroyed (since the notebook hull is a canvas | |
1337 | and not a frame). Window manager delete protocol callbacks are | |
1338 | now cleaned up. Pmw.ScrolledListBox event bindings now do not | |
1339 | leak. (Reported by Jeff Weeks)</p> | |
1340 | ||
1341 | </li> | |
1342 | <li><p>Removed key bindings for Pmw.ScrolledListBox except space and return keys.</p> | |
1343 | ||
1344 | </li></ul> | |
1345 | <p> 20 November 1999</p> | |
1346 | ||
1347 | <ul><li><p>Fixed bug in Pmw.Balloon when the canvas or text item that | |
1348 | triggered the balloon is deleted before the balloon is displayed | |
1349 | by the <strong>initwait</strong> timer. (Magnus Kessler)</p> | |
1350 | ||
1351 | </li> | |
1352 | <li><p>Added <strong>'nograb'</strong> to <em>globalMode</em> option of <code>activate()</code> method. (Rob Hooft)</p> | |
1353 | ||
1354 | </li> | |
1355 | <li><p>Added __setitem__ method to Pmw.MegaArchetype, so that megawidget | |
1356 | options can be now set using <code>megawidget['option'] = value</code> style. | |
1357 | (Oliver Gathmann)</p> | |
1358 | ||
1359 | </li></ul> | |
1360 | <p> 27 December 1999</p> | |
1361 | ||
1362 | <ul><li><p>Converted from <code>regex</code> module to <code>re</code> module, since <code>regex</code> is not | |
1363 | implemented for Jpython. (Finn Bock)</p> | |
1364 | ||
1365 | </li></ul> | |
1366 | <p> 30 December 1999</p> | |
1367 | ||
1368 | <ul><li><p>Added <code>clear()</code> method to Pmw.ScrolledListBox (suggested by Carson | |
1369 | Fenimore).</p> | |
1370 | ||
1371 | </li></ul> | |
1372 | <p> 15 March 2000</p> | |
1373 | ||
1374 | <ul><li><p>Fixed problem in PmwBase when deleting windows that were created | |
1375 | before Pmw was initialised (such as splash windows displayed while | |
1376 | the application is coming up). (Mark Favas)</p> | |
1377 | ||
1378 | </li> | |
1379 | <li><p>Added splash window to Pmw demo. (Mark Favas)</p> | |
1380 | ||
1381 | </li></ul> | |
1382 | <p> 30 April 2000</p> | |
1383 | ||
1384 | <ul><li><p>Added Pmw.MainMenuBar megawidget, which uses the menubar feature | |
1385 | of Tk to provide platform specific menu bars.</p> | |
1386 | ||
1387 | </li> | |
1388 | <li><p>Fixed Pmw.Counter and several other megawidgets so that certain | |
1389 | <strong>hull</strong> constructor keywords, such as <strong>hull_relief</strong> and | |
1390 | <strong>hull_borderwidth</strong>, are not overriden in the constructor.</p> | |
1391 | ||
1392 | </li> | |
1393 | <li><p>Thanks to Peter Cashin for his help on how to unpack gzipped tar | |
1394 | files on Microsoft Windows operating systems.</p> | |
1395 | ||
1396 | </li> | |
1397 | <li><p>Added Pmw.HistoryText megawidget. This can be used as the basis | |
1398 | of an interactive text-based database query gui. It maintains a | |
1399 | history of each query and allows editing of prior queries.</p> | |
1400 | ||
1401 | </li> | |
1402 |