Mercurial > projects > dwt-linux
annotate dwt/widgets/TableItem.d @ 90:9ba02d7fb226
Tree, TreeItem and TreeColumn
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Thu, 17 Jan 2008 09:03:45 +0100 |
parents | 9f6c2c92be2b |
children | 0f12f6bb9739 |
rev | line source |
---|---|
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1 /******************************************************************************* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2 * Copyright (c) 2000, 2007 IBM Corporation and others. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3 * All rights reserved. This program and the accompanying materials |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 * are made available under the terms of the Eclipse Public License v1.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 * which accompanies this distribution, and is available at |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6 * http://www.eclipse.org/legal/epl-v10.html |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 * Contributors: |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 * IBM Corporation - initial API and implementation |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
10 *******************************************************************************/ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
11 module dwt.widgets.TableItem; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
13 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
14 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
15 import dwt.DWT; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
16 import dwt.DWTException; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 import dwt.graphics.Color; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 import dwt.graphics.Font; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 import dwt.graphics.Image; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 import dwt.graphics.Rectangle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
21 import dwt.internal.gtk.OS; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 import dwt.widgets.Item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 import dwt.widgets.Table; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 import dwt.widgets.ImageList; |
90
9ba02d7fb226
Tree, TreeItem and TreeColumn
Frank Benoit <benoit@tionex.de>
parents:
89
diff
changeset
|
25 import dwt.widgets.TreeItem; |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
26 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 import Math = tango.math.Math; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 * Instances of this class represent a selectable user interface object |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
31 * that represents an item in a table. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
32 * <dl> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 * <dt><b>Styles:</b></dt> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 * <dd>(none)</dd> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
35 * <dt><b>Events:</b></dt> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
36 * <dd>(none)</dd> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
37 * </dl> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 * IMPORTANT: This class is <em>not</em> intended to be subclassed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
40 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
41 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 public class TableItem : Item { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
43 Table parent; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
44 Font font; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
45 Font[] cellFont; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
46 bool cached, grayed; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
47 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
48 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
49 * Constructs a new instance of this class given its parent |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
50 * (which must be a <code>Table</code>), a style value |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
51 * describing its behavior and appearance, and the index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
52 * at which to place it in the items maintained by its parent. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
53 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
54 * The style value is either one of the style constants defined in |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
55 * class <code>DWT</code> which is applicable to instances of this |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
56 * class, or must be built by <em>bitwise OR</em>'ing together |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
57 * (that is, using the <code>int</code> "|" operator) two or more |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
58 * of those <code>DWT</code> style constants. The class description |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
59 * lists the style constants that are applicable to the class. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
60 * Style bits are also inherited from superclasses. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
61 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
62 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
63 * @param parent a composite control which will be the parent of the new instance (cannot be null) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
64 * @param style the style of control to construct |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
65 * @param index the zero-relative index to store the receiver in its parent |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
66 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
67 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
68 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
69 * <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the parent (inclusive)</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
70 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
71 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
72 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
73 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
74 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
75 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
76 * @see DWT |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
77 * @see Widget#checkSubclass |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
78 * @see Widget#getStyle |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
79 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
80 public this (Table parent, int style, int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
81 this (parent, style, index, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
82 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
83 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
84 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
85 * Constructs a new instance of this class given its parent |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
86 * (which must be a <code>Table</code>) and a style value |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
87 * describing its behavior and appearance. The item is added |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
88 * to the end of the items maintained by its parent. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
89 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
90 * The style value is either one of the style constants defined in |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
91 * class <code>DWT</code> which is applicable to instances of this |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
92 * class, or must be built by <em>bitwise OR</em>'ing together |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
93 * (that is, using the <code>int</code> "|" operator) two or more |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
94 * of those <code>DWT</code> style constants. The class description |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
95 * lists the style constants that are applicable to the class. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
96 * Style bits are also inherited from superclasses. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
97 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
98 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
99 * @param parent a composite control which will be the parent of the new instance (cannot be null) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
100 * @param style the style of control to construct |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
101 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
102 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
103 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
104 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
105 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
106 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
107 * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
108 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
109 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
110 * @see DWT |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
111 * @see Widget#checkSubclass |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
112 * @see Widget#getStyle |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
113 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
114 public this (Table parent, int style) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
115 this (parent, style, checkNull (parent).getItemCount (), true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
116 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
117 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
118 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
119 this (Table parent, int style, int index, bool create) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
120 super (parent, style); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
121 this.parent = parent; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
122 if (create) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
123 parent.createItem (this, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
124 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
125 GtkTreeIter handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
126 OS.gtk_tree_model_iter_nth_child (parent.modelHandle, &handle, null, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
127 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
128 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
129 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
130 static Table checkNull (Table control) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
131 if (control is null) DWT.error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
132 return control; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
133 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
134 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
135 protected void checkSubclass () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
136 if (!isValidSubclass ()) error (DWT.ERROR_INVALID_SUBCLASS); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
137 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
138 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
139 void clear () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
140 if (parent.currentItem is this) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
141 if (cached || (parent.style & DWT.VIRTUAL) is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
142 int columnCount = OS.gtk_tree_model_get_n_columns (parent.modelHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
143 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
144 OS.gtk_list_store_set1 (parent.modelHandle, handle, i, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
145 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
146 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
147 * Bug in GTK. When using fixed-height-mode, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
148 * row changes do not cause the row to be repainted. The fix is to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
149 * invalidate the row when it is cleared. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
150 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
151 if ((parent.style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
152 if (OS.GTK_VERSION >= OS.buildVERSION (2, 3, 2) && OS.GTK_VERSION < OS.buildVERSION (2, 6, 3)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
153 redraw (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
154 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
155 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
156 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
157 cached = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
158 font = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
159 cellFont = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
160 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
161 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
162 void destroyWidget () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
163 parent.destroyItem (this); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
164 releaseHandle (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
165 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
166 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
167 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
168 * Returns the receiver's background color. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
169 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
170 * @return the background color |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
171 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
172 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
173 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
174 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
175 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
176 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
177 * @since 2.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
178 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
179 public Color getBackground () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
180 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
181 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
182 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
183 OS.gtk_tree_model_get1 (parent.modelHandle, handle, Table.BACKGROUND_COLUMN, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
184 if (ptr is null) return parent.getBackground (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
185 GdkColor* gdkColor = cast(GdkColor*)ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
186 return Color.gtk_new (display, gdkColor); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
187 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
188 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
189 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
190 * Returns a rectangle describing the receiver's size and location |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
191 * relative to its parent. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
192 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
193 * @return the receiver's bounding rectangle |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
194 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
195 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
196 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
197 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
198 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
199 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
200 * @since 3.2 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
201 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
202 public Rectangle getBounds () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
203 // TODO fully test on early and later versions of GTK |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
204 // shifted a bit too far right on later versions of GTK - however, old Tree also had this problem |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
205 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
206 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
207 auto parentHandle = parent.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
208 auto column = OS.gtk_tree_view_get_column (parentHandle, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
209 if (column is null) return new Rectangle (0, 0, 0, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
210 auto textRenderer = parent.getTextRenderer (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
211 auto pixbufRenderer = parent.getPixbufRenderer (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
212 if (textRenderer is null || pixbufRenderer is null) return new Rectangle (0, 0, 0, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
213 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
214 auto path = OS.gtk_tree_model_get_path (parent.modelHandle, handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
215 OS.gtk_widget_realize (parentHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
216 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
217 bool isExpander = OS.gtk_tree_model_iter_n_children (parent.modelHandle, handle) > 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
218 bool isExpanded = cast(bool)OS.gtk_tree_view_row_expanded (parentHandle, path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
219 OS.gtk_tree_view_column_cell_set_cell_data (column, parent.modelHandle, handle, isExpander, isExpanded); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
220 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
221 GdkRectangle rect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
222 OS.gtk_tree_view_get_cell_area (parentHandle, path, column, &rect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
223 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
224 int right = rect.x + rect.width; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
225 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
226 int x, w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
227 parent.ignoreSize = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
228 OS.gtk_cell_renderer_get_size (textRenderer, parentHandle, null, null, null, &w, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
229 parent.ignoreSize = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
230 rect.width = w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
231 int buffer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
232 if (OS.gtk_tree_view_get_expander_column (parentHandle) is column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
233 OS.gtk_widget_style_get1 (parentHandle, OS.expander_size.ptr, &buffer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
234 rect.x += buffer + TreeItem.EXPANDER_EXTRA_PADDING; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
235 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
236 OS.gtk_widget_style_get1 (parentHandle, OS.horizontal_separator.ptr, &buffer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
237 int horizontalSeparator = buffer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
238 rect.x += horizontalSeparator; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
239 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
240 if (OS.GTK_VERSION >= OS.buildVERSION (2, 1, 3)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
241 OS.gtk_tree_view_column_cell_get_position (column, textRenderer, &x, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
242 rect.x += x; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
243 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
244 if ((parent.style & DWT.CHECK) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
245 OS.gtk_cell_renderer_get_size (parent.checkRenderer, parentHandle, null, null, null, &w, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
246 rect.x += w + horizontalSeparator; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
247 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
248 OS.gtk_cell_renderer_get_size (pixbufRenderer, parentHandle, null, null, null, &w, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
249 rect.x += w + horizontalSeparator; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
250 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
251 if (parent.columnCount > 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
252 if (rect.x + rect.width > right) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
253 rect.width = Math.max (0, right - rect.x); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
254 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
255 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
256 return new Rectangle (rect.x, rect.y, rect.width + 1, rect.height + 1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
257 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
258 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
259 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
260 * Returns the background color at the given column index in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
261 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
262 * @param index the column index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
263 * @return the background color |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
264 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
265 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
266 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
267 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
268 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
269 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
270 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
271 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
272 public Color getBackground (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
273 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
274 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
275 int count = Math.max (1, parent.columnCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
276 if (0 > index || index > count - 1) return getBackground (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
277 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
278 int modelIndex = parent.columnCount is 0 ? Table.FIRST_COLUMN : parent.columns [index].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
279 OS.gtk_tree_model_get1 (parent.modelHandle, handle, modelIndex + Table.CELL_BACKGROUND, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
280 if (ptr is null) return getBackground (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
281 GdkColor* gdkColor = cast(GdkColor*)ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
282 return Color.gtk_new (display, gdkColor); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
283 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
284 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
285 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
286 * Returns a rectangle describing the receiver's size and location |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
287 * relative to its parent at a column in the table. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
288 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
289 * @param index the index that specifies the column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
290 * @return the receiver's bounding column rectangle |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
291 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
292 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
293 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
294 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
295 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
296 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
297 public Rectangle getBounds (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
298 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
299 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
300 auto parentHandle = parent.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
301 GtkTreeViewColumn* column; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
302 if (index >= 0 && index < parent.columnCount) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
303 column = cast(GtkTreeViewColumn*)parent.columns [index].handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
304 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
305 column = OS.gtk_tree_view_get_column (parentHandle, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
306 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
307 if (column is null) return new Rectangle (0, 0, 0, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
308 auto path = OS.gtk_tree_model_get_path (parent.modelHandle, handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
309 OS.gtk_widget_realize (parentHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
310 GdkRectangle rect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
311 OS.gtk_tree_view_get_cell_area (parentHandle, path, column, &rect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
312 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
313 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
314 if (index is 0 && (parent.style & DWT.CHECK) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
315 if (OS.GTK_VERSION >= OS.buildVERSION (2, 1, 3)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
316 int x, w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
317 OS.gtk_tree_view_column_cell_get_position (column, parent.checkRenderer, &x, &w); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
318 rect.x += x + w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
319 rect.width -= x + w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
320 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
321 int w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
322 OS.gtk_cell_renderer_get_size (parent.checkRenderer, parentHandle, null, null, null, &w, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
323 int buffer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
324 OS.gtk_widget_style_get1 (parentHandle, OS.horizontal_separator.ptr, &buffer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
325 rect.x += w + buffer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
326 rect.width -= w + buffer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
327 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
328 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
329 return new Rectangle (rect.x, rect.y, rect.width + 1, rect.height + 1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
330 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
331 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
332 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
333 * Returns <code>true</code> if the receiver is checked, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
334 * and false otherwise. When the parent does not have |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
335 * the <code>CHECK</code> style, return false. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
336 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
337 * @return the checked state of the checkbox |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
338 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
339 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
340 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
341 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
342 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
343 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
344 public bool getChecked () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
345 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
346 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
347 if ((parent.style & DWT.CHECK) is 0) return false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
348 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
349 OS.gtk_tree_model_get1 (parent.modelHandle, handle, Table.CHECKED_COLUMN, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
350 return ptr !is null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
351 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
352 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
353 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
354 * Returns the font that the receiver will use to paint textual information for this item. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
355 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
356 * @return the receiver's font |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
357 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
358 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
359 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
360 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
361 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
362 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
363 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
364 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
365 public Font getFont () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
366 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
367 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
368 return font !is null ? font : parent.getFont (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
369 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
370 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
371 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
372 * Returns the font that the receiver will use to paint textual information |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
373 * for the specified cell in this item. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
374 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
375 * @param index the column index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
376 * @return the receiver's font |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
377 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
378 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
379 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
380 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
381 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
382 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
383 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
384 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
385 public Font getFont (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
386 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
387 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
388 int count = Math.max (1, parent.columnCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
389 if (0 > index || index > count - 1) return getFont (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
390 if (cellFont is null || cellFont [index] is null) return getFont (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
391 return cellFont [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
392 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
393 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
394 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
395 * Returns the foreground color that the receiver will use to draw. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
396 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
397 * @return the receiver's foreground color |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
398 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
399 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
400 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
401 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
402 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
403 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
404 * @since 2.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
405 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
406 public Color getForeground () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
407 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
408 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
409 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
410 OS.gtk_tree_model_get1 (parent.modelHandle, handle, Table.FOREGROUND_COLUMN, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
411 if (ptr is null) return parent.getForeground (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
412 GdkColor* gdkColor = cast(GdkColor*)ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
413 return Color.gtk_new (display, gdkColor); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
414 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
415 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
416 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
417 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
418 * Returns the foreground color at the given column index in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
419 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
420 * @param index the column index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
421 * @return the foreground color |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
422 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
423 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
424 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
425 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
426 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
427 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
428 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
429 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
430 public Color getForeground (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
431 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
432 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
433 int count = Math.max (1, parent.columnCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
434 if (0 > index || index > count - 1) return getForeground (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
435 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
436 int modelIndex = parent.columnCount is 0 ? Table.FIRST_COLUMN : parent.columns [index].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
437 OS.gtk_tree_model_get1 (parent.modelHandle, handle, modelIndex + Table.CELL_FOREGROUND, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
438 if (ptr is null) return getForeground (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
439 GdkColor* gdkColor = cast(GdkColor*)ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
440 return Color.gtk_new (display, gdkColor); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
441 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
442 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
443 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
444 * Returns <code>true</code> if the receiver is grayed, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
445 * and false otherwise. When the parent does not have |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
446 * the <code>CHECK</code> style, return false. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
447 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
448 * @return the grayed state of the checkbox |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
449 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
450 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
451 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
452 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
453 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
454 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
455 public bool getGrayed () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
456 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
457 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
458 if ((parent.style & DWT.CHECK) is 0) return false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
459 return grayed; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
460 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
461 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
462 public Image getImage () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
463 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
464 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
465 return getImage (0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
466 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
467 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
468 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
469 * Returns the image stored at the given column index in the receiver, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
470 * or null if the image has not been set or if the column does not exist. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
471 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
472 * @param index the column index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
473 * @return the image stored at the given column index in the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
474 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
475 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
476 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
477 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
478 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
479 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
480 public Image getImage (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
481 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
482 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
483 int count = Math.max (1, parent.getColumnCount ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
484 if (0 > index || index > count - 1) return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
485 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
486 int modelIndex = parent.columnCount is 0 ? Table.FIRST_COLUMN : parent.columns [index].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
487 OS.gtk_tree_model_get1 (parent.modelHandle, handle, modelIndex + Table.CELL_PIXBUF, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
488 if (ptr is null) return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
489 ImageList imageList = parent.imageList; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
490 int imageIndex = imageList.indexOf (ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
491 if (imageIndex is -1) return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
492 return imageList.get (imageIndex); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
493 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
494 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
495 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
496 * Returns a rectangle describing the size and location |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
497 * relative to its parent of an image at a column in the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
498 * table. An empty rectangle is returned if index exceeds |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
499 * the index of the table's last column. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
500 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
501 * @param index the index that specifies the column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
502 * @return the receiver's bounding image rectangle |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
503 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
504 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
505 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
506 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
507 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
508 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
509 public Rectangle getImageBounds (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
510 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
511 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
512 auto parentHandle = parent.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
513 GtkTreeViewColumn* column; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
514 if (index >= 0 && index < parent.columnCount) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
515 column = cast(GtkTreeViewColumn*)parent.columns [index].handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
516 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
517 column = OS.gtk_tree_view_get_column (parentHandle, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
518 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
519 if (column is null) return new Rectangle (0, 0, 0, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
520 auto pixbufRenderer = parent.getPixbufRenderer (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
521 if (pixbufRenderer is null) return new Rectangle (0, 0, 0, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
522 GdkRectangle rect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
523 auto path = OS.gtk_tree_model_get_path (parent.modelHandle, handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
524 OS.gtk_widget_realize (parentHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
525 OS.gtk_tree_view_get_cell_area (parentHandle, path, column, &rect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
526 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
527 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
528 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
529 * The OS call gtk_cell_renderer_get_size() provides the width of image to be drawn |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
530 * by the cell renderer. If there is no image in the cell, the width is zero. If the table contains |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
531 * images of varying widths, gtk_cell_renderer_get_size() will return the width of the image, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
532 * not the width of the area in which the image is drawn. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
533 * New API was added in GTK 2.1.3 for determining the full width of the renderer area. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
534 * For earlier versions of GTK, the result is only correct if all rows have images of the same |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
535 * width. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
536 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
537 if (OS.GTK_VERSION >= OS.buildVERSION (2, 1, 3)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
538 int x, w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
539 OS.gtk_tree_view_column_cell_get_position (column, pixbufRenderer, &x, &w); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
540 rect.x += x; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
541 rect.width = w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
542 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
543 int w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
544 OS.gtk_tree_view_column_cell_set_cell_data (column, parent.modelHandle, handle, false, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
545 OS.gtk_cell_renderer_get_size (pixbufRenderer, parentHandle, null, null, null, &w, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
546 rect.width = w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
547 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
548 return new Rectangle (rect.x, rect.y, rect.width, rect.height + 1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
549 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
550 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
551 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
552 * Gets the image indent. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
553 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
554 * @return the indent |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
555 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
556 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
557 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
558 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
559 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
560 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
561 public int getImageIndent () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
562 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
563 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
564 /* Image indent is not supported on GTK */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
565 return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
566 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
567 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
568 char[] getNameText () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
569 if ((parent.style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
570 if (!cached) return "*virtual*"; //$NON-NLS-1$ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
571 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
572 return super.getNameText (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
573 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
574 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
575 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
576 * Returns the receiver's parent, which must be a <code>Table</code>. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
577 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
578 * @return the receiver's parent |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
579 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
580 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
581 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
582 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
583 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
584 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
585 public Table getParent () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
586 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
587 return parent; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
588 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
589 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
590 public char[] getText () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
591 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
592 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
593 return getText (0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
594 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
595 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
596 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
597 * Returns the text stored at the given column index in the receiver, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
598 * or empty string if the text has not been set. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
599 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
600 * @param index the column index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
601 * @return the text stored at the given column index in the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
602 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
603 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
604 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
605 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
606 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
607 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
608 public char[] getText (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
609 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
610 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
611 int count = Math.max (1, parent.getColumnCount ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
612 if (0 > index || index > count - 1) return ""; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
613 char* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
614 int modelIndex = parent.columnCount is 0 ? Table.FIRST_COLUMN : parent.columns [index].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
615 OS.gtk_tree_model_get1 (parent.modelHandle, handle, modelIndex + Table.CELL_TEXT, cast(void**) &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
616 if (ptr is null) return ""; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
617 char[] res = tango.stdc.stringz.fromUtf8z( ptr ).dup; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
618 OS.g_free (ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
619 return res; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
620 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
621 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
622 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
623 * Returns a rectangle describing the size and location |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
624 * relative to its parent of the text at a column in the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
625 * table. An empty rectangle is returned if index exceeds |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
626 * the index of the table's last column. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
627 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
628 * @param index the index that specifies the column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
629 * @return the receiver's bounding text rectangle |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
630 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
631 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
632 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
633 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
634 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
635 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
636 * @since 3.3 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
637 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
638 public Rectangle getTextBounds (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
639 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
640 if (!parent.checkData (this)) error (DWT.ERROR_WIDGET_DISPOSED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
641 int count = Math.max (1, parent.getColumnCount ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
642 if (0 > index || index > count - 1) return new Rectangle (0, 0, 0, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
643 // TODO fully test on early and later versions of GTK |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
644 // shifted a bit too far right on later versions of GTK - however, old Tree also had this problem |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
645 auto parentHandle = parent.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
646 GtkTreeViewColumn* column; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
647 if (index >= 0 && index < parent.columnCount) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
648 column = cast(GtkTreeViewColumn*)parent.columns [index].handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
649 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
650 column = OS.gtk_tree_view_get_column (parentHandle, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
651 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
652 if (column is null) return new Rectangle (0, 0, 0, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
653 auto textRenderer = parent.getTextRenderer (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
654 auto pixbufRenderer = parent.getPixbufRenderer (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
655 if (textRenderer is null || pixbufRenderer is null) return new Rectangle (0, 0, 0, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
656 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
657 auto path = OS.gtk_tree_model_get_path (parent.modelHandle, handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
658 OS.gtk_widget_realize (parentHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
659 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
660 bool isExpander = OS.gtk_tree_model_iter_n_children (parent.modelHandle, handle) > 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
661 bool isExpanded = cast(bool)OS.gtk_tree_view_row_expanded (parentHandle, path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
662 OS.gtk_tree_view_column_cell_set_cell_data (column, parent.modelHandle, handle, isExpander, isExpanded); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
663 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
664 GdkRectangle rect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
665 OS.gtk_tree_view_get_cell_area (parentHandle, path, column, &rect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
666 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
667 int right = rect.x + rect.width; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
668 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
669 int x, w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
670 parent.ignoreSize = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
671 OS.gtk_cell_renderer_get_size (textRenderer, parentHandle, null, null, null, &w, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
672 parent.ignoreSize = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
673 int buffer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
674 if (OS.gtk_tree_view_get_expander_column (parentHandle) is column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
675 OS.gtk_widget_style_get1 (parentHandle, OS.expander_size.ptr, &buffer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
676 rect.x += buffer + TreeItem.EXPANDER_EXTRA_PADDING; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
677 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
678 OS.gtk_widget_style_get1 (parentHandle, OS.horizontal_separator.ptr, &buffer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
679 int horizontalSeparator = buffer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
680 rect.x += horizontalSeparator; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
681 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
682 if (OS.GTK_VERSION >= OS.buildVERSION (2, 1, 3)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
683 OS.gtk_tree_view_column_cell_get_position (column, textRenderer, &x, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
684 rect.x += x; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
685 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
686 if ((parent.style & DWT.CHECK) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
687 OS.gtk_cell_renderer_get_size (parent.checkRenderer, parentHandle, null, null, null, &w, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
688 rect.x += w + horizontalSeparator; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
689 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
690 OS.gtk_cell_renderer_get_size (pixbufRenderer, parentHandle, null, null, null, &w, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
691 rect.x += w + horizontalSeparator; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
692 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
693 if (parent.columnCount > 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
694 if (rect.x + rect.width > right) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
695 rect.width = Math.max (0, right - rect.x); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
696 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
697 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
698 return new Rectangle (rect.x, rect.y, rect.width + 1, rect.height + 1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
699 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
700 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
701 void redraw () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
702 if ((OS.GTK_WIDGET_FLAGS (parent.handle) & OS.GTK_REALIZED) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
703 auto parentHandle = parent.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
704 auto path = OS.gtk_tree_model_get_path (parent.modelHandle, handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
705 GdkRectangle rect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
706 OS.gtk_tree_view_get_cell_area (parentHandle, path, null, &rect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
707 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
708 auto window = OS.gtk_tree_view_get_bin_window (parentHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
709 rect.x = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
710 int w, h; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
711 OS.gdk_drawable_get_size (window, &w, &h); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
712 rect.width = w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
713 OS.gdk_window_invalidate_rect (window, &rect, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
714 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
715 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
716 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
717 void releaseHandle () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
718 if (handle !is null) OS.g_free (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
719 handle = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
720 super.releaseHandle (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
721 parent = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
722 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
723 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
724 void releaseWidget () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
725 super.releaseWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
726 font = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
727 cellFont = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
728 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
729 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
730 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
731 * Sets the receiver's background color to the color specified |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
732 * by the argument, or to the default system color for the item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
733 * if the argument is null. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
734 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
735 * @param color the new color (or null) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
736 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
737 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
738 * <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
739 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
740 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
741 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
742 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
743 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
744 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
745 * @since 2.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
746 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
747 public void setBackground (Color color) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
748 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
749 if (color !is null && color.isDisposed ()) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
750 DWT.error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
751 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
752 GdkColor* gdkColor = color !is null ? color.handle : null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
753 OS.gtk_list_store_set1 (parent.modelHandle, handle, Table.BACKGROUND_COLUMN, gdkColor); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
754 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
755 * Bug in GTK. When using fixed-height-mode, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
756 * row changes do not cause the row to be repainted. The fix is to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
757 * invalidate the row when it is cleared. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
758 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
759 if ((parent.style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
760 if (OS.GTK_VERSION >= OS.buildVERSION (2, 3, 2) && OS.GTK_VERSION < OS.buildVERSION (2, 6, 3)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
761 redraw (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
762 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
763 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
764 cached = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
765 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
766 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
767 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
768 * Sets the background color at the given column index in the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
769 * to the color specified by the argument, or to the default system color for the item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
770 * if the argument is null. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
771 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
772 * @param index the column index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
773 * @param color the new color (or null) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
774 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
775 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
776 * <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
777 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
778 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
779 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
780 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
781 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
782 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
783 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
784 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
785 public void setBackground (int index, Color color) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
786 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
787 if (color !is null && color.isDisposed ()) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
788 DWT.error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
789 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
790 int count = Math.max (1, parent.getColumnCount ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
791 if (0 > index || index > count - 1) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
792 int modelIndex = parent.columnCount is 0 ? Table.FIRST_COLUMN : parent.columns [index].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
793 GdkColor* gdkColor = color !is null ? color.handle : null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
794 OS.gtk_list_store_set1 (parent.modelHandle, handle, modelIndex + Table.CELL_BACKGROUND, gdkColor); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
795 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
796 * Bug in GTK. When using fixed-height-mode, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
797 * row changes do not cause the row to be repainted. The fix is to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
798 * invalidate the row when it is cleared. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
799 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
800 if ((parent.style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
801 if (OS.GTK_VERSION >= OS.buildVERSION (2, 3, 2) && OS.GTK_VERSION < OS.buildVERSION (2, 6, 3)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
802 redraw (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
803 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
804 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
805 cached = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
806 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
807 if (color !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
808 bool customDraw = (parent.columnCount is 0) ? parent.firstCustomDraw : parent.columns [index].customDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
809 if (!customDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
810 if ((parent.style & DWT.VIRTUAL) is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
811 auto parentHandle = parent.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
812 GtkTreeViewColumn* column; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
813 if (parent.columnCount > 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
814 column = cast(GtkTreeViewColumn*)parent.columns [index].handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
815 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
816 column = OS.gtk_tree_view_get_column (parentHandle, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
817 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
818 if (column is null) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
819 auto textRenderer = parent.getTextRenderer (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
820 auto imageRenderer = parent.getPixbufRenderer (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
821 display.doCellDataProc( parentHandle, column, cast(GtkCellRenderer*)textRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
822 display.doCellDataProc( parentHandle, column, cast(GtkCellRenderer*)imageRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
823 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
824 if (parent.columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
825 parent.firstCustomDraw = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
826 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
827 parent.columns [index].customDraw = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
828 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
829 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
830 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
831 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
832 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
833 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
834 * Sets the checked state of the checkbox for this item. This state change |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
835 * only applies if the Table was created with the DWT.CHECK style. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
836 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
837 * @param checked the new checked state of the checkbox |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
838 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
839 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
840 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
841 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
842 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
843 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
844 public void setChecked (bool checked) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
845 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
846 if ((parent.style & DWT.CHECK) is 0) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
847 OS.gtk_list_store_set1 (parent.modelHandle, handle, Table.CHECKED_COLUMN, cast(void*)cast(int)checked); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
848 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
849 * GTK+'s "inconsistent" state does not match DWT's concept of grayed. To |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
850 * show checked+grayed differently from unchecked+grayed, we must toggle the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
851 * grayed state on check and uncheck. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
852 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
853 OS.gtk_list_store_set1 (parent.modelHandle, handle, Table.GRAYED_COLUMN, cast(void*)cast(int)( !checked ? false : grayed)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
854 cached = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
855 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
856 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
857 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
858 * Sets the font that the receiver will use to paint textual information |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
859 * for this item to the font specified by the argument, or to the default font |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
860 * for that kind of control if the argument is null. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
861 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
862 * @param font the new font (or null) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
863 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
864 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
865 * <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
866 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
867 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
868 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
869 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
870 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
871 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
872 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
873 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
874 public void setFont (Font font){ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
875 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
876 if (font !is null && font.isDisposed ()) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
877 DWT.error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
878 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
879 if (this.font is font) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
880 if (this.font !is null && this.font ==/*eq*/font ) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
881 this.font = font; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
882 auto fontHandle = font !is null ? font.handle : null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
883 OS.gtk_list_store_set1 (parent.modelHandle, handle, Table.FONT_COLUMN, fontHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
884 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
885 * Bug in GTK. When using fixed-height-mode, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
886 * row changes do not cause the row to be repainted. The fix is to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
887 * invalidate the row when it is cleared. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
888 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
889 if ((parent.style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
890 if (OS.GTK_VERSION >= OS.buildVERSION (2, 3, 2) && OS.GTK_VERSION < OS.buildVERSION (2, 6, 3)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
891 redraw (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
892 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
893 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
894 cached = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
895 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
896 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
897 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
898 * Sets the font that the receiver will use to paint textual information |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
899 * for the specified cell in this item to the font specified by the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
900 * argument, or to the default font for that kind of control if the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
901 * argument is null. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
902 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
903 * @param index the column index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
904 * @param font the new font (or null) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
905 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
906 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
907 * <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
908 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
909 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
910 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
911 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
912 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
913 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
914 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
915 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
916 public void setFont (int index, Font font) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
917 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
918 if (font !is null && font.isDisposed ()) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
919 DWT.error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
920 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
921 int count = Math.max (1, parent.getColumnCount ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
922 if (0 > index || index > count - 1) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
923 if (cellFont is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
924 cellFont = new Font [count]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
925 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
926 if (cellFont [index] is font) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
927 if (cellFont [index] !is null && cellFont [index] ==/*eq*/ font) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
928 cellFont [index] = font; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
929 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
930 int modelIndex = parent.columnCount is 0 ? Table.FIRST_COLUMN : parent.columns [index].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
931 auto fontHandle = font !is null ? font.handle : null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
932 OS.gtk_list_store_set1 (parent.modelHandle, handle, modelIndex + Table.CELL_FONT, fontHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
933 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
934 * Bug in GTK. When using fixed-height-mode, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
935 * row changes do not cause the row to be repainted. The fix is to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
936 * invalidate the row when it is cleared. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
937 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
938 if ((parent.style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
939 if (OS.GTK_VERSION >= OS.buildVERSION (2, 3, 2) && OS.GTK_VERSION < OS.buildVERSION (2, 6, 3)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
940 redraw (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
941 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
942 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
943 cached = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
944 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
945 if (font !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
946 bool customDraw = (parent.columnCount is 0) ? parent.firstCustomDraw : parent.columns [index].customDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
947 if (!customDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
948 if ((parent.style & DWT.VIRTUAL) is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
949 auto parentHandle = parent.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
950 GtkTreeViewColumn* column; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
951 if (parent.columnCount > 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
952 column = cast(GtkTreeViewColumn*)parent.columns [index].handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
953 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
954 column = OS.gtk_tree_view_get_column (parentHandle, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
955 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
956 if (column is null) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
957 auto textRenderer = parent.getTextRenderer (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
958 auto imageRenderer = parent.getPixbufRenderer (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
959 display.doCellDataProc( parentHandle, column, cast(GtkCellRenderer*)textRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
960 display.doCellDataProc( parentHandle, column, cast(GtkCellRenderer*)imageRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
961 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
962 if (parent.columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
963 parent.firstCustomDraw = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
964 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
965 parent.columns [index].customDraw = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
966 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
967 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
968 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
969 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
970 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
971 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
972 * Sets the receiver's foreground color to the color specified |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
973 * by the argument, or to the default system color for the item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
974 * if the argument is null. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
975 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
976 * @param color the new color (or null) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
977 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
978 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
979 * <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
980 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
981 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
982 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
983 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
984 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
985 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
986 * @since 2.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
987 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
988 public void setForeground (Color color){ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
989 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
990 if (color !is null && color.isDisposed ()) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
991 DWT.error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
992 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
993 GdkColor* gdkColor = color !is null ? color.handle : null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
994 OS.gtk_list_store_set1 (parent.modelHandle, handle, Table.FOREGROUND_COLUMN, gdkColor); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
995 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
996 * Bug in GTK. When using fixed-height-mode, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
997 * row changes do not cause the row to be repainted. The fix is to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
998 * invalidate the row when it is cleared. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
999 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1000 if ((parent.style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1001 if (OS.GTK_VERSION >= OS.buildVERSION (2, 3, 2) && OS.GTK_VERSION < OS.buildVERSION (2, 6, 3)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1002 redraw (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1003 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1004 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1005 cached = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1006 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1007 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1008 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1009 * Sets the foreground color at the given column index in the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1010 * to the color specified by the argument, or to the default system color for the item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1011 * if the argument is null. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1012 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1013 * @param index the column index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1014 * @param color the new color (or null) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1015 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1016 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1017 * <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1018 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1019 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1020 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1021 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1022 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1023 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1024 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1025 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1026 public void setForeground (int index, Color color){ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1027 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1028 if (color !is null && color.isDisposed ()) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1029 DWT.error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1030 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1031 int count = Math.max (1, parent.getColumnCount ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1032 if (0 > index || index > count - 1) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1033 int modelIndex = parent.columnCount is 0 ? Table.FIRST_COLUMN : parent.columns [index].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1034 GdkColor* gdkColor = color !is null ? color.handle : null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1035 OS.gtk_list_store_set1 (parent.modelHandle, handle, modelIndex + Table.CELL_FOREGROUND, gdkColor); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1036 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1037 * Bug in GTK. When using fixed-height-mode, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1038 * row changes do not cause the row to be repainted. The fix is to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1039 * invalidate the row when it is cleared. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1040 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1041 if ((parent.style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1042 if (OS.GTK_VERSION >= OS.buildVERSION (2, 3, 2) && OS.GTK_VERSION < OS.buildVERSION (2, 6, 3)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1043 redraw (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1044 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1045 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1046 cached = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1047 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1048 if (color !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1049 bool customDraw = (parent.columnCount is 0) ? parent.firstCustomDraw : parent.columns [index].customDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1050 if (!customDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1051 if ((parent.style & DWT.VIRTUAL) is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1052 auto parentHandle = parent.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1053 GtkTreeViewColumn* column; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1054 if (parent.columnCount > 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1055 column = cast(GtkTreeViewColumn*)parent.columns [index].handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1056 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1057 column = OS.gtk_tree_view_get_column (parentHandle, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1058 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1059 if (column is null) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1060 auto textRenderer = parent.getTextRenderer (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1061 auto imageRenderer = parent.getPixbufRenderer (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1062 display.doCellDataProc( parentHandle, column, cast(GtkCellRenderer*)textRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1063 display.doCellDataProc( parentHandle, column, cast(GtkCellRenderer*)imageRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1064 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1065 if (parent.columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1066 parent.firstCustomDraw = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1067 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1068 parent.columns [index].customDraw = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1069 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1070 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1071 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1072 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1073 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1074 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1075 * Sets the grayed state of the checkbox for this item. This state change |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1076 * only applies if the Table was created with the DWT.CHECK style. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1077 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1078 * @param grayed the new grayed state of the checkbox; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1079 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1080 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1081 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1082 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1083 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1084 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1085 public void setGrayed (bool grayed) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1086 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1087 if ((parent.style & DWT.CHECK) is 0) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1088 this.grayed = grayed; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1089 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1090 * GTK+'s "inconsistent" state does not match DWT's concept of grayed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1091 * Render checked+grayed as "inconsistent", unchecked+grayed as blank. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1092 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1093 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1094 OS.gtk_tree_model_get1 (parent.modelHandle, handle, Table.CHECKED_COLUMN, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1095 OS.gtk_list_store_set1 (parent.modelHandle, handle, Table.GRAYED_COLUMN, cast(void*)cast(int)( ptr is null ? false : grayed)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1096 cached = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1097 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1098 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1099 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1100 * Sets the receiver's image at a column. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1101 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1102 * @param index the column index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1103 * @param image the new image |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1104 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1105 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1106 * <li>ERROR_INVALID_ARGUMENT - if the image has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1107 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1108 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1109 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1110 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1111 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1112 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1113 public void setImage (int index, Image image) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1114 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1115 if (image !is null && image.isDisposed ()) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1116 error(DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1117 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1118 int count = Math.max (1, parent.getColumnCount ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1119 if (0 > index || index > count - 1) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1120 void* pixbuf; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1121 if (image !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1122 ImageList imageList = parent.imageList; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1123 if (imageList is null) imageList = parent.imageList = new ImageList (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1124 int imageIndex = imageList.indexOf (image); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1125 if (imageIndex is -1) imageIndex = imageList.add (image); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1126 pixbuf = imageList.getPixbuf (imageIndex); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1127 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1128 int modelIndex = parent.columnCount is 0 ? Table.FIRST_COLUMN : parent.columns [index].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1129 OS.gtk_list_store_set1 (parent.modelHandle, handle, modelIndex + Table.CELL_PIXBUF, pixbuf); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1130 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1131 * Bug in GTK. When using fixed-height-mode, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1132 * row changes do not cause the row to be repainted. The fix is to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1133 * invalidate the row when it is cleared. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1134 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1135 if ((parent.style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1136 if (OS.GTK_VERSION >= OS.buildVERSION (2, 3, 2) && OS.GTK_VERSION < OS.buildVERSION (2, 6, 3)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1137 redraw (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1138 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1139 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1140 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1141 * Bug in GTK. When in fixed height mode, GTK does not recalculate the cell renderer width |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1142 * when the image is changed in the model. The fix is to force it to recalculate the width if |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1143 * more space is required. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1144 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1145 if ((parent.style & DWT.VIRTUAL) !is 0 && parent.currentItem is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1146 if (OS.GTK_VERSION >= OS.buildVERSION (2, 3, 2)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1147 if (image !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1148 auto parentHandle = parent.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1149 auto column = OS.gtk_tree_view_get_column (parentHandle, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1150 int w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1151 auto pixbufRenderer = parent.getPixbufRenderer(column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1152 OS.gtk_tree_view_column_cell_get_position (column, pixbufRenderer, null, &w); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1153 if (w < image.getBounds().width) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1154 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1155 * There is no direct way to clear the cell renderer width so we |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1156 * are relying on the fact that it is done as part of modifying |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1157 * the style. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1158 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1159 auto style = OS.gtk_widget_get_modifier_style (parentHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1160 OS.gtk_widget_modify_style (parentHandle, style); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1161 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1162 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1163 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1164 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1165 cached = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1166 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1167 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1168 public void setImage (Image image) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1169 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1170 setImage (0, image); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1171 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1172 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1173 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1174 * Sets the image for multiple columns in the table. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1175 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1176 * @param images the array of new images |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1177 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1178 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1179 * <li>ERROR_NULL_ARGUMENT - if the array of images is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1180 * <li>ERROR_INVALID_ARGUMENT - if one of the images has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1181 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1182 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1183 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1184 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1185 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1186 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1187 public void setImage (Image [] images) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1188 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1189 if (images is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1190 for (int i=0; i<images.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1191 setImage (i, images [i]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1192 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1193 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1194 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1195 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1196 * Sets the indent of the first column's image, expressed in terms of the image's width. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1197 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1198 * @param indent the new indent |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1199 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1200 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1201 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1202 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1203 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1204 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1205 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1206 * @deprecated this functionality is not supported on most platforms |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1207 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1208 public void setImageIndent (int indent) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1209 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1210 if (indent < 0) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1211 /* Image indent is not supported on GTK */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1212 cached = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1213 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1214 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1215 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1216 * Sets the receiver's text at a column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1217 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1218 * @param index the column index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1219 * @param string the new text |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1220 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1221 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1222 * <li>ERROR_NULL_ARGUMENT - if the text is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1223 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1224 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1225 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1226 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1227 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1228 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1229 public void setText (int index, char[] string) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1230 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1231 if (string is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1232 int count = Math.max (1, parent.getColumnCount ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1233 if (0 > index || index > count - 1) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1234 char* buffer = tango.stdc.stringz.toStringz( string ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1235 int modelIndex = parent.columnCount is 0 ? Table.FIRST_COLUMN : parent.columns [index].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1236 OS.gtk_list_store_set1 (parent.modelHandle, handle, modelIndex + Table.CELL_TEXT, buffer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1237 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1238 * Bug in GTK. When using fixed-height-mode, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1239 * row changes do not cause the row to be repainted. The fix is to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1240 * invalidate the row when it is cleared. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1241 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1242 if ((parent.style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1243 if (OS.GTK_VERSION >= OS.buildVERSION (2, 3, 2) && OS.GTK_VERSION < OS.buildVERSION (2, 6, 3)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1244 redraw (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1245 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1246 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1247 cached = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1248 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1249 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1250 public void setText (char[] string) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1251 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1252 setText (0, string); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1253 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1254 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1255 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1256 * Sets the text for multiple columns in the table. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1257 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1258 * @param strings the array of new strings |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1259 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1260 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1261 * <li>ERROR_NULL_ARGUMENT - if the text is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1262 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1263 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1264 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1265 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1266 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1267 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1268 public void setText (char[] [] strings) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1269 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1270 if (strings is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1271 for (int i=0; i<strings.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1272 char[] string = strings [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1273 if (string !is null) setText (i, string); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1274 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1275 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1276 } |