summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/What's New in TkTreeCtrl.html4409
-rw-r--r--doc/treectrl.html10
-rw-r--r--doc/treectrl.man7
-rw-r--r--doc/treectrl.n7
-rw-r--r--generic/tkTreeColumn.c77
-rw-r--r--generic/tkTreeCtrl.c21
-rw-r--r--generic/tkTreeCtrl.h13
-rw-r--r--generic/tkTreeItem.c17
-rw-r--r--generic/tkTreeStyle.c11
-rw-r--r--generic/tkTreeUtils.c100
10 files changed, 4605 insertions, 67 deletions
diff --git a/doc/What's New in TkTreeCtrl.html b/doc/What's New in TkTreeCtrl.html
index d7570f8..1752765 100644
--- a/doc/What's New in TkTreeCtrl.html
+++ b/doc/What's New in TkTreeCtrl.html
@@ -1,16 +1,41 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
-<!-- $Id: What's\040New\040in\040TkTreeCtrl.html,v 1.16 2006/10/27 04:52:23 treectrl Exp $ -->
+<!-- $Id: What's\040New\040in\040TkTreeCtrl.html,v 1.17 2006/11/03 22:31:05 treectrl Exp $ -->
+
+
+
+
+
+
+
+
+
+
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
<title>What's New in TkTreeCtrl</title>
<meta content="Tim Baker" name="author">
</head>
@@ -19,460 +44,1293 @@
<body>
+
+
+
+
+
<h1>What's New in TkTreeCtrl 2.2</h1>
+
+
+
+
+
+<h2>TreeCtrl Configuration Options</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+ <tbody>
+ <tr>
+
+
+
+
+
+
+
+ <th style="background-color: rgb(255, 255, 204); width: 50%;">Deprecated</th>
+
+
+
+
+
+
+
+ <th style="background-color: rgb(204, 255, 255);">What
+to use
+instead</th>
+
+
+
+
+
+
+
+ </tr>
+
+
+
+
+
+
+
+ <tr>
+
+
+
+
+
+
+
+ <td>-defaultstyle</td>
+
+
+
+
+
+
+
+ <td>The -itemstyle option of a column.</td>
+ </tr>
+ </tbody>
+</table>
+
+
+
+
+
+
+
<h2>Column Configuration Options</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">Renamed<br>
+
+
+
+
+
</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">New
name</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-tag</td>
+
+
+
+
+
<td>-tags</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">New</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">Comment</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-lock</td>
+
+
+
+
+
<td>This option allows columns to stick to the left or
right edge
of the window. Locked columns can scroll vertically but not
horizontally. Valid values for this option are <span style="font-weight: bold;">none</span> (the default), <span style="font-weight: bold;">left</span> or <span style="font-weight: bold;">right</span>.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+ <tr>
+ <td>-itemstyle</td>
+ <td>Specifies the name of a style to set in this column for
+newly-created items. This option replaces the treectrl option
+-defaultstyle.</td>
+ </tr>
<tr>
+
+
+
+
+
<td>-uniform</td>
+
+
+
+
+
<td colspan="1" rowspan="2">These two options
operate the same as the grid geometry manager options of the same name.
For example:<br>
+
+
+
+
+
+
+
+
+
+
<pre style="margin-left: 40px;">.t column configure&nbsp;0 -uniform a<br>.t column configure 1 -uniform a</pre>
+
+
+
+
+
will give columns 0 and 1 the same requested width, whichever is the larger of the two columns. And:<br>
+
+
+
+
+
+
+
+
+
+
<pre style="margin-left: 40px;">.t column configure 0 -uniform a -weight 2<br>.t column configure 1 -uniform a</pre>
+
+
+
+
+
will give column 0 twice the maximum of the requested widths of columns 0 and 1. And:<br>
+
+
+
+
+
+
+
+
+
+
<pre style="margin-left: 40px;">.t column configure 0 -expand yes -weight 2<br>.t column configure 1 -expand yes</pre>
+
+
+
+
+
will give column 0 twice the extra space as column 1.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-weight</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Column Command</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">New</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">Comment</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column tag add</td>
+
+
+
+
+
<td colspan="1" rowspan="4">Columns can have
a list of tag names. Previously only a single tag was allowed. The <span style="font-weight: bold;">tail</span> column no
longer has the word "tail" as a tag, but it is still referred to by the
word "tail" in column descriptions. </td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column tag expr</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column tag names</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column tag remove</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Item Configuration Options</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">New</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">Comment</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-tags</td>
- <td>Tags are used to identify groups of items.</td>
+
+
+
+
+
+ <td>
+
+
+
+
+
+Tags are textual labels applied to items to group them. Tags
+do not affect the appearance or behaviour of items. Tags can be used in
+item descriptions to operate on multiple items. More information can be
+found in the <a href="treectrl.html#item_tags">man page</a>.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Item Command</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">Arguments/Result
Changed</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">What
changed</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item count</td>
+
+
+
+
+
<td>New option <span style="font-weight: bold;">-visible</span>
added to return the number of items that are displayed (i.e., those
whose ancestors are all expanded etc).</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item create</td>
+
+
+
+
+
<td>New option <span style="font-weight: bold;">-tags</span>
specifies an initial list of tags for created items.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item id</td>
+
+
+
+
+
<td>Returns a list of item ids if the item description
matches multiple items. For example:<br>
+
+
+
+
+
+
+
+
+
+
<pre>.t item id all</pre>
+
+
+
+
+
will return a list of ids for all items, and:<br>
+
+
+
+
+
+
+
+
+
+
<pre>.t item id "$item children"</pre>
+
+
+
+
+
will return the ids of every child of an item.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">New</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">Comment</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item descendants</td>
+
+
+
+
+
<td>Returns the ids of the children, grandchildren, etc of
an item.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item enabled</td>
+
+
+
+
+
<td>Gets and sets the <span style="font-weight: bold;">enabled</span>
state for items. All items are enabled when first created. Disabled
items cannot be selected, and are ignored by the default key-navigation
and mouse bindings.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item tag add</td>
+
+
+
+
+
<td>Add tags to items. For example:<br>
+
+
+
+
+
+
+
+
+
+
<pre>.t item tag add all {a b c}</pre>
+
+
+
+
+
will add tags "a", "b" and "c" to every item.<br>
+
+
+
+
+
</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item tag expr</td>
+
+
+
+
+
<td>Evaluate a tag expression against items. For example:<br>
+
+
+
+
+
+
+
+
+
+
<pre>.t item tag expr $item a</pre>
+
+
+
+
+
returns 1 if&nbsp;an item has tag "a". Also:<br>
+
+
+
+
+
+
+
+
+
+
<pre>.t item tag expr $item a||b</pre>
+
+
+
+
+
returns 1 if &nbsp;an item has tag "a" or "b".</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item tag names</td>
+
+
+
+
+
<td>Return a list of tag names assigned to items. For
example:<br>
+
+
+
+
+
+
+
+
+
+
<pre>.t item tag names $item</pre>
+
+
+
+
+
returns the tag list for an item, and:<br>
+
+
+
+
+
+
+
+
+
+
<pre>.t item tag names all</pre>
+
+
+
+
+
returns every tag assigned to any item.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item tag remove</td>
+
+
+
+
+
<td>Remove tags from items. For example:<br>
+
+
+
+
+
+
+
+
+
+
<pre>.t item tag remove all {b c}</pre>
+
+
+
+
+
will remove tags "b" and "c" from any items that have them.</td>
- </tr>
-
- </tbody>
-</table>
-<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+ </tr>
+
- <tbody>
+
+
+
+
+
+
+
</tbody>
</table>
+<h2>Text Element</h2>
+The new option <span style="font-weight: bold;">-underline</span> draws an underline under a single character of the displayed text.<br>
+
-<h2>Item Tags</h2>
-Tags are textual labels applied to items to group them. Tags
-do not affect the appearance or behaviour of items. Tags can be used in
-item descriptions to operate on multiple items. More information can be
-found in the <a href="treectrl.html#item_tags">man page</a>.<br>
<h2>Window Element</h2>
+
+
+
+
+
Window elements can now be properly clipped so they don't draw over the
column header, borders, or outside the bounds of the item
columns they occupy. This is accomplished by making the window you want
@@ -481,15 +1339,35 @@ window element to TRUE. So if your program displays a canvas widget in
a window element, you would change this code:<br>
+
+
+
+
+
<pre style="margin-left: 40px;">set canvas [canvas .t.canvas ...]<br>.t item element configure $item $column myElement -window $canvas</pre>
+
+
+
+
+
to this:<br>
+
+
+
+
+
<pre style="margin-left: 40px;">set frame [frame .t.clip -borderwidth 0]<br>set canvas [canvas $frame.canvas ...]<br>.t item element configure $item $column myElement -window $frame -clip yes</pre>
+
+
+
+
+
The <span style="font-weight: bold;">-clip</span>
option tells the window element to manage the geometry of both the <span style="font-weight: bold;">-window</span>
widget (i.e,
@@ -500,217 +1378,451 @@ demos.
<h2>Item Descriptions</h2>
+
+
+
+
+
New keywords were added to allow multiple items to be specified by an <a href="treectrl.html#item_description">item description</a>:<br>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>The keyword <span style="font-weight: bold;">list</span>
specifies a list of other item descriptions:
+
+
+
+
+
<pre>.t item id "list [list $a $b $c]"</pre>
+
+
+
+
+
</li>
+
+
+
+
+
<li>The keyword <span style="font-weight: bold;">range</span>
operates like the <span style="font-weight: bold;">item
range</span> command:
+
+
+
+
+
<pre>.t item id "range $first $last"</pre>
- </li>
- <li>The keyword <span style="font-weight: bold;">tag</span>
-matches any items that meet a tag expression:
-
- <pre>.t item id "tag $tagExpr"</pre>
+
</li>
+
</ul>
+
New modifiers were added to match multiple items:
<ul>
+
+
+
+
+
<li>The modifier <span style="font-weight: bold;">ancestors</span>
operates like the <span style="font-weight: bold;">item
ancestors</span> command:
+
+
+
+
+
<pre>.t item id "$item ancestors"</pre>
+
+
+
+
+
</li>
+
+
+
+
+
<li>The modifier <span style="font-weight: bold;">children</span>
operates like the <span style="font-weight: bold;">item
children</span> command:
+
+
+
+
+
<pre>.t item id "$item children"</pre>
+
+
+
+
+
</li>
+
+
+
+
+
<li>The modifier <span style="font-weight: bold;">descendants</span>
operates like the <span style="font-weight: bold;">item
descendants</span> command:
+
+
+
+
+
<pre>.t item id "$item descendants"</pre>
+
+
+
+
+
</li>
+
+
+
+
+
</ul>
+
+
+
+
+
New qualifiers were added to refine which items are matched:<br>
+
+
+
+
+
+<ul>
+
+
+
+
+
+
+
+ <li>The qualifier <span style="font-weight: bold;">depth</span> matches items at a given depth in the heirarchy:</li>
+
+
+
+
+</ul>
+
+
+
+
+<div style="margin-left: 40px;">
+<pre>.t item id "all depth 2" ; # find all items that are children of the root's children<br>.t item id "depth 2" ; # ditto</pre>
+
+
+
+
+</div>
+
+
+
+
<ul>
+
+
<li>The qualifier <span style="font-weight: bold;">!visible</span>
matches items that are not displayed:
+
+
+
+
+
<pre>.t item id "first !visible" ; # find the first item that is not displayed</pre>
+
+
+
+
+
</li>
+
+
+
+
+
<li>The qualifier <span style="font-weight: bold;">state</span>
matches items that have certain states set (or not set if '!' is used):
+
+
+
+
+
<pre>.t item id "first state&nbsp;{selected !open}" ; # find the first item that is selected and collapsed</pre>
+
+
+
+
+
</li>
+
+
+
+
+
<li>The qualifier <span style="font-weight: bold;">tag</span>
matches items that meet a tag expression:
- <pre>.t item id "$item children tag $tagExpr" ; # find children of $item that have certain tags</pre>
+
+
+
+
+
+ <pre>.t item id "$item children tag {a &amp;&amp; !b}" ; # find children of $item that have tag "a" but not tag "b"</pre>
- </li>
-</ul>
-Also, the keyword <span style="font-weight: bold;">all</span>
-may now be followed by a list of qualifiers: For example:<br>
+ </li>
-<pre style="margin-left: 40px;">.t item id "all !visible state myState" ; # find every item that is not displayed with user-defined state "myState"</pre>
-The following commands can now operate on multiple items in a single
-call:<br>
-<ul>
- <li>item configure</li>
+</ul>
- <li> item element configure</li>
+<br>
- <li>item id</li>
- <li> item image</li>
+The keyword <span style="font-weight: bold;">all</span>
+may now be followed by a list of qualifiers. For example:<br>
- <li> item style map</li>
- <li> item style set</li>
- <li> item state forcolumn</li>
+<pre style="margin-left: 40px;">.t item id "all !visible state myState" ; # find every item that is not displayed with user-defined state "myState"</pre>
- <li> item state set</li>
- <li> item remove</li>
+A list of qualifiers may be used as the first part of an item
+description. This gives the same result as&nbsp; "all" followed by the
+qualifiers. For example:<br>
- <li> item span</li>
+<div style="margin-left: 40px;">
+<pre>.t item id "!visible state myState" ; # same as the previous example</pre>
- <li> item text</li>
-</ul>
+</div>
+
<h2>Column Descriptions</h2>
-New keywords <span style="font-weight: bold;">list</span>,
-<span style="font-weight: bold;">range</span> and <span style="font-weight: bold;">tag</span> can be used to
+
+
+
+
+
+New keywords <span style="font-weight: bold;">list</span> and
+<span style="font-weight: bold;">range</span><span style="font-weight: bold;"></span> can be used to
match multiple columns.<br>
+
New qualifiers <span style="font-weight: bold;">state</span>,
-<span style="font-weight: bold;">tag</span> and <span style="font-weight: bold;">!visible</span> can be used
-to restrict which columns are specified.
+<span style="font-weight: bold;">tag</span>, <span style="font-weight: bold;">!tail</span> and <span style="font-weight: bold;">!visible</span> can be used
+to restrict which columns are specified.<br>
+
+
+
+The keyword <span style="font-weight: bold;">all</span> may be followed by a list of qualifiers.<br>
+
+
+
+A list of qualifiers may used as the first part of a column
+description. This gives the same result as&nbsp; "all" followed by the
+qualifiers.
+<h2>Multi-item and multi-column commands</h2>
+
+
+
+Many commands can now operate on multiple items and/or columns by using
+the improved item descriptions and column descriptions mentioned above.
+For example:
+<div style="margin-left: 40px;">
+<pre>.t column configure "range 1 10" -tags {a b c}<br>.t column delete "tag a"<br>.t column id "tag {a || b}"<br>.t item configure "depth 1" -button yes<br>.t item element configure "root children" all elem1 -text "Hello"<br>.t item id "visible"<br>.t item image all all image1<br>.t item style map "tag {a &amp;&amp; !b}" "tag c" style2 {style1.elem1 style2.elem2}<br>.t item style set all all style1<br>.t item state forcolumn all all state1<br>.t item state set "tag current" ~mouseover<br>.t item remove "state selected"<br>.t item span "range 1 10" "range 10 last" 2<br>.t item text "root children" all "Hello"</pre>
+
+
+
+</div>
+
+
+
<h2>Demo Changes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>New demo "My Computer". Demonstrates disabled items used as
headers.</li>
+
+
+
+
+
<li>New demo "Column Locking". Demonstrates columns that do not
scroll horizontally.</li>
+
+
+
+
+
<li>The "Big List" and "Firefox Privacy" demos were changed to
use the new <span style="font-weight: bold;">-clip</span>
option of window elements.</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<h2>Bug Fixes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li><span style="font-weight: bold;">item create</span>:
Fixed bug where <span style="font-weight: bold;">-nextsibling</span>
and <span style="font-weight: bold;">-prevsibling</span>
options could specify an orphan item.</li>
+
+
+
+
+
<li><span style="font-weight: bold;">item delete</span>:
Stopped items possibly being double-deleted by nested calls through <span style="font-weight: bold;">&lt;Selection&gt;</span>
and <span style="font-weight: bold;">&lt;ItemDelete&gt;</span>
binding scripts.</li>
+
+
+
+
+
<li><span style="font-weight: bold;">item expand</span>,&nbsp;<span style="font-weight: bold;">item collapse</span>,&nbsp;<span style="font-weight: bold;">item toggle</span>: Only
operate on items which exist when the command is called, not any that
might get created by <span style="font-weight: bold;">&lt;Expand&gt;</span>
@@ -718,105 +1830,259 @@ or <span style="font-weight: bold;">&lt;Collapse&gt;</span>
binding scripts.</li>
+ <li>Fixed a crash and a redisplay problem when a master element was
+configured with a -textvariable and the associated variable changed.</li>
+
+
+
+
+
+
+
<li>When a style with window elements spanned more than one
column, the window might be improperly sized during display updates.</li>
+
+
+
+
+
<li>Windows in window elements would not always be unmapped if
-columns or items were hidden, or the span of an item-column changed.</li>
+columns or items were hidden, or if the span of an item-column changed.</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<hr style="width: 100%; height: 2px;">
<h1>What's New in TkTreeCtrl 2.1.1</h1>
+
+
+
+
+
<h2>Column Command</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">Arguments/Result
Changed</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">What
changed</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column delete<br>
+
+
+
+
+
</td>
+
+
+
+
+
<td>Added an optional second argument allowing a range of
columns to be deleted.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Bug Fixes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>The <span style="font-weight: bold;">item sort</span>
command
will be much faster in many cases. There was a silly error in the
pivot-finding code of quicksort which resulted in the slow-down.</li>
+
+
+
+
+
<li>A&nbsp;column header will be redisplayed if an image in
the header is altered.</li>
+
+
+
+
+
<li>Fixed bus errors on some Unix systems due to alignment
problems.</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<h2>Other Changes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>The Tk caret is now positioned over the active item when it
changes. The Tk caret is used for the Magnifier accessibility
application and IME on Windows, as well as XIM under Unix.</li>
+
+
+
+
+
<li>Improved the appearance of the column headers under OSX.</li>
+
+
+
+
+
<li>Added &lt;MouseWheel&gt; support to OSX.</li>
+
+
+
+
+
<li>Changing the -visible option of an item could be slow if
any
items were selected. That is because non-visible items may not be part
@@ -825,388 +2091,993 @@ caused by modifying the -visible option of an item do not occur until
the next display update.</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<h2>Demo Changes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>New demo "Column Spanning". Demonstrates a 100-column list
where styles span from 1 to 20 columns each.</li>
+
+
+
+
+
<li>The&nbsp;<span style="font-weight: bold;">loupe</span>
command (which performs screen capture to an image) is now implemented
on Windows and OSX thanks to Jeff Hobbs.</li>
+
+
+
+
+
<li>The screen-magnifier image now resizes with the "loupe"
window.</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<hr style="width: 100%; height: 2px;">
<h1>What's New in TkTreeCtrl 2.1</h1>
+
+
+
+
+
This version should be backwards compatible with 2.0, except for a few
obscure changes.<br>
+
+
+
+
+
<h2>TreeCtrl Configuration Options</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">New</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">Comment</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-itemwidth</td>
+
+
+
+
+
<td><br>
+
+
+
+
+
</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-itemwidthequal</td>
+
+
+
+
+
<td>Deprecates the column -widthhack option.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-itemwidthmultiple</td>
+
+
+
+
+
<td>Deprecates the column -stepwidth option.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Column Configuration Options</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">Deprecated</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">What
to use
instead</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-stepwidth</td>
+
+
+
+
+
<td>treectrl's -itemwidthmultiple option</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-widthhack</td>
+
+
+
+
+
<td>treectrl's -itemwidthequal option</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Element Command</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">New</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">Comment</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>element perstate</td>
+
+
+
+
+
<td>Like [item element perstate].</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Item Configuration Options</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">New</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">Comment</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-height</td>
+
+
+
+
+
<td>Overrides the treectrl's -itemheight option</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Item Command</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204);">Deprecated</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">What
to use
instead</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item element actual</td>
+
+
+
+
+
<td>item element perstate</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item complex</td>
+
+
+
+
+
<td>item element configure</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204);">Behaviour
Changed</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">What
changed</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item bbox</td>
+
+
+
+
+
<td>No longer returns an error if no style had been
assigned to the column.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item state forcolumn</td>
+
+
+
+
+
<td>No longer returns an error if no style had been
assigned to the column.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item style set</td>
+
+
+
+
+
<td>Does nothing when replacing a style with the same
style.
Previously the old style was freed before assigning the new style,
losing the element config info if the old and new styles were the same.<br>
+
+
+
+
+
<span style="color: rgb(255, 0, 0);">Potential
incompatibility</span></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">Arguments/Result
Changed</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">What
changed</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item create</td>
+
+
+
+
+
<td>Added options: -count -height, -nextsibling, -open,
-parent,
-prevsibling, and -returnid. Multiple items may be created with one
call using the -count option.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item element configure</td>
+
+
+
+
+
<td>Multiple elements in multiple columns may be configured
with
a single call. Use '+' to separate elements, and ',' to separate
columns. See the docs.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item style set</td>
+
+
+
+
+
<td>When no column is specified, returns a list of one
style name
per column. Previously, the list would have less values than the number
@@ -1214,56 +3085,141 @@ of columns if no styles had ever been assigned to the rightmost
column(s).<br>
+
+
+
+
+
<span style="color: rgb(255, 0, 0);">Potential
incompatibility</span></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item text</td>
+
+
+
+
+
<td>When no column is specified, returns a list of one
string per column.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">New</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">Comment</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item image</td>
+
+
+
+
+
<td>Partner to the [item text] command.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item element perstate</td>
+
+
+
+
+
<td>Not really new, just renamed from [item element actual]
to
better describe what it does. Accepts a new optional argument which
@@ -1271,156 +3227,401 @@ specifies the state to use when determining the value of the per-state
option.<br>
+
+
+
+
+
<br>
+
+
+
+
+
The following options no longer return a default value if the per-state
option itself does not have a value specified:<br>
+
+
+
+
+
+
+
+
+
+
<ul>
+
+
+
+
+
<li>bitmap -foreground, -background</li>
+
+
+
+
+
<li>border -relief</li>
+
+
+
+
+
<li>text -fill, -font</li>
+
+
+
+
+
+
+
+
+
+
</ul>
+
+
+
+
+
<span style="color: rgb(255, 0, 0);">Potential
incompatibility</span></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item span</td>
+
+
+
+
+
<td>A style may now be displayed over multiple adjacent
columns.<br>
+
+
+
+
+
</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2><span style="font-weight: bold;"></span>Notify
Command</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">New</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">Comment</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>notify unbind<br>
+
+
+
+
+
</td>
+
+
+
+
+
<td>Let's you unbind all scripts from an object with one
call.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Style Layout Changes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>Column justification will now affect the position of
elements in 2 situations which previously had no effect (<span style="color: rgb(255, 0, 0);">Potential incompatibility</span>):</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<ol style="margin-left: 40px;">
+
+
+
+
+
<li>If a -detach element had a fixed width larger than the
other elements.</li>
+
+
+
+
+
<li>If an element had -iexpand x specified as well as
-maxwidth, leaving some space available.</li>
+
+
+
+
+
</ol>
+
+
+
+
+
<h2>Element Changes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>Bitmap, image and text elements are drawn clipped if given
less space than they need.</li>
+
+
+
+
+
<li>Fixed line wrapping of text elements. It did not work for
single lines of text at all (<span style="color: rgb(255, 0, 0);">Potential
incompatibility</span>).</li>
+
+
+
+
+
<li>The text -wrap option can now be <span style="font-weight: bold;">none</span> to disable line
wrapping.</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<h2>Event Changes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>The new static event <span style="font-weight: bold;">&lt;ItemVisibility&gt;</span>
is generated when items become visible on screen and when items are no
longer visible on screen.
@@ -1430,144 +3631,354 @@ SUBSTITUTIONS section in the help
file, and the new demo "Big List".</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<h2>Other Changes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>On WinXP, the column header sort arrow is drawn like
Explorer draws it if <span style="font-weight: bold;">-usetheme</span>
is true.</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<h2>Demo Changes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>New demo "Big List". Demonstrates the new <span style="font-weight: bold;">&lt;ItemVisibility&gt;</span>
event, using &lt;Expand-before&gt; to add items on demand, and
column spanning.</li>
+
+
+
+
+
<li>The context menu has a <span style="font-weight: bold;">Span</span>
submenu that lets you manipulate column spanning in items. See
the&nbsp;<span style="font-weight: bold;">item span</span>
command in the help file.</li>
+
+
+
+
+
<li>Under WinXP, the "Explorer" demos will use the new <span style="font-weight: bold;">shellicon</span>
extension if available. This extension allows a treectrl to display
file/folder icons using the Win32 Shell API. It may work on other
versions of Windows but it hasn't been tested.</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<hr style="width: 100%; height: 2px;">
<h1>What's New in TkTreeCtrl 2.0</h1>
+
+
+
+
+
<h2>TreeCtrl Configuration Options</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">Replaced</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">What
to use
instead</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-openbuttonimage</td>
+
+
+
+
+
<td>-buttonimage</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-closedbuttonimage</td>
+
+
+
+
+
<td>-buttonimage</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-openbuttonbitmap</td>
+
+
+
+
+
<td>-buttonbitmap</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-closedbuttonbitmap</td>
+
+
+
+
+
<td>-buttonbitmap</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">Usage
Changed</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">How
it changed</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-backgroundmode</td>
+
+
+
+
+
<td>The values "index" and "visindex" are deprecated. The
value
"order" should be used instead of "index", and
@@ -1576,15 +3987,35 @@ agreement with the new "item order" command which replaces the "item
index" command.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-treecolumn</td>
+
+
+
+
+
<td>This used to be any integer value which may or may not
have
corresponded to an actual column. Now the value must be a valid column
@@ -1592,873 +4023,2318 @@ description, or an empty string to indicate no column should display
buttons/lines.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204);">New</th>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-backgroundimage</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-columnprefix</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-columnresizemode</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-itemprefix</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-minitemheight</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-usetheme</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>TreeCtrl Commands</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="width: 50%; background-color: rgb(255, 255, 204);">Deprecated</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">What
to use
instead</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>compare</td>
+
+
+
+
+
<td>item compare</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>index</td>
+
+
+
+
+
<td>item id</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>numcolumns</td>
+
+
+
+
+
<td>column count</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>numitems</td>
+
+
+
+
+
<td>item count</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>range</td>
+
+
+
+
+
<td>item range</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Column Configuration Options</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">Removed</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">What
to use
instead</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-relief<br>
+
+
+
+
+
</td>
+
+
+
+
+
<td>-state</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-sunken</td>
+
+
+
+
+
<td>-state</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204);">Renamed<br>
+
+
+
+
+
</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">New
name</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-arrowpad</td>
+
+
+
+
+
<td>-arrowpadx</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204);">Usage
Changed</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">How
it changed</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-background</td>
+
+
+
+
+
<td>This is now a per-state option. See COLUMNS in the help
file
for valid state names.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204);">New<br>
+
+
+
+
+
</th>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-arrowbitmap<br>
+
+
+
+
+
</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-arrowimage</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-arrowpady</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-maxwidth</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-resize</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-state</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-textlines</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Column Command</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204);">Deprecated</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">What
to use
instead</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column index</td>
+
+
+
+
+
<td>column id</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">Arguments/Result
Changed</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">What
changed</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column configure<br>
+
+
+
+
+
</td>
+
+
+
+
+
<td>A column description of "all" is allowed if at least
one
option-value pair is given.<br>
+
+
+
+
+
</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column create</td>
+
+
+
+
+
<td>The result is a unique identifier. Previously the
result was
an
index in the list of columns.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column delete</td>
+
+
+
+
+
<td>A column description of "all" is allowed.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204);">New</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">Comment</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column compare</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column count</td>
+
+
+
+
+
<td>replaces "numcolumns"</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column dragconfigure</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column dragcget</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column id</td>
+
+
+
+
+
<td>replaces "column index"</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column list</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>column order</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Item Command</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204);">Removed</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">What
to use
instead</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item index</td>
+
+
+
+
+
<td>item order</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">New</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">Comment</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item compare</td>
+
+
+
+
+
<td>replaces "compare"</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item count</td>
+
+
+
+
+
<td>replaces "numitems"</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item id</td>
+
+
+
+
+
<td>replaces "index"</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item order</td>
+
+
+
+
+
<td>replaces "item index"</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>item range</td>
+
+
+
+
+
<td>replaces "range"</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Notify Command</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204); width: 50%;">Arguments/Result
Changed</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">What
changed</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>notify generate<br>
+
+
+
+
+
</td>
+
+
+
+
+
<td>Added optional <span style="font-style: italic;">percentsCommand</span>
argument</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>notify install</td>
+
+
+
+
+
<td>Old syntax (supported but deprecated):<br>
+
+
+
+
+
+
+
+
+
+
<pre style="margin-left: 40px;"><span style="font-weight: bold;">notify install event</span> <span style="font-style: italic;">eventName</span></pre>
+
+
+
+
+
+
+
+
+
+
<pre style="margin-left: 40px;"><span style="font-weight: bold;">notify install detail</span> <span style="font-style: italic;">eventName</span> <span style="font-style: italic;">detail</span></pre>
+
+
+
+
+
New syntax:<br>
+
+
+
+
+
+
+
+
+
+
<pre style="margin-left: 40px;"><span style="font-weight: bold;">notify install</span> &lt;<span style="font-style: italic;">eventName</span>&gt;</pre>
+
+
+
+
+
+
+
+
+
+
<pre style="margin-left: 40px;"><span style="font-weight: bold;">notify install</span> &lt;<span style="font-style: italic;">eventName</span>-<span style="font-style: italic;">detail</span>&gt;</pre>
+
+
+
+
+
</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>notify linkage</td>
+
+
+
+
+
<td>Old syntax (supported but deprecated):<br>
+
+
+
+
+
+
+
+
+
+
<div style="margin-left: 40px;">
+
+
+
+
+
<pre><span style="font-weight: bold;">notify linkage</span> <span style="font-style: italic;">eventName</span></pre>
+
+
+
+
+
+
+
+
+
+
<pre><span style="font-weight: bold;">notify linkage</span> <span style="font-style: italic;">eventName</span> <span style="font-style: italic;">detail</span></pre>
+
+
+
+
+
</div>
+
+
+
+
+
New syntax:<br>
+
+
+
+
+
+
+
+
+
+
<div style="margin-left: 40px;">
+
+
+
+
+
<pre><span style="font-weight: bold;">notify linkage</span> &lt;<span style="font-style: italic;">eventName</span>&gt;</pre>
+
+
+
+
+
+
+
+
+
+
<pre><span style="font-weight: bold;">notify linkage</span> &lt;<span style="font-style: italic;">eventName</span>-<span style="font-style: italic;">detail</span>&gt;</pre>
+
+
+
+
+
</div>
+
+
+
+
+
</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>notify uninstall</td>
+
+
+
+
+
<td>see <span style="font-weight: bold;">notify
install</span>
above</td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Style Layout Options</h2>
+
+
+
+
+
<table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
+
+
+
+
+
<tbody>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="background-color: rgb(255, 255, 204);">Usage
Changed</th>
+
+
+
+
+
<th style="background-color: rgb(204, 255, 255);">How
it changed</th>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-iexpand</td>
+
+
+
+
+
<td>Two new flags "x' and "y" are allowed. Previously, only
the
-ipadx and -ipady padding could be expanded by this option. The new xy
@@ -2466,155 +6342,410 @@ flags expand the display area of the element, not the padding. To
update your code, you will probably want to change this:<br>
+
+
+
+
+
+
+
+
+
+
<div style="margin-left: 40px;">
+
+
+
+
+
<pre>$T style layout $S $E -iexpand we</pre>
+
+
+
+
+
</div>
+
+
+
+
+
to this:<br>
+
+
+
+
+
+
+
+
+
+
<div style="margin-left: 40px;">
+
+
+
+
+
<pre>$T style layout $S $E -iexpand x<br></pre>
+
+
+
+
+
</div>
+
+
+
+
+
Keep in mind that -union elements are not affected by -iexpand xy,
since the size of a -union element is determined by the elements it
surrounds.</td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<th style="width: 50%; background-color: rgb(255, 255, 204);">New<br>
+
+
+
+
+
</th>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-height</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-maxheight</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-maxwidth</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-minheight</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-minwidth</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-sticky</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
<tr>
+
+
+
+
+
<td>-width</td>
+
+
+
+
+
<td></td>
+
+
+
+
+
</tr>
+
+
+
+
+
+
+
+
+
+
</tbody>
</table>
+
+
+
+
+
<h2>Element Changes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>A new element type&nbsp;<span style="font-weight: bold;">window</span>
was added.
See the new demo "Firefox Privacy" and the ELEMENTS section in the help
file.</li>
+
+
+
+
+
<li>All element types have a new
per-state boolean option called <span style="font-weight: bold;">-draw</span>.</li>
+
+
+
+
+
<li>The <span style="font-weight: bold;">text</span>
element type
has a new option called <span style="font-weight: bold;">-textvariable</span>.
@@ -2622,15 +6753,35 @@ See the new demo
"Textvariable" and the ELEMENTS section in the help file.</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<h2>Event Changes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>2 new %-substitution characters <span style="font-weight: bold;">%P</span>
and <span style="font-weight: bold;">%?</span> are
allowed in binding
@@ -2638,71 +6789,156 @@ scripts. See the EVENTS AND SCRIPT SUBSTITUTIONS section in the help
file.</li>
+
+
+
+
+
<li>The new static event <span style="font-weight: bold;">&lt;ItemDelete&gt;</span>
is generated when items are deleted. See the EVENTS AND SCRIPT
SUBSTITUTIONS section in the help file.</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<h2>Library Script Changes</h2>
+
+
+
+
+
<h3 style="margin-left: 40px;">filelist-bindings.tcl:</h3>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>The Priv(edit) variable, which is used to specify which
text
elements may be edited, now has the same format as Priv(sensitive).
Previously only elements in the first column could be edited.</li>
+
+
+
+
+
<li>3 new commands in the TreeCtrl namespace should be used to
access
the Priv(dragimage), Priv(edit) and Priv(sensitive) variables. The
commands are SetDragImage, SetEditable and SetSensitive.</li>
+
+
+
+
+
<li>Two new dynamic events <span style="font-weight: bold;">&lt;Edit-begin&gt;</span>
and <span style="font-weight: bold;">&lt;Edit-end&gt;</span>
are
generated when editing a file name.</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<h3 style="margin-left: 40px;">treectrl.tcl:</h3>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>On OSX/Aqua, the Command key is used to perform
discontinuous
selection. Previously the Control key was used but Command is specified
by Apple's user-interface guidelines.</li>
+
+
+
+
+
</ul>
+
+
+
+
+
<h2>Other Changes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>On WinXP, the column headers and open/close buttons are
drawn
using the system theme if <span style="font-weight: bold;">-usetheme</span>
is true. The sort arrow is drawn the old-fashioned way.</li>
+
+
+
+
+
<li>On OSX/Aqua,&nbsp; the column headers and open/close
buttons are
drawn
@@ -2713,32 +6949,67 @@ and <span style="font-weight: bold;">-arrowgravity</span>
options.</li>
+
+
+
+
+
<li>Columns can be moved by drag-and-drop. See <span style="font-weight: bold;">column dragconfigure</span>
in the help
file.</li>
+
+
+
+
+
<li>Columns can be specified in new ways. See the COLUMN
DESCRIPTION
section in the help file.</li>
+
+
+
+
+
<li>Added new section DYNAMIC EVENTS to the help file.</li>
+
+
+
+
+
<li>Added new section PER-STATE OPTIONS to the help file.</li>
+
+
+
+
+
<li>The new style layout option <span style="font-weight: bold;">-indent</span>
allows elements to be displayed in the button/line area. See the <span style="font-weight: bold;">style layout</span> command
in the help
file and the new demo "Firefox Privacy".</li>
+
+
+
+
+
<li>The new item description <span style="font-weight: bold;">end</span>
is equivalent to <span style="font-weight: bold;">last</span>.</li>
+
+
+
+
+
<li><span style="color: rgb(255, 0, 0);">If you
have version 1.1
installed, replace the old pkgIndex.tcl file with the one from this
@@ -2748,42 +7019,92 @@ set the TREECTRL_LIBRARY variable which will override where the library
scripts are found.</span></span></li>
+
+
+
+
+
</ul>
+
+
+
+
+
<h2>Demo Changes</h2>
+
+
+
+
+
<ul>
+
+
+
+
+
<li>New demo "Firefox Privacy". Demonstrates the new <span style="font-weight: bold;">window</span> element type
and <span style="font-weight: bold;">-indent</span>
style layout option.</li>
+
+
+
+
+
<li>New demo "Textvariable". Demonstrates the new <span style="font-weight: bold;">-textvariable</span> option
of the <span style="font-weight: bold;">text</span>
element.</li>
+
+
+
+
+
<li>Added a new Event Browser window to display events
generated by
the main treectrl widget.</li>
+
+
+
+
+
<li>The context menu can be popped up in all the demo lists. A
&lt;Control-ButtonPress-1&gt; binding for this was added under
OSX/Aqua.</li>
+
+
+
+
+
<li>In the "Explorer" demos, the file name is hidden while
editing
the file name.</li>
+
+
+
+
+
</ul>
+
+
+
+
+
</body>
</html>
diff --git a/doc/treectrl.html b/doc/treectrl.html
index ea0a3d8..88b53c4 100644
--- a/doc/treectrl.html
+++ b/doc/treectrl.html
@@ -1,10 +1,10 @@
-<! -- Copyright (c) 2002-2003 Christian Krone. -- -- See the file &quot;license.terms&quot; for information on usage and redistribution -- of this file, and for a DISCLAIMER OF ALL WARRANTIES. -- -- $Id: treectrl.html,v 1.39 2006/10/31 23:30:13 treectrl Exp $
+<! -- Copyright (c) 2002-2003 Christian Krone. -- -- See the file &quot;license.terms&quot; for information on usage and redistribution -- of this file, and for a DISCLAIMER OF ALL WARRANTIES. -- -- $Id: treectrl.html,v 1.40 2006/11/03 22:31:04 treectrl Exp $
--><html><head>
<title>treectrl - Tk Commands </title>
</head>
<! -- Generated from file 'doc/treectrl.man' by tcllib/doctools with format 'html'
-->
-<! -- CVS: $Id: treectrl.html,v 1.39 2006/10/31 23:30:13 treectrl Exp $ treectrl.n
+<! -- CVS: $Id: treectrl.html,v 1.40 2006/11/03 22:31:04 treectrl Exp $ treectrl.n
-->
<body>
@@ -397,6 +397,7 @@ the user is dragging the right edge of the column.
Database Name: <strong>defaultStyle</strong><br>
Database Class: <strong>DefaultStyle</strong><br>
<dd>
+This option is deprecated; use the column option <strong>-itemstyle</strong> instead.
Specifies a list of styles, one per column, to apply to each item created by
the <b class='cmd'>item create</b> command. The number of styles in the list can be
different from the number of tree columns.
@@ -3007,6 +3008,11 @@ alternating background colors for items in this column.
See also the <strong>-backgroundmode</strong> widget option for more on this.
<br><br>
+<dt><strong><strong>-itemstyle</strong></strong> <i class='arg'>style</i><dd>
+<i class='arg'>Style</i> is the name of a style that should be set in this column
+for newly-created items.
+
+<br><br>
<dt><strong><strong>-justify</strong></strong> <i class='arg'>justification</i><dd>
This option determines how the items (and the title) line up with each other.
Must be one of <strong>left</strong> (the default), <strong>center</strong>, or <strong>right</strong>.
diff --git a/doc/treectrl.man b/doc/treectrl.man
index 854c2e5..77fcbc7 100644
--- a/doc/treectrl.man
+++ b/doc/treectrl.man
@@ -3,7 +3,7 @@
See the file "license.terms" for information on usage and redistribution
of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- $Id: treectrl.man,v 1.40 2006/10/31 23:30:13 treectrl Exp $}
+ $Id: treectrl.man,v 1.41 2006/11/03 22:31:05 treectrl Exp $}
][manpage_begin treectrl n 2.1.1]
[moddesc {Tk Commands}]
[titledesc {Create and manipulate hierarchical multicolumn widgets}]
@@ -145,6 +145,7 @@ be after resizing. For [const realtime], the column's size is changed while
the user is dragging the right edge of the column.
[tkoption_def -defaultstyle defaultStyle DefaultStyle]
+This option is deprecated; use the column option [option -itemstyle] instead.
Specifies a list of styles, one per column, to apply to each item created by
the [cmd "item create"] command. The number of styles in the list can be
different from the number of tree columns.
@@ -2310,6 +2311,10 @@ Specifies a list of zero or more colors, which are used as
alternating background colors for items in this column.
See also the [option -backgroundmode] widget option for more on this.
+[opt_def [option -itemstyle] [arg style]]
+[arg Style] is the name of a style that should be set in this column
+for newly-created items.
+
[opt_def [option -justify] [arg justification]]
This option determines how the items (and the title) line up with each other.
Must be one of [const left] (the default), [const center], or [const right].
diff --git a/doc/treectrl.n b/doc/treectrl.n
index e7a3fe3..ae293dd 100644
--- a/doc/treectrl.n
+++ b/doc/treectrl.n
@@ -6,7 +6,7 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" $Id: treectrl.n,v 1.56 2006/10/31 23:30:13 treectrl Exp $
+'\" $Id: treectrl.n,v 1.57 2006/11/03 22:31:05 treectrl Exp $
.so man.macros
.TH "treectrl" n 2.1.1 treectrl "Tk Commands"
.BS
@@ -569,6 +569,7 @@ Database Class: \fBDefaultStyle\fR
.fi
.IP
+This option is deprecated; use the column option \fB-itemstyle\fR instead.
Specifies a list of styles, one per column, to apply to each item created by
the \fBitem create\fR command. The number of styles in the list can be
different from the number of tree columns.
@@ -2850,6 +2851,10 @@ Specifies a list of zero or more colors, which are used as
alternating background colors for items in this column.
See also the \fB-backgroundmode\fR widget option for more on this.
.TP
+\fB\fB-itemstyle\fR\fR \fIstyle\fR
+\fIStyle\fR is the name of a style that should be set in this column
+for newly-created items.
+.TP
\fB\fB-justify\fR\fR \fIjustification\fR
This option determines how the items (and the title) line up with each other.
Must be one of \fBleft\fR (the default), \fBcenter\fR, or \fBright\fR.
diff --git a/generic/tkTreeColumn.c b/generic/tkTreeColumn.c
index c421f24..eca2ba7 100644
--- a/generic/tkTreeColumn.c
+++ b/generic/tkTreeColumn.c
@@ -7,7 +7,7 @@
* Copyright (c) 2002-2003 Christian Krone
* Copyright (c) 2003 ActiveState Corporation
*
- * RCS: @(#) $Id: tkTreeColumn.c,v 1.55 2006/11/03 21:24:31 treectrl Exp $
+ * RCS: @(#) $Id: tkTreeColumn.c,v 1.56 2006/11/03 22:30:34 treectrl Exp $
*/
#include "tkTreeCtrl.h"
@@ -57,6 +57,7 @@ struct Column
PerStateInfo arrowImage; /* -arrowimage */
Pixmap bitmap; /* -bitmap */
Tcl_Obj *itemBgObj; /* -itembackground */
+ TreeStyle itemStyle; /* -itemstyle */
int button; /* -button */
Tcl_Obj *textPadXObj; /* -textpadx */
int *textPadX; /* -textpadx */
@@ -342,6 +343,9 @@ static Tk_OptionSpec columnSpecs[] = {
{TK_OPTION_STRING, "-itembackground", (char *) NULL, (char *) NULL,
(char *) NULL, Tk_Offset(Column, itemBgObj), -1,
TK_OPTION_NULL_OK, (ClientData) NULL, COLU_CONF_ITEMBG},
+ {TK_OPTION_CUSTOM, "-itemstyle", (char *) NULL, (char *) NULL,
+ (char *) NULL, -1, Tk_Offset(Column, itemStyle),
+ TK_OPTION_NULL_OK, (ClientData) &styleCO, 0},
{TK_OPTION_JUSTIFY, "-justify", (char *) NULL, (char *) NULL,
"left", -1, Tk_Offset(Column, justify),
0, (ClientData) NULL, COLU_CONF_DISPLAY | COLU_CONF_JUSTIFY},
@@ -1870,6 +1874,7 @@ Column_Move(
hPtr = Tcl_NextHashEntry(&search);
}
+#ifdef DEPRECATED
/* Re-order -defaultstyle */
numStyles = tree->defaultStyle.numStyles;
if ((numStyles > 0) && ((before->index < numStyles) ||
@@ -1931,6 +1936,7 @@ Column_Move(
tree->defaultStyle.numStyles = numStyles;
}
}
+#endif /* DEPRECATED */
/* Unlink. */
prev = move->prev;
@@ -2068,11 +2074,17 @@ Column_Config(
saved.itemBgCount = column->itemBgCount;
}
- if ((column == (Column *) tree->columnTail) &&
- (column->lock != COLUMN_LOCK_NONE)) {
- FormatResult(tree->interp,
- "can't change the -lock option of the tail column");
- continue;
+ if (column == (Column *) tree->columnTail) {
+ if (column->itemStyle != NULL) {
+ FormatResult(tree->interp,
+ "can't change the -itemstyle option of the tail column");
+ continue;
+ }
+ if (column->lock != COLUMN_LOCK_NONE) {
+ FormatResult(tree->interp,
+ "can't change the -lock option of the tail column");
+ continue;
+ }
}
/*
@@ -3369,6 +3381,59 @@ TreeColumn_BackgroundGC(
/*
*----------------------------------------------------------------------
*
+ * TreeColumn_ItemStyle --
+ *
+ * Return the value of the -itemstyle config option for a column.
+ *
+ * Results:
+ * TreeStyle or NULL.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+TreeStyle
+TreeColumn_ItemStyle(
+ TreeColumn column_ /* Column token. */
+ )
+{
+ return ((Column *) column_)->itemStyle;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TreeColumn_StyleDeleted --
+ *
+ * Called when a master style is deleted.
+ *
+ * Results:
+ * Clear the column's -itemstyle option if it is the style being
+ * deleted.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+void
+TreeColumn_StyleDeleted(
+ TreeColumn column_, /* Column token. */
+ TreeStyle style /* Style that was deleted. */
+ )
+{
+ Column *column = (Column *) column_;
+
+ if (column->itemStyle == style)
+ column->itemStyle = NULL;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
* TreeColumn_Visible --
*
* Return the value of the -visible config option for a column.
diff --git a/generic/tkTreeCtrl.c b/generic/tkTreeCtrl.c
index 7de1cea..fe41840 100644
--- a/generic/tkTreeCtrl.c
+++ b/generic/tkTreeCtrl.c
@@ -7,7 +7,7 @@
* Copyright (c) 2002-2003 Christian Krone
* Copyright (c) 2003-2005 ActiveState, a division of Sophos
*
- * RCS: @(#) $Id: tkTreeCtrl.c,v 1.79 2006/11/03 19:56:15 treectrl Exp $
+ * RCS: @(#) $Id: tkTreeCtrl.c,v 1.80 2006/11/03 22:30:34 treectrl Exp $
*/
#include "tkTreeCtrl.h"
@@ -118,9 +118,11 @@ static Tk_OptionSpec optionSpecs[] = {
{TK_OPTION_CURSOR, "-cursor", "cursor", "Cursor",
(char *) NULL, -1, Tk_Offset(TreeCtrl, cursor),
TK_OPTION_NULL_OK, (ClientData) NULL, 0},
+#ifdef DEPRECATED
{TK_OPTION_STRING, "-defaultstyle", "defaultStyle", "DefaultStyle",
(char *) NULL, Tk_Offset(TreeCtrl, defaultStyle.stylesObj), -1,
TK_OPTION_NULL_OK, (ClientData) NULL, TREE_CONF_DEFSTYLE},
+#endif /* DEPRECATED */
{TK_OPTION_STRING_TABLE, "-doublebuffer",
"doubleBuffer", "DoubleBuffer",
"item", -1, Tk_Offset(TreeCtrl, doubleBuffer),
@@ -1261,8 +1263,10 @@ TreeConfigure(
mask |= TREE_CONF_BUTBMP;
if (tree->buttonImage.obj != NULL)
mask |= TREE_CONF_BUTIMG;
+#ifdef DEPRECATED
if (tree->defaultStyle.stylesObj != NULL)
mask |= TREE_CONF_DEFSTYLE;
+#endif
if (tree->wrapObj != NULL)
mask |= TREE_CONF_WRAP;
if (!ObjectIsEmpty(tree->itemWidthObj))
@@ -1277,10 +1281,12 @@ TreeConfigure(
if (mask & TREE_CONF_BG_IMAGE)
saved.backgroundImage = tree->backgroundImage;
+#ifdef DEPRECATED
if (mask & TREE_CONF_DEFSTYLE) {
saved.defaultStyle.styles = tree->defaultStyle.styles;
saved.defaultStyle.numStyles = tree->defaultStyle.numStyles;
}
+#endif
if (mask & TREE_CONF_WRAP) {
saved.wrapMode = tree->wrapMode;
saved.wrapArg = tree->wrapArg;
@@ -1302,6 +1308,7 @@ TreeConfigure(
}
}
+#ifdef DEPRECATED
if (mask & TREE_CONF_DEFSTYLE) {
if (tree->defaultStyle.stylesObj == NULL) {
tree->defaultStyle.styles = NULL;
@@ -1333,6 +1340,7 @@ TreeConfigure(
maskFree |= TREE_CONF_DEFSTYLE;
}
}
+#endif /* DEPRECATED */
/* Parse -wrap string into wrapMode and wrapArg */
if (mask & TREE_CONF_WRAP) {
@@ -1397,11 +1405,12 @@ badWrap:
if (saved.backgroundImage != NULL)
Tree_FreeImage(tree, saved.backgroundImage);
}
+#ifdef DEPRECATED
if (mask & TREE_CONF_DEFSTYLE) {
if (saved.defaultStyle.styles != NULL)
ckfree((char *) saved.defaultStyle.styles);
}
-
+#endif
Tk_FreeSavedOptions(&savedOptions);
break;
} else {
@@ -1414,19 +1423,22 @@ badWrap:
*/
if (maskFree & TREE_CONF_BG_IMAGE)
Tree_FreeImage(tree, tree->backgroundImage);
+#ifdef DEPRECATED
if (maskFree & TREE_CONF_DEFSTYLE)
ckfree((char *) tree->defaultStyle.styles);
-
+#endif
/*
* Restore old values.
*/
if (mask & TREE_CONF_BG_IMAGE) {
tree->backgroundImage = saved.backgroundImage;
}
+#ifdef DEPRECATED
if (mask & TREE_CONF_DEFSTYLE) {
tree->defaultStyle.styles = saved.defaultStyle.styles;
tree->defaultStyle.numStyles = saved.defaultStyle.numStyles;
}
+#endif
if (mask & TREE_CONF_WRAP) {
tree->wrapMode = saved.wrapMode;
tree->wrapArg = saved.wrapArg;
@@ -1765,9 +1777,10 @@ TreeDestroy(
Tcl_DeleteHashTable(&tree->selection);
+#ifdef DEPRECATED
if (tree->defaultStyle.styles != NULL)
ckfree((char *) tree->defaultStyle.styles);
-
+#endif
#ifdef ALLOC_HAX
AllocHax_Finalize(tree->allocData);
#endif
diff --git a/generic/tkTreeCtrl.h b/generic/tkTreeCtrl.h
index ca0012e..b6f935d 100644
--- a/generic/tkTreeCtrl.h
+++ b/generic/tkTreeCtrl.h
@@ -7,7 +7,7 @@
* Copyright (c) 2002-2003 Christian Krone
* Copyright (c) 2003 ActiveState Corporation
*
- * RCS: @(#) $Id: tkTreeCtrl.h,v 1.63 2006/11/03 18:43:48 treectrl Exp $
+ * RCS: @(#) $Id: tkTreeCtrl.h,v 1.64 2006/11/03 22:30:34 treectrl Exp $
*/
#include "tkPort.h"
@@ -334,12 +334,13 @@ struct TreeCtrl
int scanYOrigin;
Tk_OptionTable styleOptionTable;
+#ifdef DEPRECATED
struct {
Tcl_Obj *stylesObj;
TreeStyle *styles;
int numStyles;
} defaultStyle;
-
+#endif /* DEPRECATED */
Tk_OptionTable itemOptionTable;
int itemPrefixLen; /* -itemprefix */
int columnPrefixLen; /* -columnprefix */
@@ -678,12 +679,16 @@ extern TreeColumn TreeColumn_Prev(TreeColumn column_);
extern int TreeColumn_FixedWidth(TreeColumn column_);
extern int TreeColumn_MinWidth(TreeColumn column_);
extern int TreeColumn_MaxWidth(TreeColumn column_);
-extern int TreeColumn_StepWidth(TreeColumn column_);
extern int TreeColumn_NeededWidth(TreeColumn column_);
extern int TreeColumn_UseWidth(TreeColumn column_);
extern int TreeColumn_Offset(TreeColumn column_);
extern Tk_Justify TreeColumn_Justify(TreeColumn column_);
+#ifdef DEPRECATED
extern int TreeColumn_WidthHack(TreeColumn column_);
+extern int TreeColumn_StepWidth(TreeColumn column_);
+#endif
+extern TreeStyle TreeColumn_ItemStyle(TreeColumn column_);
+extern void TreeColumn_StyleDeleted(TreeColumn column_, TreeStyle style);
extern int TreeColumn_Visible(TreeColumn column_);
extern int TreeColumn_Squeeze(TreeColumn column_);
extern GC TreeColumn_BackgroundGC(TreeColumn column_, int which);
@@ -1052,7 +1057,7 @@ extern int DynamicCO_Init(Tk_OptionSpec *optionTable, CONST char *optionName,
extern Tk_ObjCustomOption pixelsCO;
extern Tk_ObjCustomOption stringCO;
-
+extern Tk_ObjCustomOption styleCO;
/*****/
diff --git a/generic/tkTreeItem.c b/generic/tkTreeItem.c
index 199aff5..be05c36 100644
--- a/generic/tkTreeItem.c
+++ b/generic/tkTreeItem.c
@@ -5,7 +5,7 @@
*
* Copyright (c) 2002-2006 Tim Baker
*
- * RCS: @(#) $Id: tkTreeItem.c,v 1.74 2006/10/30 23:03:22 treectrl Exp $
+ * RCS: @(#) $Id: tkTreeItem.c,v 1.75 2006/11/03 22:30:34 treectrl Exp $
*/
#include "tkTreeCtrl.h"
@@ -4702,6 +4702,7 @@ ItemCreateCmd(
Item *head = NULL, *tail = NULL;
Tcl_Obj *listObj = NULL, *tagsObj = NULL;
TagInfo *tagInfo = NULL;
+ TreeColumn treeColumn;
for (i = 3; i < objc; i += 2) {
if (Tcl_GetIndexFromObj(interp, objv[i], optionNames, "option", 0,
@@ -4808,18 +4809,32 @@ ItemCreateCmd(
item->state &= ~STATE_OPEN;
item->fixedHeight = height;
+ /* Apply each column's -itemstyle option. */
+ for (treeColumn = tree->columns; treeColumn != NULL;
+ treeColumn = TreeColumn_Next(treeColumn)) {
+ TreeStyle style = TreeColumn_ItemStyle(treeColumn);
+ if (style != NULL) {
+ Column *column = Item_CreateColumn(tree, item,
+ TreeColumn_Index(treeColumn), NULL);
+ column->style = TreeStyle_NewInstance(tree, style);
+ }
+ }
+#ifdef DEPRECATED
/* Apply default styles */
if (tree->defaultStyle.numStyles) {
int i, n = MIN(tree->columnCount, tree->defaultStyle.numStyles);
for (i = 0; i < n; i++) {
Column *column = Item_CreateColumn(tree, item, i, NULL);
+ if (column->style != NULL)
+ continue;
if (tree->defaultStyle.styles[i] != NULL) {
column->style = TreeStyle_NewInstance(tree,
tree->defaultStyle.styles[i]);
}
}
}
+#endif /* DEPRECATED */
if (tagInfo != NULL) {
if (count == 1) {
diff --git a/generic/tkTreeStyle.c b/generic/tkTreeStyle.c
index 2ee319f..d80b5b1 100644
--- a/generic/tkTreeStyle.c
+++ b/generic/tkTreeStyle.c
@@ -5,7 +5,7 @@
*
* Copyright (c) 2002-2006 Tim Baker
*
- * RCS: @(#) $Id: tkTreeStyle.c,v 1.57 2006/11/03 18:54:41 treectrl Exp $
+ * RCS: @(#) $Id: tkTreeStyle.c,v 1.58 2006/11/03 22:30:34 treectrl Exp $
*/
#include "tkTreeCtrl.h"
@@ -4010,6 +4010,14 @@ Style_Deleted(
hPtr = Tcl_NextHashEntry(&search);
}
+ /* Update each column's -itemstyle option */
+ treeColumn = tree->columns;
+ while (treeColumn != NULL) {
+ TreeColumn_StyleDeleted(treeColumn, (TreeStyle) masterStyle);
+ treeColumn = TreeColumn_Next(treeColumn);
+ }
+
+#ifdef DEPRECATED
/* Update -defaultstyle option */
if (tree->defaultStyle.stylesObj != NULL)
{
@@ -4031,6 +4039,7 @@ Style_Deleted(
Tcl_ListObjReplace(tree->interp, stylesObj, columnIndex, 1, 1, &emptyObj);
}
}
+#endif /* DEPRECATED */
}
/*
diff --git a/generic/tkTreeUtils.c b/generic/tkTreeUtils.c
index ff83c37..372d886 100644
--- a/generic/tkTreeUtils.c
+++ b/generic/tkTreeUtils.c
@@ -5,7 +5,7 @@
*
* Copyright (c) 2002-2006 Tim Baker
*
- * RCS: @(#) $Id: tkTreeUtils.c,v 1.49 2006/11/03 18:54:12 treectrl Exp $
+ * RCS: @(#) $Id: tkTreeUtils.c,v 1.50 2006/11/03 22:30:34 treectrl Exp $
*/
#include "tkTreeCtrl.h"
@@ -5595,8 +5595,8 @@ PixelsCO_Set(
}
if (internalPtr != NULL) {
- *((int *) saveInternalPtr) = *((int *) internalPtr);
- *((int *) internalPtr) = new;
+ *((int *) saveInternalPtr) = *internalPtr;
+ *internalPtr = new;
}
return TCL_OK;
@@ -5636,3 +5636,97 @@ Tk_ObjCustomOption pixelsCO =
(ClientData) NULL
};
+/*
+ *----------------------------------------------------------------------
+ *
+ * StyleCO_Set --
+ * StyleCO_Get --
+ * StyleCO_Restore --
+ *
+ * These procedures implement a TK_OPTION_CUSTOM where the custom
+ * option is a TreeStyle.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+StyleCO_Set(
+ ClientData clientData,
+ Tcl_Interp *interp,
+ Tk_Window tkwin,
+ Tcl_Obj **valuePtr,
+ char *recordPtr,
+ int internalOffset,
+ char *saveInternalPtr,
+ int flags
+ )
+{
+ TreeCtrl *tree = (TreeCtrl *) ((TkWindow *) tkwin)->instanceData;
+ int objEmpty;
+ TreeStyle *internalPtr, new;
+
+ if (internalOffset >= 0)
+ internalPtr = (TreeStyle *) (recordPtr + internalOffset);
+ else
+ internalPtr = NULL;
+
+ objEmpty = ObjectIsEmpty((*valuePtr));
+
+ if ((flags & TK_OPTION_NULL_OK) && objEmpty) {
+ (*valuePtr) = NULL;
+ new = NULL;
+ } else {
+ if (TreeStyle_FromObj(tree, *valuePtr, &new) != TCL_OK)
+ return TCL_ERROR;
+ }
+
+ if (internalPtr != NULL) {
+ *((TreeStyle *) saveInternalPtr) = *internalPtr;
+ *internalPtr = new;
+ }
+
+ return TCL_OK;
+}
+
+static Tcl_Obj *
+StyleCO_Get(
+ ClientData clientData,
+ Tk_Window tkwin,
+ char *recordPtr,
+ int internalOffset
+ )
+{
+ TreeStyle *internalPtr = (TreeStyle *) (recordPtr + internalOffset);
+
+ if (*internalPtr == NULL)
+ return NULL;
+ return TreeStyle_ToObj(*internalPtr);
+}
+
+static void
+StyleCO_Restore(
+ ClientData clientData,
+ Tk_Window tkwin,
+ char *internalPtr,
+ char *saveInternalPtr
+ )
+{
+ *(TreeStyle *) internalPtr = *(TreeStyle *) saveInternalPtr;
+}
+
+Tk_ObjCustomOption styleCO =
+{
+ "style",
+ StyleCO_Set,
+ StyleCO_Get,
+ StyleCO_Restore,
+ NULL,
+ (ClientData) NULL
+};
+