Mercurial > projects > dwt-linux
annotate dwt/widgets/Table.d @ 213:37c3b9aefbb8
Fix: segv on table columns with alignment
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 06 Apr 2008 22:21:28 +0200 |
parents | 08789b28bdf3 |
children | 380bad9f6852 |
rev | line source |
---|---|
110
126d7fddf14f
Fix: missing overload alias
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
1 /******************************************************************************* |
89
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 |
108 | 10 * Port to the D programming language: |
11 * Frank Benoit <benoit@tionex.de> | |
89
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 module dwt.widgets.Table; |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
16 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 import dwt.DWT; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 import dwt.DWTException; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 import dwt.events.SelectionEvent; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 import dwt.events.SelectionListener; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
21 import dwt.graphics.Color; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 import dwt.graphics.Font; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 import dwt.graphics.GC; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 import dwt.graphics.Image; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
25 import dwt.graphics.Point; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
26 import dwt.graphics.Rectangle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 import dwt.internal.gtk.OS; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 import dwt.widgets.Composite; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 import dwt.widgets.TableItem; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 import dwt.widgets.TableColumn; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
31 import dwt.widgets.Listener; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
32 import dwt.widgets.ImageList; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 import dwt.widgets.Shell; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 import dwt.widgets.Decorations; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
35 import dwt.widgets.Menu; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
36 import dwt.widgets.Display; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
37 import dwt.widgets.ScrollBar; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 import dwt.widgets.Event; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 import dwt.widgets.Control; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
40 import dwt.widgets.TypedListener; |
200
08789b28bdf3
import dwt.dwthelper.utils now explicit
Frank Benoit <benoit@tionex.de>
parents:
152
diff
changeset
|
41 import dwt.dwthelper.utils; |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
43 static import tango.stdc.stringz; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
44 import tango.util.Convert; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
45 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
46 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
47 * Instances of this class implement a selectable user interface |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
48 * object that displays a list of images and strings and issues |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
49 * notification when selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
50 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
51 * The item children that may be added to instances of this class |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
52 * must be of type <code>TableItem</code>. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
53 * </p><p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
54 * Style <code>VIRTUAL</code> is used to create a <code>Table</code> whose |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
55 * <code>TableItem</code>s are to be populated by the client on an on-demand basis |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
56 * instead of up-front. This can provide significant performance improvements for |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
57 * tables that are very large or for which <code>TableItem</code> population is |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
58 * expensive (for example, retrieving values from an external source). |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
59 * </p><p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
60 * Here is an example of using a <code>Table</code> with style <code>VIRTUAL</code>: |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
61 * <code><pre> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
62 * final Table table = new Table (parent, DWT.VIRTUAL | DWT.BORDER); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
63 * table.setItemCount (1000000); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
64 * table.addListener (DWT.SetData, new Listener () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
65 * public void handleEvent (Event event) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
66 * TableItem item = (TableItem) event.item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
67 * int index = table.indexOf (item); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
68 * item.setText ("Item " + index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
69 * System.out.println (item.getText ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
70 * } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
71 * }); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
72 * </pre></code> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
73 * </p><p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
74 * Note that although this class is a subclass of <code>Composite</code>, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
75 * it does not make sense to add <code>Control</code> children to it, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
76 * or set a layout on it. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
77 * </p><p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
78 * <dl> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
79 * <dt><b>Styles:</b></dt> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
80 * <dd>SINGLE, MULTI, CHECK, FULL_SELECTION, HIDE_SELECTION, VIRTUAL</dd> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
81 * <dt><b>Events:</b></dt> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
82 * <dd>Selection, DefaultSelection, SetData, MeasureItem, EraseItem, PaintItem</dd> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
83 * </dl> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
84 * </p><p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
85 * Note: Only one of the styles SINGLE, and MULTI may be specified. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
86 * </p><p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
87 * IMPORTANT: This class is <em>not</em> intended to be subclassed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
88 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
89 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
90 public class Table : Composite { |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
91 |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
92 alias Composite.computeSize computeSize; |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
93 alias Composite.createHandle createHandle; |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
94 alias Composite.dragDetect dragDetect; |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
95 alias Composite.mnemonicHit mnemonicHit; |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
96 alias Composite.mnemonicMatch mnemonicMatch; |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
97 alias Composite.setBackgroundColor setBackgroundColor; |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
98 alias Composite.setBounds setBounds; |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
99 |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
100 CallbackData treeSelectionCallbackData; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
101 GtkWidget* modelHandle, checkRenderer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
102 int itemCount, columnCount, lastIndexOf, sortDirection; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
103 GtkWidget* ignoreCell; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
104 TableItem [] items; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
105 TableColumn [] columns; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
106 TableItem currentItem; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
107 TableColumn sortColumn; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
108 ImageList imageList, headerImageList; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
109 bool firstCustomDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
110 int drawState, drawFlags; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
111 GdkColor* drawForeground; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
112 bool ownerDraw, ignoreSize; |
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 static const int CHECKED_COLUMN = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
115 static const int GRAYED_COLUMN = 1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
116 static const int FOREGROUND_COLUMN = 2; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
117 static const int BACKGROUND_COLUMN = 3; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
118 static const int FONT_COLUMN = 4; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
119 static const int FIRST_COLUMN = FONT_COLUMN + 1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
120 static const int CELL_PIXBUF = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
121 static const int CELL_TEXT = 1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
122 static const int CELL_FOREGROUND = 2; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
123 static const int CELL_BACKGROUND = 3; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
124 static const int CELL_FONT = 4; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
125 static const int CELL_TYPES = CELL_FONT + 1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
126 |
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 * Constructs a new instance of this class given its parent |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
129 * and a style value describing its behavior and appearance. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
130 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
131 * 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
|
132 * class <code>DWT</code> which is applicable to instances of this |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
133 * 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
|
134 * (that is, using the <code>int</code> "|" operator) two or more |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
135 * of those <code>DWT</code> style constants. The class description |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
136 * lists the style constants that are applicable to the class. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
137 * Style bits are also inherited from superclasses. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
138 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
139 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
140 * @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
|
141 * @param style the style of control to construct |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
142 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
143 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
144 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
145 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
146 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
147 * <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
|
148 * <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
|
149 * </ul> |
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 * @see DWT#SINGLE |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
152 * @see DWT#MULTI |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
153 * @see DWT#CHECK |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
154 * @see DWT#FULL_SELECTION |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
155 * @see DWT#HIDE_SELECTION |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
156 * @see DWT#VIRTUAL |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
157 * @see Widget#checkSubclass |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
158 * @see Widget#getStyle |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
159 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
160 public this (Composite parent, int style) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
161 super (parent, checkStyle (style)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
162 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
163 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
164 override void _addListener (int eventType, Listener listener) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
165 super._addListener (eventType, listener); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
166 if (!ownerDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
167 switch (eventType) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
168 case DWT.MeasureItem: |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
169 case DWT.EraseItem: |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
170 case DWT.PaintItem: |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
171 ownerDraw = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
172 recreateRenderers (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
173 break; |
115
52b32f5cb1e0
many file checked for switch default
Frank Benoit <benoit@tionex.de>
parents:
110
diff
changeset
|
174 default: |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
175 } |
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 } |
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 TableItem _getItem (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
180 if ((style & DWT.VIRTUAL) is 0) return items [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
181 if (items [index] !is null) return items [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
182 return items [index] = new TableItem (this, DWT.NONE, index, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
183 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
184 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
185 static int checkStyle (int style) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
186 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
187 * To be compatible with Windows, force the H_SCROLL |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
188 * and V_SCROLL style bits. On Windows, it is not |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
189 * possible to create a table without scroll bars. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
190 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
191 style |= DWT.H_SCROLL | DWT.V_SCROLL; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
192 /* GTK is always FULL_SELECTION */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
193 style |= DWT.FULL_SELECTION; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
194 return checkBits (style, DWT.SINGLE, DWT.MULTI, 0, 0, 0, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
195 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
196 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
197 override void cellDataProc ( |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
198 GtkTreeViewColumn *tree_column, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
199 GtkCellRenderer *cell, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
200 GtkTreeModel *tree_model, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
201 GtkTreeIter *iter, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
202 void* data) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
203 { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
204 if (cell is cast(GtkCellRenderer*)ignoreCell) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
205 auto path = OS.gtk_tree_model_get_path (tree_model, iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
206 auto index = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
207 TableItem item = _getItem (index[0]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
208 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
209 if (item !is null) OS.g_object_set_qdata (cast(GObject*)cell, Display.SWT_OBJECT_INDEX2, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
210 bool isPixbuf = OS.GTK_IS_CELL_RENDERER_PIXBUF (cast(GTypeInstance*)cell); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
211 if (!(isPixbuf || OS.GTK_IS_CELL_RENDERER_TEXT (cast(GTypeInstance*)cell))) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
212 int modelIndex = -1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
213 bool customDraw = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
214 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
215 modelIndex = Table.FIRST_COLUMN; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
216 customDraw = firstCustomDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
217 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
218 TableColumn column = cast(TableColumn) display.getWidget (cast(GtkWidget*)tree_column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
219 if (column !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
220 modelIndex = column.modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
221 customDraw = column.customDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
222 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
223 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
224 if (modelIndex is -1) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
225 bool setData = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
226 if ((style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
227 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
228 * Feature in GTK. On GTK before 2.4, fixed_height_mode is not |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
229 * supported, and the tree asks for the data of all items. The |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
230 * fix is to only provide the data if the row is visible. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
231 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
232 if (OS.GTK_VERSION < OS.buildVERSION (2, 3, 2)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
233 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
234 GdkRectangle visible; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
235 OS.gtk_tree_view_get_visible_rect (handle, &visible); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
236 GdkRectangle area; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
237 path = OS.gtk_tree_model_get_path (tree_model, iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
238 OS.gtk_tree_view_get_cell_area (handle, path, tree_column, &area); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
239 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
240 if (area.y + area.height < 0 || area.y + visible.y > visible.y + visible.height) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
241 /* Give an image from the image list to make sure the row has |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
242 * the correct height. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
243 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
244 if (imageList !is null && imageList.pixbufs.length > 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
245 if (isPixbuf) OS.g_object_set1 (cell, OS.pixbuf.ptr, cast(int)imageList.pixbufs [0] ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
246 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
247 return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
248 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
249 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
250 if (!item.cached) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
251 lastIndexOf = index[0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
252 setData = checkData (item); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
253 } |
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 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
256 if (setData) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
257 if (isPixbuf) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
258 OS.gtk_tree_model_get1 (tree_model, iter, modelIndex + CELL_PIXBUF, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
259 OS.g_object_set1 (cell, OS.pixbuf.ptr, cast(int)ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
260 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
261 OS.gtk_tree_model_get1 (tree_model, iter, modelIndex + CELL_TEXT, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
262 if (ptr !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
263 OS.g_object_set1 (cell, OS.text.ptr, cast(int)ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
264 OS.g_free (ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
265 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
266 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
267 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
268 if (customDraw) { |
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 * Bug on GTK. Gtk renders the background on top of the checkbox and pixbuf. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
271 * This only happens in version 2.2.1 and earlier. The fix is not to set the background. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
272 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
273 if (OS.GTK_VERSION > OS.buildVERSION (2, 2, 1)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
274 if (!ownerDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
275 ptr = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
276 OS.gtk_tree_model_get1 (tree_model, iter, modelIndex + CELL_BACKGROUND, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
277 if (ptr !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
278 OS.g_object_set1 (cell, OS.cell_background_gdk.ptr, cast(int)ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
279 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
280 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
281 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
282 if (!isPixbuf) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
283 ptr = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
284 OS.gtk_tree_model_get1 (tree_model, iter, modelIndex + CELL_FOREGROUND, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
285 if (ptr !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
286 OS.g_object_set1 (cell, OS.foreground_gdk.ptr, cast(int)ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
287 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
288 ptr = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
289 OS.gtk_tree_model_get1 (tree_model, iter, modelIndex + CELL_FONT, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
290 if (ptr !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
291 OS.g_object_set1 (cell, OS.font_desc.ptr, cast(int)ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
292 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
293 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
294 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
295 if (setData) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
296 ignoreCell = cast(GtkWidget*)cell; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
297 setScrollWidth (tree_column, item); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
298 ignoreCell = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
299 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
300 return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
301 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
302 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
303 bool checkData (TableItem item) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
304 if (item.cached) return true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
305 if ((style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
306 item.cached = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
307 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
308 event.item = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
309 event.index = indexOf (item); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
310 int mask = OS.G_SIGNAL_MATCH_DATA | OS.G_SIGNAL_MATCH_ID; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
311 int signal_id = OS.g_signal_lookup (OS.row_changed.ptr, OS.gtk_tree_model_get_type ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
312 OS.g_signal_handlers_block_matched (modelHandle, mask, signal_id, 0, null, null, handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
313 currentItem = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
314 sendEvent (DWT.SetData, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
315 //widget could be disposed at this point |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
316 currentItem = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
317 if (isDisposed ()) return false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
318 OS.g_signal_handlers_unblock_matched (modelHandle, mask, signal_id, 0, null, null, handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
319 if (item.isDisposed ()) return false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
320 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
321 return true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
322 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
323 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
324 protected override void checkSubclass () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
325 if (!isValidSubclass ()) error (DWT.ERROR_INVALID_SUBCLASS); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
326 } |
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 * Adds the listener to the collection of listeners who will |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
330 * be notified when the user changes the receiver's selection, by sending |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
331 * it one of the messages defined in the <code>SelectionListener</code> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
332 * interface. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
333 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
334 * When <code>widgetSelected</code> is called, the item field of the event object is valid. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
335 * If the receiver has the <code>DWT.CHECK</code> style and the check selection changes, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
336 * the event object detail field contains the value <code>DWT.CHECK</code>. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
337 * <code>widgetDefaultSelected</code> is typically called when an item is double-clicked. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
338 * The item field of the event object is valid for default selection, but the detail field is not used. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
339 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
340 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
341 * @param listener the listener which should be notified when the user changes the receiver's selection |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
342 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
343 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
344 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
345 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
346 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
347 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
348 * <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
|
349 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
350 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
351 * @see SelectionListener |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
352 * @see #removeSelectionListener |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
353 * @see SelectionEvent |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
354 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
355 public void addSelectionListener (SelectionListener listener) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
356 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
357 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
358 TypedListener typedListener = new TypedListener (listener); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
359 addListener (DWT.Selection, typedListener); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
360 addListener (DWT.DefaultSelection, typedListener); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
361 } |
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 int calculateWidth (GtkTreeViewColumn* column, GtkTreeIter* iter) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
364 OS.gtk_tree_view_column_cell_set_cell_data (column, modelHandle, iter, false, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
365 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
366 * Bug in GTK. The width calculated by gtk_tree_view_column_cell_get_size() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
367 * always grows in size regardless of the text or images in the table. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
368 * The fix is to determine the column width from the cell renderers. |
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 // Code intentionally commented |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
371 //int [] width = new int [1]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
372 //OS.gtk_tree_view_column_cell_get_size (column, null, null, null, width, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
373 //return width [0]; |
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 int width = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
376 int w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
377 OS.gtk_widget_style_get1(handle, OS.focus_line_width.ptr, &w ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
378 width += 2 * w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
379 auto list = OS.gtk_tree_view_column_get_cell_renderers (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
380 if (list is null) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
381 auto temp = list; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
382 while (temp !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
383 auto renderer = OS.g_list_data (temp); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
384 if (renderer !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
385 OS.gtk_cell_renderer_get_size (renderer, handle, null, null, null, &w, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
386 width += w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
387 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
388 temp = OS.g_list_next (temp); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
389 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
390 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
391 return width; |
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 * Clears the item at the given zero-relative index in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
396 * The text, icon and other attributes of the item are set to the default |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
397 * value. If the table was created with the <code>DWT.VIRTUAL</code> style, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
398 * these attributes are requested again as needed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
399 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
400 * @param index the index of the item to clear |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
401 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
402 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
403 * <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the list minus 1 (inclusive)</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
404 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
405 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
406 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
407 * <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
|
408 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
409 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
410 * @see DWT#VIRTUAL |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
411 * @see DWT#SetData |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
412 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
413 * @since 3.0 |
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 public void clear (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
416 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
417 if (!(0 <= index && index < itemCount)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
418 error(DWT.ERROR_INVALID_RANGE); |
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 TableItem item = items [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
421 if (item !is null) item.clear (); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
424 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
425 * Removes the items from the receiver which are between the given |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
426 * zero-relative start and end indices (inclusive). The text, icon |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
427 * and other attributes of the items are set to their default values. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
428 * If the table was created with the <code>DWT.VIRTUAL</code> style, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
429 * these attributes are requested again as needed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
430 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
431 * @param start the start index of the item to clear |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
432 * @param end the end index of the item to clear |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
433 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
434 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
435 * <li>ERROR_INVALID_RANGE - if either the start or end are not between 0 and the number of elements in the list minus 1 (inclusive)</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
436 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
437 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
438 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
439 * <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
|
440 * </ul> |
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 * @see DWT#VIRTUAL |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
443 * @see DWT#SetData |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
444 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
445 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
446 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
447 public void clear (int start, int end) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
448 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
449 if (start > end) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
450 if (!(0 <= start && start <= end && end < itemCount)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
451 error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
452 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
453 if (start is 0 && end is itemCount - 1) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
454 clearAll(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
455 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
456 for (int i=start; i<=end; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
457 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
458 if (item !is null) item.clear(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
459 } |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
463 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
464 * Clears the items at the given zero-relative indices in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
465 * The text, icon and other attributes of the items are set to their default |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
466 * values. If the table was created with the <code>DWT.VIRTUAL</code> style, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
467 * these attributes are requested again as needed. |
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 * @param indices the array of indices of the items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
470 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
471 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
472 * <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the list minus 1 (inclusive)</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
473 * <li>ERROR_NULL_ARGUMENT - if the indices array is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
474 * </ul> |
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 * @see DWT#VIRTUAL |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
481 * @see DWT#SetData |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
482 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
483 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
484 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
485 public void clear (int [] indices) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
486 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
487 if (indices is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
488 if (indices.length is 0) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
489 for (int i=0; i<indices.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
490 if (!(0 <= indices [i] && indices [i] < itemCount)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
491 error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
492 } |
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 for (int i=0; i<indices.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
495 TableItem item = items [indices [i]]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
496 if (item !is null) item.clear(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
497 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
498 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
499 |
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 * Clears all the items in the receiver. The text, icon and other |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
502 * attributes of the items are set to their default values. If the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
503 * table was created with the <code>DWT.VIRTUAL</code> style, these |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
504 * attributes are requested again as needed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
505 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
506 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
507 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
508 * <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
|
509 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
510 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
511 * @see DWT#VIRTUAL |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
512 * @see DWT#SetData |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
513 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
514 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
515 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
516 public void clearAll () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
517 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
518 for (int i=0; i<itemCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
519 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
520 if (item !is null) item.clear(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
521 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
522 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
523 |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
524 public override Point computeSize (int wHint, int hHint, bool changed) { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
525 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
526 if (wHint !is DWT.DEFAULT && wHint < 0) wHint = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
527 if (hHint !is DWT.DEFAULT && hHint < 0) hHint = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
528 Point size = computeNativeSize (handle, wHint, hHint, changed); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
529 Rectangle trim = computeTrim (0, 0, size.x, size.y); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
530 size.x = trim.width; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
531 size.y = trim.height; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
532 return size; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
533 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
534 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
535 void createColumn (TableColumn column, int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
536 int modelIndex = FIRST_COLUMN; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
537 if (columnCount !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
538 int modelLength = OS.gtk_tree_model_get_n_columns (modelHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
539 bool [] usedColumns = new bool [modelLength]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
540 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
541 int columnIndex = columns [i].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
542 for (int j = 0; j < CELL_TYPES; j++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
543 usedColumns [columnIndex + j] = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
544 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
545 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
546 while (modelIndex < modelLength) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
547 if (!usedColumns [modelIndex]) break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
548 modelIndex++; |
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 if (modelIndex is modelLength) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
551 auto oldModel = modelHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
552 auto types = getColumnTypes (columnCount + 4); // grow by 4 rows at a time |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
553 auto newModel = OS.gtk_list_store_newv (types.length, types.ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
554 if (newModel is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
555 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
556 for (int i=0; i<itemCount; i++) { |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
123
diff
changeset
|
557 GtkTreeIter* newItem = cast(GtkTreeIter*)OS.g_malloc( GtkTreeIter.sizeof ); |
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
123
diff
changeset
|
558 if (newItem is null) error (DWT.ERROR_NO_HANDLES); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
559 OS.gtk_list_store_append (newModel, newItem); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
560 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
561 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
562 auto oldItem = item.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
563 for (int j=0; j<modelLength; j++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
564 OS.gtk_tree_model_get1 (oldModel, oldItem, j, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
565 OS.gtk_list_store_set1 (newModel, newItem, j, ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
566 if (types [j] is OS.G_TYPE_STRING ()) OS.g_free ((ptr)); |
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 OS.gtk_list_store_remove (oldModel, oldItem); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
569 OS.g_free (oldItem); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
570 item.handle = cast(GtkWidget*)newItem; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
571 } else { |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
123
diff
changeset
|
572 OS.g_free (newItem); |
89
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 OS.gtk_tree_view_set_model (handle, newModel); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
576 OS.g_object_unref (oldModel); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
577 modelHandle = cast(GtkWidget*)newModel; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
578 } |
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 auto columnHandle = OS.gtk_tree_view_column_new (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
581 if (columnHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
582 if (index is 0 && columnCount > 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
583 TableColumn checkColumn = columns [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
584 createRenderers (cast(GtkTreeViewColumn*)checkColumn.handle, checkColumn.modelIndex, false, checkColumn.style); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
585 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
586 createRenderers ( columnHandle, modelIndex, index is 0, column is null ? 0 : column.style); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
587 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
588 * Use GTK_TREE_VIEW_COLUMN_GROW_ONLY on GTK versions < 2.3.2 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
589 * because fixed_height_mode is not supported. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
590 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
591 bool useVirtual = (style & DWT.VIRTUAL) !is 0 && OS.GTK_VERSION >= OS.buildVERSION (2, 3, 2); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
592 if (!useVirtual && columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
593 OS.gtk_tree_view_column_set_sizing (columnHandle, OS.GTK_TREE_VIEW_COLUMN_GROW_ONLY); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
594 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
595 OS.gtk_tree_view_column_set_sizing (columnHandle, OS.GTK_TREE_VIEW_COLUMN_FIXED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
596 if (columnCount !is 0) OS.gtk_tree_view_column_set_visible (columnHandle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
597 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
598 OS.gtk_tree_view_column_set_resizable (columnHandle, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
599 OS.gtk_tree_view_column_set_clickable (columnHandle, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
600 OS.gtk_tree_view_column_set_min_width (columnHandle, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
601 OS.gtk_tree_view_insert_column (handle, columnHandle, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
602 if (column !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
603 column.handle = cast(GtkWidget*)columnHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
604 column.modelIndex = modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
605 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
606 /* Disable searching when using VIRTUAL */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
607 if ((style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
608 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
609 * Bug in GTK. Until GTK 2.6.5, calling gtk_tree_view_set_enable_search(FALSE) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
610 * would prevent the user from being able to type in text to search the tree. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
611 * After 2.6.5, GTK introduced Ctrl+F as being the key binding for interactive |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
612 * search. This meant that even if FALSE was passed to enable_search, the user |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
613 * can still bring up the search pop up using the keybinding. GTK also introduced |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
614 * the notion of passing a -1 to gtk_set_search_column to disable searching |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
615 * (including the search key binding). The fix is to use the right calls |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
616 * for the right version. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
617 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
618 if (OS.GTK_VERSION >= OS.buildVERSION (2, 6, 5)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
619 OS.gtk_tree_view_set_search_column (handle, -1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
620 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
621 OS.gtk_tree_view_set_enable_search (handle, false); |
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 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
624 /* Set the search column whenever the model changes */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
625 int firstColumn = columnCount is 0 ? FIRST_COLUMN : columns [0].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
626 OS.gtk_tree_view_set_search_column (handle, firstColumn + CELL_TEXT); |
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
629 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
630 override void createHandle (int index) { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
631 state |= HANDLE; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
632 fixedHandle = cast(GtkWidget*)OS.g_object_new (display.gtk_fixed_get_type (), null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
633 if (fixedHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
634 OS.gtk_fixed_set_has_window (fixedHandle, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
635 scrolledHandle = cast(GtkWidget*)OS.gtk_scrolled_window_new (null, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
636 if (scrolledHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
637 auto types = getColumnTypes (1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
638 modelHandle = cast(GtkWidget*)OS.gtk_list_store_newv (types.length, types.ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
639 if (modelHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
640 handle = cast(GtkWidget*)OS.gtk_tree_view_new_with_model (modelHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
641 if (handle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
642 if ((style & DWT.CHECK) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
643 checkRenderer = cast(GtkWidget*)OS.gtk_cell_renderer_toggle_new (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
644 if (checkRenderer is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
645 OS.g_object_ref (checkRenderer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
646 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
647 createColumn (null, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
648 OS.gtk_container_add (fixedHandle, scrolledHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
649 OS.gtk_container_add (scrolledHandle, handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
650 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
651 int mode = (style & DWT.MULTI) !is 0 ? OS.GTK_SELECTION_MULTIPLE : OS.GTK_SELECTION_BROWSE; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
652 auto selectionHandle = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
653 OS.gtk_tree_selection_set_mode (selectionHandle, mode); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
654 OS.gtk_tree_view_set_headers_visible (handle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
655 int hsp = (style & DWT.H_SCROLL) !is 0 ? OS.GTK_POLICY_AUTOMATIC : OS.GTK_POLICY_NEVER; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
656 int vsp = (style & DWT.V_SCROLL) !is 0 ? OS.GTK_POLICY_AUTOMATIC : OS.GTK_POLICY_NEVER; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
657 OS.gtk_scrolled_window_set_policy (scrolledHandle, hsp, vsp); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
658 if ((style & DWT.BORDER) !is 0) OS.gtk_scrolled_window_set_shadow_type (scrolledHandle, OS.GTK_SHADOW_ETCHED_IN); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
659 /* Disable searching when using VIRTUAL */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
660 if ((style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
661 /* The fixed_height_mode property only exists in GTK 2.3.2 and greater */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
662 if (OS.GTK_VERSION >= OS.buildVERSION (2, 3, 2)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
663 OS.g_object_set1 (handle, OS.fixed_height_mode.ptr, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
664 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
665 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
666 * Bug in GTK. Until GTK 2.6.5, calling gtk_tree_view_set_enable_search(FALSE) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
667 * would prevent the user from being able to type in text to search the tree. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
668 * After 2.6.5, GTK introduced Ctrl+F as being the key binding for interactive |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
669 * search. This meant that even if FALSE was passed to enable_search, the user |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
670 * can still bring up the search pop up using the keybinding. GTK also introduced |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
671 * the notion of passing a -1 to gtk_set_search_column to disable searching |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
672 * (including the search key binding). The fix is to use the right calls |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
673 * for the right version. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
674 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
675 if (OS.GTK_VERSION >= OS.buildVERSION (2, 6, 5)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
676 OS.gtk_tree_view_set_search_column (handle, -1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
677 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
678 OS.gtk_tree_view_set_enable_search (handle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
679 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
680 } |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
683 void createItem (TableColumn column, int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
684 if (!(0 <= index && index <= columnCount)) error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
685 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
686 column.handle = cast(GtkWidget*)OS.gtk_tree_view_get_column (handle, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
687 OS.gtk_tree_view_column_set_sizing (column.handle, OS.GTK_TREE_VIEW_COLUMN_FIXED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
688 OS.gtk_tree_view_column_set_visible (column.handle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
689 column.modelIndex = FIRST_COLUMN; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
690 createRenderers (cast(GtkTreeViewColumn*)column.handle, column.modelIndex, true, column.style); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
691 column.customDraw = firstCustomDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
692 firstCustomDraw = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
693 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
694 createColumn (column, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
695 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
696 auto boxHandle = OS.gtk_hbox_new (false, 3); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
697 if (boxHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
698 auto labelHandle = OS.gtk_label_new_with_mnemonic (null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
699 if (labelHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
700 auto imageHandle = OS.gtk_image_new (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
701 if (imageHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
702 OS.gtk_container_add (boxHandle, imageHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
703 OS.gtk_container_add (boxHandle, labelHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
704 OS.gtk_widget_show (boxHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
705 OS.gtk_widget_show (labelHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
706 column.labelHandle = labelHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
707 column.imageHandle = imageHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
708 OS.gtk_tree_view_column_set_widget (column.handle, boxHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
709 auto widget = OS.gtk_widget_get_parent (boxHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
710 while (widget !is handle) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
711 if (OS.GTK_IS_BUTTON (cast(GTypeInstance*)widget)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
712 column.buttonHandle = widget; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
713 break; |
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 widget = OS.gtk_widget_get_parent (widget); |
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 if (columnCount is columns.length) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
718 TableColumn [] newColumns = new TableColumn [columns.length + 4]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
719 System.arraycopy (columns, 0, newColumns, 0, columns.length); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
720 columns = newColumns; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
721 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
722 System.arraycopy (columns, index, columns, index + 1, columnCount++ - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
723 columns [index] = column; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
724 if ((state & FONT) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
725 column.setFontDescription (getFontDescription ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
726 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
727 if (columnCount >= 1) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
728 for (int i=0; i<itemCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
729 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
730 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
731 Font [] cellFont = item.cellFont; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
732 if (cellFont !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
733 Font [] temp = new Font [columnCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
734 System.arraycopy (cellFont, 0, temp, 0, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
735 System.arraycopy (cellFont, index, temp, index+1, columnCount-index-1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
736 item.cellFont = temp; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
737 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
738 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
739 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
740 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
741 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
742 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
743 void createItem (TableItem item, int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
744 if (!(0 <= index && index <= itemCount)) error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
745 if (itemCount is items.length) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
746 int length = drawCount is 0 ? items.length + 4 : Math.max (4, items.length * 3 / 2); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
747 TableItem [] newItems = new TableItem [length]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
748 System.arraycopy (items, 0, newItems, 0, items.length); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
749 items = newItems; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
750 } |
123 | 751 item.handle = cast(GtkWidget*) OS.g_malloc( GtkTreeIter.sizeof ); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
752 if (item.handle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
753 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
754 * Feature in GTK. It is much faster to append to a list store |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
755 * than to insert at the end using gtk_list_store_insert(). |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
756 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
757 if (index is itemCount) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
758 OS.gtk_list_store_append (modelHandle, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
759 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
760 OS.gtk_list_store_insert (modelHandle, item.handle, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
761 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
762 System.arraycopy (items, index, items, index + 1, itemCount++ - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
763 items [index] = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
764 } |
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 void createRenderers (GtkTreeViewColumn* columnHandle, int modelIndex, bool check, int columnStyle) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
767 OS.gtk_tree_view_column_clear (columnHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
768 if ((style & DWT.CHECK) !is 0 && check) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
769 OS.gtk_tree_view_column_pack_start (columnHandle, checkRenderer, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
770 OS.gtk_tree_view_column_add_attribute (columnHandle, checkRenderer, OS.active.ptr, CHECKED_COLUMN); |
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 * Feature in GTK. The inconsistent property only exists in GTK 2.2.x. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
773 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
774 if (OS.GTK_VERSION >= OS.buildVERSION (2, 2, 0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
775 OS.gtk_tree_view_column_add_attribute (columnHandle, checkRenderer, OS.inconsistent.ptr, GRAYED_COLUMN); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
776 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
777 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
778 * Bug in GTK. GTK renders the background on top of the checkbox. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
779 * This only happens in version 2.2.1 and earlier. The fix is not to set the background. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
780 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
781 if (OS.GTK_VERSION > OS.buildVERSION (2, 2, 1)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
782 if (!ownerDraw) OS.gtk_tree_view_column_add_attribute (columnHandle, checkRenderer, OS.cell_background_gdk.ptr, BACKGROUND_COLUMN); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
783 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
784 if (ownerDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
785 display.doCellDataProc( handle, cast(GtkTreeViewColumn*)columnHandle, cast(GtkCellRenderer*)checkRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
786 OS.g_object_set_qdata (cast(GObject*)checkRenderer, Display.SWT_OBJECT_INDEX1, columnHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
787 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
788 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
789 auto pixbufRenderer = ownerDraw ? cast(GtkCellRenderer*)OS.g_object_new (display.gtk_cell_renderer_pixbuf_get_type (), null) : OS.gtk_cell_renderer_pixbuf_new (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
790 if (pixbufRenderer is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
791 auto textRenderer = ownerDraw ? cast(GtkCellRenderer*)OS.g_object_new (display.gtk_cell_renderer_text_get_type (), null) : OS.gtk_cell_renderer_text_new (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
792 if (textRenderer is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
793 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
794 if (ownerDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
795 OS.g_object_set_qdata (cast(GObject*)pixbufRenderer, Display.SWT_OBJECT_INDEX1, columnHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
796 OS.g_object_set_qdata (cast(GObject*)textRenderer, Display.SWT_OBJECT_INDEX1, columnHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
797 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
798 |
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 * Feature in GTK. When a tree view column contains only one activatable |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
801 * cell renderer such as a toggle renderer, mouse clicks anywhere in a cell |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
802 * activate that renderer. The workaround is to set a second cell renderer |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
803 * to be activatable. |
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 if ((style & DWT.CHECK) !is 0 && check) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
806 OS.g_object_set1 (pixbufRenderer, OS.mode.ptr, OS.GTK_CELL_RENDERER_MODE_ACTIVATABLE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
807 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
808 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
809 /* Set alignment */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
810 if ((columnStyle & DWT.RIGHT) !is 0) { |
213
37c3b9aefbb8
Fix: segv on table columns with alignment
Frank Benoit <benoit@tionex.de>
parents:
200
diff
changeset
|
811 OS.g_object_set1_float(textRenderer, OS.xalign.ptr, 1.0f ); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
812 OS.gtk_tree_view_column_pack_end (columnHandle, textRenderer, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
813 OS.gtk_tree_view_column_pack_end (columnHandle, pixbufRenderer, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
814 OS.gtk_tree_view_column_set_alignment (columnHandle, 1f); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
815 } else if ((columnStyle & DWT.CENTER) !is 0) { |
213
37c3b9aefbb8
Fix: segv on table columns with alignment
Frank Benoit <benoit@tionex.de>
parents:
200
diff
changeset
|
816 OS.g_object_set1_float(textRenderer, OS.xalign.ptr, 0.5f ); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
817 OS.gtk_tree_view_column_pack_start (columnHandle, pixbufRenderer, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
818 OS.gtk_tree_view_column_pack_end (columnHandle, textRenderer, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
819 OS.gtk_tree_view_column_set_alignment (columnHandle, 0.5f); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
820 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
821 OS.gtk_tree_view_column_pack_start (columnHandle, pixbufRenderer, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
822 OS.gtk_tree_view_column_pack_start (columnHandle, textRenderer, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
823 OS.gtk_tree_view_column_set_alignment (columnHandle, 0f); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
824 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
825 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
826 /* Add attributes */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
827 OS.gtk_tree_view_column_add_attribute (columnHandle, pixbufRenderer, OS.pixbuf.ptr, modelIndex + CELL_PIXBUF); |
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 * Bug on GTK. Gtk renders the background on top of the pixbuf. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
830 * This only happens in version 2.2.1 and earlier. The fix is not to set the background. |
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 if (OS.GTK_VERSION > OS.buildVERSION (2, 2, 1)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
833 if (!ownerDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
834 OS.gtk_tree_view_column_add_attribute (columnHandle, pixbufRenderer, OS.cell_background_gdk.ptr, BACKGROUND_COLUMN); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
835 OS.gtk_tree_view_column_add_attribute (columnHandle, textRenderer, OS.cell_background_gdk.ptr, BACKGROUND_COLUMN); |
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
838 OS.gtk_tree_view_column_add_attribute (columnHandle, textRenderer, OS.text.ptr, modelIndex + CELL_TEXT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
839 OS.gtk_tree_view_column_add_attribute (columnHandle, textRenderer, OS.foreground_gdk.ptr, FOREGROUND_COLUMN); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
840 OS.gtk_tree_view_column_add_attribute (columnHandle, textRenderer, OS.font_desc.ptr, FONT_COLUMN); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
841 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
842 bool customDraw = firstCustomDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
843 if (columnCount !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
844 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
845 if (columns [i].handle is cast(GtkWidget*)columnHandle) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
846 customDraw = columns [i].customDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
847 break; |
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
850 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
851 if ((style & DWT.VIRTUAL) !is 0 || customDraw || ownerDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
852 display.doCellDataProc( handle, cast(GtkTreeViewColumn*)columnHandle, cast(GtkCellRenderer*)textRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
853 display.doCellDataProc( handle, cast(GtkTreeViewColumn*)columnHandle, cast(GtkCellRenderer*)pixbufRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
854 } |
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 override void createWidget (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
858 super.createWidget (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
859 items = new TableItem [4]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
860 columns = new TableColumn [4]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
861 itemCount = columnCount = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
862 } |
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 GdkColor* defaultBackground () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
865 return display.COLOR_LIST_BACKGROUND; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
866 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
867 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
868 GdkColor* defaultForeground () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
869 return display.COLOR_LIST_FOREGROUND; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
870 } |
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 override void deregister () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
873 super.deregister (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
874 display.removeWidget ( cast(GtkWidget*)OS.gtk_tree_view_get_selection (handle)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
875 if (checkRenderer !is null) display.removeWidget (checkRenderer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
876 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
877 |
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 * Deselects the item at the given zero-relative index in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
880 * If the item at the index was already deselected, it remains |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
881 * deselected. Indices that are out of range are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
882 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
883 * @param index the index of the item to deselect |
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 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
886 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
887 * <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
|
888 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
889 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
890 public void deselect (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
891 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
892 if (index < 0 || index >= itemCount) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
893 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
894 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
895 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
896 OS.gtk_tree_selection_unselect_iter (selection, _getItem (index).handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
897 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
898 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
899 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
900 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
901 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
902 * Deselects the items at the given zero-relative indices in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
903 * If the item at the given zero-relative index in the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
904 * is selected, it is deselected. If the item at the index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
905 * was not selected, it remains deselected. The range of the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
906 * indices is inclusive. Indices that are out of range are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
907 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
908 * @param start the start index of the items to deselect |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
909 * @param end the end index of the items to deselect |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
910 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
911 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
912 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
913 * <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
|
914 * </ul> |
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 deselect (int start, int end) { |
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 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
919 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
920 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
921 for (int index=start; index<=end; index++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
922 if (index < 0 || index >= itemCount) continue; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
923 OS.gtk_tree_selection_unselect_iter (selection, _getItem (index).handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
924 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
925 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
926 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
927 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
928 |
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 * Deselects the items at the given zero-relative indices in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
931 * If the item at the given zero-relative index in the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
932 * is selected, it is deselected. If the item at the index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
933 * was not selected, it remains deselected. Indices that are out |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
934 * of range and duplicate indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
935 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
936 * @param indices the array of indices for the items to deselect |
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 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
939 * <li>ERROR_NULL_ARGUMENT - if the set of indices is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
940 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
941 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
942 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
943 * <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
|
944 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
945 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
946 public void deselect (int [] indices) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
947 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
948 if (indices is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
949 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
950 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
951 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
952 for (int i=0; i<indices.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
953 int index = indices[i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
954 if (index < 0 || index >= itemCount) continue; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
955 OS.gtk_tree_selection_unselect_iter (selection, _getItem (index).handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
956 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
957 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
958 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
959 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
960 |
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 * Deselects all selected items in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
963 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
964 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
965 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
966 * <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
|
967 * </ul> |
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 public void deselectAll () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
970 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
971 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
972 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
973 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
974 OS.gtk_tree_selection_unselect_all (selection); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
975 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
976 if (fixColumn) hideFirstColumn (); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
979 void destroyItem (TableColumn column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
980 int index = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
981 while (index < columnCount) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
982 if (columns [index] is column) break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
983 index++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
984 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
985 if (index is columnCount) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
986 auto columnHandle = column.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
987 if (columnCount is 1) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
988 firstCustomDraw = column.customDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
989 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
990 System.arraycopy (columns, index + 1, columns, index, --columnCount - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
991 columns [columnCount] = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
992 OS.gtk_tree_view_remove_column (handle, columnHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
993 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
994 auto oldModel = modelHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
995 auto types = getColumnTypes (1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
996 auto newModel = OS.gtk_list_store_newv (types.length, types.ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
997 if (newModel is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
998 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
999 for (int i=0; i<itemCount; i++) { |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
123
diff
changeset
|
1000 GtkTreeIter* newItem = cast(GtkTreeIter*) OS.g_malloc( GtkTreeIter.sizeof ); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1001 if (newItem is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1002 OS.gtk_list_store_append (newModel, newItem); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1003 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1004 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1005 auto oldItem = item.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1006 for (int j=0; j<FIRST_COLUMN; j++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1007 OS.gtk_tree_model_get1 (oldModel, oldItem, j, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1008 OS.gtk_list_store_set1 (newModel, newItem, j, ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1009 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1010 OS.gtk_tree_model_get1 (oldModel, oldItem, column.modelIndex + CELL_PIXBUF, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1011 OS.gtk_list_store_set1 (newModel, newItem, FIRST_COLUMN + CELL_PIXBUF, ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1012 OS.gtk_tree_model_get1 (oldModel, oldItem, column.modelIndex + CELL_TEXT, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1013 OS.gtk_list_store_set1 (newModel, newItem, FIRST_COLUMN + CELL_TEXT, ptr ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1014 OS.g_free (ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1015 OS.gtk_tree_model_get1 (oldModel, oldItem, column.modelIndex + CELL_FOREGROUND, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1016 OS.gtk_list_store_set1 (newModel, newItem, FIRST_COLUMN + CELL_FOREGROUND, ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1017 OS.gtk_tree_model_get1 (oldModel, oldItem, column.modelIndex + CELL_BACKGROUND, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1018 OS.gtk_list_store_set1 (newModel, newItem, FIRST_COLUMN + CELL_BACKGROUND, ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1019 OS.gtk_tree_model_get1 (oldModel, oldItem, column.modelIndex + CELL_FONT, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1020 OS.gtk_list_store_set1 (newModel, newItem, FIRST_COLUMN + CELL_FONT, ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1021 OS.gtk_list_store_remove (oldModel, oldItem); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1022 OS.g_free (oldItem); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1023 item.handle = cast(GtkWidget*) newItem; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1024 } else { |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
123
diff
changeset
|
1025 OS.g_free( newItem ); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1026 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1027 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1028 OS.gtk_tree_view_set_model (handle, newModel); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1029 OS.g_object_unref (oldModel); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1030 modelHandle = cast(GtkWidget*)newModel; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1031 createColumn (null, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1032 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1033 for (int i=0; i<itemCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1034 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1035 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1036 auto iter = item.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1037 int modelIndex = column.modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1038 OS.gtk_list_store_set1 (modelHandle, iter, modelIndex + CELL_PIXBUF, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1039 OS.gtk_list_store_set1 (modelHandle, iter, modelIndex + CELL_TEXT, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1040 OS.gtk_list_store_set1 (modelHandle, iter, modelIndex + CELL_FOREGROUND, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1041 OS.gtk_list_store_set1 (modelHandle, iter, modelIndex + CELL_BACKGROUND, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1042 OS.gtk_list_store_set1 (modelHandle, iter, modelIndex + CELL_FONT, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1043 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1044 Font [] cellFont = item.cellFont; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1045 if (cellFont !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1046 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1047 item.cellFont = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1048 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1049 Font [] temp = new Font [columnCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1050 System.arraycopy (cellFont, 0, temp, 0, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1051 System.arraycopy (cellFont, index + 1, temp, index, columnCount - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1052 item.cellFont = temp; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1053 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1054 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1055 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1056 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1057 if (index is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1058 TableColumn checkColumn = columns [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1059 createRenderers (cast(GtkTreeViewColumn*)checkColumn.handle, checkColumn.modelIndex, true, checkColumn.style); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1060 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1061 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1062 /* Disable searching when using VIRTUAL */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1063 if ((style & DWT.VIRTUAL) !is 0) { |
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 * Bug in GTK. Until GTK 2.6.5, calling gtk_tree_view_set_enable_search(FALSE) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1066 * would prevent the user from being able to type in text to search the tree. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1067 * After 2.6.5, GTK introduced Ctrl+F as being the key binding for interactive |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1068 * search. This meant that even if FALSE was passed to enable_search, the user |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1069 * can still bring up the search pop up using the keybinding. GTK also introduced |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1070 * the notion of passing a -1 to gtk_set_search_column to disable searching |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1071 * (including the search key binding). The fix is to use the right calls |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1072 * for the right version. |
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 if (OS.GTK_VERSION >= OS.buildVERSION (2, 6, 5)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1075 OS.gtk_tree_view_set_search_column (handle, -1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1076 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1077 OS.gtk_tree_view_set_enable_search (handle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1078 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1079 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1080 /* Set the search column whenever the model changes */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1081 int firstColumn = columnCount is 0 ? FIRST_COLUMN : columns [0].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1082 OS.gtk_tree_view_set_search_column (handle, firstColumn + CELL_TEXT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1083 } |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1086 void destroyItem (TableItem item) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1087 int index = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1088 while (index < itemCount) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1089 if (items [index] is item) break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1090 index++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1091 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1092 if (index is itemCount) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1093 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1094 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1095 OS.gtk_list_store_remove (modelHandle, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1096 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1097 System.arraycopy (items, index + 1, items, index, --itemCount - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1098 items [itemCount] = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1099 if (itemCount is 0) resetCustomDraw (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1100 } |
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 override bool dragDetect (int x, int y, bool filter, bool* consume) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1103 bool selected = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1104 if (filter) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1105 GtkTreeViewColumn * path; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1106 if (OS.gtk_tree_view_get_path_at_pos (handle, x, y, cast(void**)&path, null, null, null)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1107 if (path !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1108 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1109 if (OS.gtk_tree_selection_path_is_selected (selection, path)) selected = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1110 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1111 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1112 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1113 return false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1114 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1115 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1116 bool dragDetect = super.dragDetect (x, y, filter, consume); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1117 if (dragDetect && selected && consume !is null) consume[0] = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1118 return dragDetect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1119 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1120 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1121 override GdkDrawable* eventWindow () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1122 return paintWindow (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1123 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1124 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1125 override void fixChildren (Shell newShell, Shell oldShell, Decorations newDecorations, Decorations oldDecorations, Menu [] menus) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1126 super.fixChildren (newShell, oldShell, newDecorations, oldDecorations, menus); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1127 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1128 TableColumn column = columns [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1129 if (column.toolTipText !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1130 column.setToolTipText(oldShell, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1131 column.setToolTipText(newShell, column.toolTipText); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1132 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1133 } |
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 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1136 override GdkColor* getBackgroundColor () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1137 return getBaseColor (); |
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 |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
1140 public override Rectangle getClientArea () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1141 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1142 forceResize (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1143 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1144 auto fixedWindow = OS.GTK_WIDGET_WINDOW (fixedHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1145 auto binWindow = OS.gtk_tree_view_get_bin_window (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1146 int binX, binY; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1147 OS.gdk_window_get_origin (binWindow, &binX, &binY); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1148 int fixedX, fixedY; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1149 OS.gdk_window_get_origin (fixedWindow, &fixedX, &fixedY); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1150 auto clientHandle = clientHandle (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1151 int width = (state & ZERO_WIDTH) !is 0 ? 0 : OS.GTK_WIDGET_WIDTH (clientHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1152 int height = (state & ZERO_HEIGHT) !is 0 ? 0 : OS.GTK_WIDGET_HEIGHT (clientHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1153 return new Rectangle (fixedX - binX, fixedY - binY, width, height); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1156 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1157 * Returns the column at the given, zero-relative index in the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1158 * receiver. Throws an exception if the index is out of range. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1159 * Columns are returned in the order that they were created. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1160 * If no <code>TableColumn</code>s were created by the programmer, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1161 * this method will throw <code>ERROR_INVALID_RANGE</code> despite |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1162 * the fact that a single column of data may be visible in the table. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1163 * This occurs when the programmer uses the table like a list, adding |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1164 * items but never creating a column. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1165 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1166 * @param index the index of the column to return |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1167 * @return the column at the given index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1168 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1169 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1170 * <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the list minus 1 (inclusive)</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1171 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1172 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1173 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1174 * <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
|
1175 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1176 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1177 * @see Table#getColumnOrder() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1178 * @see Table#setColumnOrder(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1179 * @see TableColumn#getMoveable() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1180 * @see TableColumn#setMoveable(bool) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1181 * @see DWT#Move |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1182 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1183 public TableColumn getColumn (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1184 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1185 if (!(0 <= index && index < columnCount)) error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1186 return columns [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1187 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1188 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1189 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1190 * Returns the number of columns contained in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1191 * If no <code>TableColumn</code>s were created by the programmer, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1192 * this value is zero, despite the fact that visually, one column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1193 * of items may be visible. This occurs when the programmer uses |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1194 * the table like a list, adding items but never creating a column. |
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 * @return the number of columns |
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 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1199 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1200 * <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
|
1201 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1202 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1203 public int getColumnCount () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1204 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1205 return columnCount; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1206 } |
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 uint[] getColumnTypes (int columnCount) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1209 uint[] types = new uint [FIRST_COLUMN + (columnCount * CELL_TYPES)]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1210 // per row data |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1211 types [CHECKED_COLUMN] = OS.G_TYPE_BOOLEAN (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1212 types [GRAYED_COLUMN] = OS.G_TYPE_BOOLEAN (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1213 types [FOREGROUND_COLUMN] = OS.GDK_TYPE_COLOR (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1214 types [BACKGROUND_COLUMN] = OS.GDK_TYPE_COLOR (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1215 types [FONT_COLUMN] = OS.PANGO_TYPE_FONT_DESCRIPTION (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1216 // per cell data |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1217 for (int i=FIRST_COLUMN; i<types.length; i+=CELL_TYPES) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1218 types [i + CELL_PIXBUF] = OS.GDK_TYPE_PIXBUF (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1219 types [i + CELL_TEXT] = OS.G_TYPE_STRING (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1220 types [i + CELL_FOREGROUND] = OS.GDK_TYPE_COLOR (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1221 types [i + CELL_BACKGROUND] = OS.GDK_TYPE_COLOR (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1222 types [i + CELL_FONT] = OS.PANGO_TYPE_FONT_DESCRIPTION (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1223 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1224 return types; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1225 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1226 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1227 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1228 * Returns an array of zero-relative integers that map |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1229 * the creation order of the receiver's items to the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1230 * order in which they are currently being displayed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1231 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1232 * Specifically, the indices of the returned array represent |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1233 * the current visual order of the items, and the contents |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1234 * of the array represent the creation order of the items. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1235 * </p><p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1236 * Note: This is not the actual structure used by the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1237 * to maintain its list of items, so modifying the array will |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1238 * not affect the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1239 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1240 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1241 * @return the current visual order of the receiver's items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1242 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1243 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1244 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1245 * <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
|
1246 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1247 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1248 * @see Table#setColumnOrder(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1249 * @see TableColumn#getMoveable() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1250 * @see TableColumn#setMoveable(bool) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1251 * @see DWT#Move |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1252 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1253 * @since 3.1 |
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 public int [] getColumnOrder () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1256 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1257 if (columnCount is 0) return new int [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1258 auto list = OS.gtk_tree_view_get_columns (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1259 if (list is null) return new int [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1260 int i = 0, count = OS.g_list_length (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1261 int [] order = new int [count]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1262 auto temp = list; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1263 while (temp !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1264 auto column = OS.g_list_data (temp); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1265 if (column !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1266 for (int j=0; j<columnCount; j++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1267 if (columns [j].handle is column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1268 order [i++] = j; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1269 break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1270 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1271 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1272 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1273 temp = OS.g_list_next (temp); |
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 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1276 return order; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1277 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1278 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1279 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1280 * Returns an array of <code>TableColumn</code>s which are the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1281 * columns in the receiver. Columns are returned in the order |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1282 * that they were created. If no <code>TableColumn</code>s were |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1283 * created by the programmer, the array is empty, despite the fact |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1284 * that visually, one column of items may be visible. This occurs |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1285 * when the programmer uses the table like a list, adding items but |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1286 * never creating a column. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1287 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1288 * Note: This is not the actual structure used by the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1289 * to maintain its list of items, so modifying the array will |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1290 * not affect the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1291 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1292 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1293 * @return the items in the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1294 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1295 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1296 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1297 * <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
|
1298 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1299 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1300 * @see Table#getColumnOrder() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1301 * @see Table#setColumnOrder(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1302 * @see TableColumn#getMoveable() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1303 * @see TableColumn#setMoveable(bool) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1304 * @see DWT#Move |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1305 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1306 public TableColumn [] getColumns () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1307 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1308 TableColumn [] result = new TableColumn [columnCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1309 System.arraycopy (columns, 0, result, 0, columnCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1310 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1311 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1312 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1313 TableItem getFocusItem () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1314 GtkTreeViewColumn * path; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1315 OS.gtk_tree_view_get_cursor (handle, cast(void**)&path, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1316 if (path is null) return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1317 TableItem item = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1318 auto indices = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1319 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1320 item = _getItem (indices [0]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1321 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1322 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1323 return item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1324 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1325 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1326 override GdkColor* getForegroundColor () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1327 return getTextColor (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1328 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1329 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1330 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1331 * Returns the width in pixels of a grid line. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1332 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1333 * @return the width of a grid line in pixels |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1334 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1335 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1336 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1337 * <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
|
1338 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1339 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1340 public int getGridLineWidth () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1341 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1342 return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1343 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1344 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1345 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1346 * Returns the height of the receiver's header |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1347 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1348 * @return the height of the header or zero if the header is not visible |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1349 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1350 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1351 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1352 * <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
|
1353 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1354 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1355 * @since 2.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1356 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1357 public int getHeaderHeight () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1358 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1359 if (!OS.gtk_tree_view_get_headers_visible (handle)) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1360 if (columnCount > 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1361 GtkRequisition requisition; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1362 int height = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1363 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1364 auto buttonHandle = columns [i].buttonHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1365 if (buttonHandle !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1366 OS.gtk_widget_size_request (buttonHandle, &requisition); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1367 height = Math.max (height, requisition.height); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1368 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1369 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1370 return height; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1371 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1372 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1373 auto fixedWindow = OS.GTK_WIDGET_WINDOW (fixedHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1374 auto binWindow = OS.gtk_tree_view_get_bin_window (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1375 int binY; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1376 OS.gdk_window_get_origin (binWindow, null, &binY); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1377 int fixedY; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1378 OS.gdk_window_get_origin (fixedWindow, null, &fixedY); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1379 return binY - fixedY; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1380 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1381 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1382 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1383 * Returns <code>true</code> if the receiver's header is visible, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1384 * and <code>false</code> otherwise. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1385 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1386 * If one of the receiver's ancestors is not visible or some |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1387 * other condition makes the receiver not visible, this method |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1388 * may still indicate that it is considered visible even though |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1389 * it may not actually be showing. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1390 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1391 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1392 * @return the receiver's header's visibility state |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1393 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1394 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1395 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1396 * <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
|
1397 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1398 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1399 public bool getHeaderVisible () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1400 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1401 return cast(bool) OS.gtk_tree_view_get_headers_visible (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1402 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1403 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1404 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1405 * Returns the item at the given, zero-relative index in the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1406 * receiver. Throws an exception if the index is out of range. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1407 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1408 * @param index the index of the item to return |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1409 * @return the item at the given index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1410 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1411 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1412 * <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the list minus 1 (inclusive)</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1413 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1414 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1415 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1416 * <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
|
1417 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1418 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1419 public TableItem getItem (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1420 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1421 if (!(0 <= index && index < itemCount)) error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1422 return _getItem (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1423 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1424 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1425 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1426 * Returns the item at the given point in the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1427 * or null if no such item exists. The point is in the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1428 * coordinate system of the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1429 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1430 * The item that is returned represents an item that could be selected by the user. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1431 * For example, if selection only occurs in items in the first column, then null is |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1432 * returned if the point is outside of the item. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1433 * Note that the DWT.FULL_SELECTION style hint, which specifies the selection policy, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1434 * determines the extent of the selection. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1435 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1436 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1437 * @param point the point used to locate the item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1438 * @return the item at the given point, or null if the point is not in a selectable item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1439 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1440 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1441 * <li>ERROR_NULL_ARGUMENT - if the point is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1442 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1443 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1444 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1445 * <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
|
1446 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1447 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1448 public TableItem getItem (Point point) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1449 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1450 if (point is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1451 void* path; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1452 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1453 if (!OS.gtk_tree_view_get_path_at_pos (handle, point.x, point.y, &path, null, null, null)) return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1454 if (path is null) return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1455 auto indices = OS.gtk_tree_path_get_indices (path ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1456 TableItem item = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1457 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1458 item = _getItem (indices [0]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1459 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1460 OS.gtk_tree_path_free (path ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1461 return item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1462 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1463 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1464 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1465 * Returns the number of items contained in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1466 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1467 * @return the number of items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1468 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1469 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1470 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1471 * <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
|
1472 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1473 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1474 public int getItemCount () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1475 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1476 return itemCount; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1477 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1478 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1479 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1480 * Returns the height of the area which would be used to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1481 * display <em>one</em> of the items in the receiver's. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1482 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1483 * @return the height of one item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1484 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1485 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1486 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1487 * <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
|
1488 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1489 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1490 public int getItemHeight () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1491 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1492 if (itemCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1493 auto column = OS.gtk_tree_view_get_column (handle, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1494 int w, h; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1495 ignoreSize = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1496 OS.gtk_tree_view_column_cell_get_size (column, null, null, null, &w, &h); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1497 ignoreSize = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1498 return h; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1499 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1500 int height = 0; |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
123
diff
changeset
|
1501 GtkTreeIter* iter = cast(GtkTreeIter*) OS.g_malloc( GtkTreeIter.sizeof ); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1502 OS.gtk_tree_model_get_iter_first (modelHandle, iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1503 int columnCount = Math.max (1, this.columnCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1504 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1505 auto column = OS.gtk_tree_view_get_column (handle, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1506 OS.gtk_tree_view_column_cell_set_cell_data (column, modelHandle, iter, false, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1507 int w, h; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1508 OS.gtk_tree_view_column_cell_get_size (column, null, null, null, &w, &h); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1509 height = Math.max (height, h ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1510 } |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
123
diff
changeset
|
1511 OS.g_free(iter); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1512 return height; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1513 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1514 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1515 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1516 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1517 * Returns a (possibly empty) array of <code>TableItem</code>s which |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1518 * are the items in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1519 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1520 * Note: This is not the actual structure used by the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1521 * to maintain its list of items, so modifying the array will |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1522 * not affect the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1523 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1524 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1525 * @return the items in the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1526 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1527 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1528 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1529 * <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
|
1530 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1531 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1532 public TableItem [] getItems () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1533 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1534 TableItem [] result = new TableItem [itemCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1535 if ((style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1536 for (int i=0; i<itemCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1537 result [i] = _getItem (i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1538 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1539 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1540 System.arraycopy (items, 0, result, 0, itemCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1541 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1542 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1543 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1544 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1545 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1546 * Returns <code>true</code> if the receiver's lines are visible, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1547 * and <code>false</code> otherwise. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1548 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1549 * If one of the receiver's ancestors is not visible or some |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1550 * other condition makes the receiver not visible, this method |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1551 * may still indicate that it is considered visible even though |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1552 * it may not actually be showing. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1553 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1554 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1555 * @return the visibility state of the lines |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1556 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1557 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1558 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1559 * <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
|
1560 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1561 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1562 public bool getLinesVisible() { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1563 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1564 return cast(bool)OS.gtk_tree_view_get_rules_hint (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1565 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1566 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1567 GtkCellRendererPixbuf* getPixbufRenderer (GtkTreeViewColumn* column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1568 auto list = OS.gtk_tree_view_column_get_cell_renderers (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1569 if (list is null) return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1570 int count = OS.g_list_length (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1571 GtkCellRendererPixbuf* pixbufRenderer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1572 int i = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1573 while (i < count) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1574 auto renderer = OS.g_list_nth_data (list, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1575 if (OS.GTK_IS_CELL_RENDERER_PIXBUF (cast(GTypeInstance*)renderer)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1576 pixbufRenderer = cast(GtkCellRendererPixbuf*)renderer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1577 break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1578 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1579 i++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1580 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1581 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1582 return pixbufRenderer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1583 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1584 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1585 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1586 * Returns an array of <code>TableItem</code>s that are currently |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1587 * selected in the receiver. The order of the items is unspecified. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1588 * An empty array indicates that no items are selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1589 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1590 * Note: This is not the actual structure used by the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1591 * to maintain its selection, so modifying the array will |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1592 * not affect the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1593 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1594 * @return an array representing the selection |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1595 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1596 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1597 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1598 * <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
|
1599 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1600 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1601 public TableItem [] getSelection () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1602 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1603 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1604 if (OS.GTK_VERSION < OS.buildVERSION (2, 2, 0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1605 display.treeSelectionLength = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1606 display.treeSelection = new int [itemCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1607 display.doTreeSelectionProcConnect( &treeSelectionCallbackData, handle, selection ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1608 TableItem [] result = new TableItem [display.treeSelectionLength]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1609 for (int i=0; i<result.length; i++) result [i] = _getItem (display.treeSelection [i]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1610 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1611 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1612 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1613 * Bug in GTK. gtk_tree_selection_get_selected_rows() segmentation faults |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1614 * in versions smaller than 2.2.4 if the model is NULL. The fix is |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1615 * to give a valid pointer instead. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1616 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1617 int dummy; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1618 void* model = OS.GTK_VERSION < OS.buildVERSION (2, 2, 4) ? &dummy : null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1619 auto list = OS.gtk_tree_selection_get_selected_rows (selection, &model); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1620 if (list !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1621 int count = OS.g_list_length (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1622 int [] treeSelection = new int [count]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1623 int length_ = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1624 for (int i=0; i<count; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1625 auto data = OS.g_list_nth_data (list, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1626 auto indices = OS.gtk_tree_path_get_indices (data); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1627 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1628 treeSelection [length_] = indices [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1629 length_++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1630 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1631 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1632 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1633 TableItem [] result = new TableItem [length_]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1634 for (int i=0; i<result.length; i++) result [i] = _getItem (treeSelection [i]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1635 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1636 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1637 return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1638 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1639 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1640 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1641 * Returns the number of selected items contained in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1642 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1643 * @return the number of selected items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1644 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1645 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1646 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1647 * <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
|
1648 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1649 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1650 public int getSelectionCount () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1651 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1652 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1653 if (OS.GTK_VERSION < OS.buildVERSION (2, 2, 0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1654 display.treeSelectionLength = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1655 display.treeSelection = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1656 display.doTreeSelectionProcConnect( &treeSelectionCallbackData, handle, selection ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1657 return display.treeSelectionLength; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1658 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1659 return OS.gtk_tree_selection_count_selected_rows (selection); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1660 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1661 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1662 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1663 * Returns the zero-relative index of the item which is currently |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1664 * selected in the receiver, or -1 if no item is selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1665 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1666 * @return the index of the selected item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1667 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1668 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1669 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1670 * <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
|
1671 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1672 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1673 public int getSelectionIndex () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1674 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1675 if (OS.GTK_VERSION < OS.buildVERSION (2, 2, 0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1676 display.treeSelectionLength = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1677 display.treeSelection = new int [itemCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1678 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1679 display.doTreeSelectionProcConnect( &treeSelectionCallbackData, handle, selection ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1680 if (display.treeSelectionLength is 0) return -1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1681 return display.treeSelection [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1682 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1683 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1684 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1685 * Bug in GTK. gtk_tree_selection_get_selected_rows() segmentation faults |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1686 * in versions smaller than 2.2.4 if the model is NULL. The fix is |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1687 * to give a valid pointer instead. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1688 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1689 int dummy; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1690 void* model = OS.GTK_VERSION < OS.buildVERSION (2, 2, 4) ? &dummy : null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1691 auto list = OS.gtk_tree_selection_get_selected_rows (selection, &model); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1692 if (list !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1693 int count = OS.g_list_length (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1694 int index; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1695 for (int i=0; i<count; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1696 auto data = OS.g_list_nth_data (list, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1697 auto indices = OS.gtk_tree_path_get_indices (data); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1698 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1699 index = indices[0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1700 break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1701 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1702 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1703 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1704 return index; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1705 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1706 return -1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1707 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1708 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1709 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1710 * Returns the zero-relative indices of the items which are currently |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1711 * selected in the receiver. The order of the indices is unspecified. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1712 * The array is empty if no items are selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1713 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1714 * Note: This is not the actual structure used by the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1715 * to maintain its selection, so modifying the array will |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1716 * not affect the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1717 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1718 * @return the array of indices of the selected items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1719 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1720 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1721 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1722 * <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
|
1723 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1724 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1725 public int [] getSelectionIndices () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1726 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1727 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1728 if (OS.GTK_VERSION < OS.buildVERSION (2, 2, 0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1729 display.treeSelectionLength = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1730 display.treeSelection = new int [itemCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1731 display.doTreeSelectionProcConnect( &treeSelectionCallbackData, handle, selection ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1732 if (display.treeSelectionLength is display.treeSelection.length) return display.treeSelection; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1733 int [] result = new int [display.treeSelectionLength]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1734 System.arraycopy (display.treeSelection, 0, result, 0, display.treeSelectionLength); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1735 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1736 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1737 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1738 * Bug in GTK. gtk_tree_selection_get_selected_rows() segmentation faults |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1739 * in versions smaller than 2.2.4 if the model is NULL. The fix is |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1740 * to give a valid pointer instead. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1741 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1742 int dummy; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1743 void* model = OS.GTK_VERSION < OS.buildVERSION (2, 2, 4) ? &dummy : null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1744 auto list = OS.gtk_tree_selection_get_selected_rows (selection, &model); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1745 if (list !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1746 int count = OS.g_list_length (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1747 int [] treeSelection = new int [count]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1748 int length_ = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1749 for (int i=0; i<count; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1750 auto data = OS.g_list_nth_data (list, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1751 auto indices = OS.gtk_tree_path_get_indices (data); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1752 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1753 treeSelection [length_] = indices [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1754 length_++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1755 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1756 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1757 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1758 int [] result = new int [length_]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1759 System.arraycopy (treeSelection, 0, result, 0, length_); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1760 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1761 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1762 return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1763 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1764 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1765 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1766 * Returns the column which shows the sort indicator for |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1767 * the receiver. The value may be null if no column shows |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1768 * the sort indicator. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1769 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1770 * @return the sort indicator |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1771 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1772 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1773 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1774 * <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
|
1775 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1776 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1777 * @see #setSortColumn(TableColumn) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1778 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1779 * @since 3.2 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1780 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1781 public TableColumn getSortColumn () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1782 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1783 return sortColumn; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1784 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1785 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1786 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1787 * Returns the direction of the sort indicator for the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1788 * The value will be one of <code>UP</code>, <code>DOWN</code> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1789 * or <code>NONE</code>. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1790 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1791 * @return the sort direction |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1792 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1793 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1794 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1795 * <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
|
1796 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1797 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1798 * @see #setSortDirectioncast(int) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1799 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1800 * @since 3.2 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1801 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1802 public int getSortDirection () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1803 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1804 return sortDirection; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1805 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1806 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1807 GtkCellRendererText* getTextRenderer (GtkTreeViewColumn* column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1808 auto list = OS.gtk_tree_view_column_get_cell_renderers (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1809 if (list is null) return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1810 int count = OS.g_list_length (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1811 GtkCellRendererText* textRenderer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1812 int i = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1813 while (i < count) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1814 auto renderer = OS.g_list_nth_data (list, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1815 if (OS.GTK_IS_CELL_RENDERER_TEXT (cast(GTypeInstance*)renderer)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1816 textRenderer = cast(GtkCellRendererText*)renderer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1817 break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1818 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1819 i++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1820 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1821 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1822 return textRenderer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1823 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1824 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1825 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1826 * Returns the zero-relative index of the item which is currently |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1827 * at the top of the receiver. This index can change when items are |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1828 * scrolled or new items are added or removed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1829 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1830 * @return the index of the top item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1831 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1832 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1833 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1834 * <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
|
1835 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1836 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1837 public int getTopIndex () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1838 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1839 void* path; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1840 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1841 if (!OS.gtk_tree_view_get_path_at_pos (handle, 1, 1, &path, null, null, null)) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1842 if (path is null) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1843 auto indices = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1844 int index; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1845 if (indices !is null) index = indices[0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1846 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1847 return index; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1848 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1849 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1850 override int gtk_button_press_event (GtkWidget* widget, GdkEventButton* gdkEvent) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1851 if (gdkEvent.window !is OS.gtk_tree_view_get_bin_window (handle)) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1852 auto result = super.gtk_button_press_event (widget, gdkEvent); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1853 if (result !is 0) return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1854 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1855 * Feature in GTK. In a multi-select table view, when multiple items are already |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1856 * selected, the selection state of the item is toggled and the previous selection |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1857 * is cleared. This is not the desired behaviour when bringing up a popup menu. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1858 * Also, when an item is reselected with the right button, the tree view issues |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1859 * an unwanted selection event. The workaround is to detect that case and not |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1860 * run the default handler when the item is already part of the current selection. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1861 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1862 int button = gdkEvent.button; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1863 if (button is 3 && gdkEvent.type is OS.GDK_BUTTON_PRESS) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1864 void* path; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1865 if (OS.gtk_tree_view_get_path_at_pos (handle, cast(int)gdkEvent.x, cast(int)gdkEvent.y, &path, null, null, null)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1866 if (path !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1867 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1868 if (OS.gtk_tree_selection_path_is_selected (selection, path)) result = 1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1869 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1870 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1871 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1872 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1873 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1874 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1875 * Feature in GTK. When the user clicks in a single selection GtkTreeView |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1876 * and there are no selected items, the first item is selected automatically |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1877 * before the click is processed, causing two selection events. The is fix |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1878 * is the set the cursor item to be same as the clicked item to stop the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1879 * widget from automatically selecting the first item. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1880 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1881 if ((style & DWT.SINGLE) !is 0 && getSelectionCount () is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1882 void* path; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1883 if (OS.gtk_tree_view_get_path_at_pos (handle, cast(int)gdkEvent.x, cast(int)gdkEvent.y, &path, null, null, null)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1884 if (path !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1885 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1886 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1887 OS.gtk_tree_view_set_cursor (handle, path, null, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1888 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1889 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1890 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1891 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1892 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1893 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1894 * Bug in GTK. GTK segments fault, if the GtkTreeView widget is |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1895 * not in focus and all items in the widget are disposed before |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1896 * it finishes processing a button press. The fix is to give |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1897 * focus to the widget before it starts processing the event. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1898 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1899 if (!OS.GTK_WIDGET_HAS_FOCUS (handle)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1900 OS.gtk_widget_grab_focus (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1901 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1902 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1903 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1904 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1905 override int gtk_button_release_event (GtkWidget* widget, GdkEventButton* event) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1906 auto window = OS.GDK_EVENT_WINDOW (event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1907 if (window !is OS.gtk_tree_view_get_bin_window (handle)) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1908 return super.gtk_button_release_event (widget, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1909 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1910 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1911 override int gtk_changed (GtkWidget* widget) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1912 TableItem item = getFocusItem (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1913 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1914 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1915 event.item = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1916 postEvent (DWT.Selection, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1917 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1918 return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1919 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1920 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1921 override int gtk_key_press_event (GtkWidget* widget, GdkEventKey* keyEvent) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1922 auto result = super.gtk_key_press_event (widget, keyEvent); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1923 if (result !is 0) return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1924 if (OS.GTK_VERSION < OS.buildVERSION (2, 2 ,0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1925 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1926 * Feature in GTK 2.0.x. When an item is default selected using |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1927 * the return key, GTK does not issue notification. The fix is |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1928 * to issue this notification when the return key is pressed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1929 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1930 int key = keyEvent.keyval; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1931 switch (key) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1932 case OS.GDK_Return: |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1933 case OS.GDK_KP_Enter: { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1934 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1935 event.item = getFocusItem (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1936 postEvent (DWT.DefaultSelection, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1937 break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1938 } |
115
52b32f5cb1e0
many file checked for switch default
Frank Benoit <benoit@tionex.de>
parents:
110
diff
changeset
|
1939 default: |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1940 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1941 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1942 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1943 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1944 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1945 override int gtk_popup_menu (GtkWidget* widget) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1946 auto result = super.gtk_popup_menu (widget); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1947 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1948 * Bug in GTK. The context menu for the typeahead in GtkTreeViewer |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1949 * opens in the bottom right corner of the screen when Shift+F10 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1950 * is pressed and the typeahead window was not visible. The fix is |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1951 * to prevent the context menu from opening by stopping the default |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1952 * handler. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1953 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1954 * NOTE: The bug only happens in GTK 2.6.5 and lower. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1955 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1956 return OS.GTK_VERSION < OS.buildVERSION (2, 6, 5) ? 1 : result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1957 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1958 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1959 override int gtk_motion_notify_event (GtkWidget* widget, GdkEventMotion* event) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1960 auto window = OS.GDK_EVENT_WINDOW (event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1961 if (window !is OS.gtk_tree_view_get_bin_window (handle)) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1962 return super.gtk_motion_notify_event (widget, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1963 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1964 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1965 override void gtk_row_activated (GtkTreeView* tree, GtkTreePath* path, GtkTreeViewColumn* column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1966 TableItem item = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1967 auto indices = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1968 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1969 item = _getItem (indices [0]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1970 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1971 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1972 event.item = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1973 postEvent (DWT.DefaultSelection, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1974 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1975 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1976 override int gtk_toggled (int /*long*/ renderer, char* pathStr) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1977 auto path = OS.gtk_tree_path_new_from_string (pathStr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1978 if (path is null) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1979 auto indices = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1980 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1981 TableItem item = _getItem (indices [0]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1982 item.setChecked (!item.getChecked ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1983 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1984 event.detail = DWT.CHECK; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1985 event.item = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1986 postEvent (DWT.Selection, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1987 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1988 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1989 return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1990 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1991 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1992 override void gtk_widget_size_request (GtkWidget* widget, GtkRequisition* requisition) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1993 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1994 * Bug in GTK. For some reason, gtk_widget_size_request() fails |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1995 * to include the height of the tree view items when there are |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1996 * no columns visible. The fix is to temporarily make one column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1997 * visible. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1998 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1999 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2000 super.gtk_widget_size_request (widget, requisition); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2001 return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2002 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2003 auto columns = OS.gtk_tree_view_get_columns (handle), list = columns; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2004 bool fixVisible = columns !is null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2005 while (list !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2006 auto column = OS.g_list_data (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2007 if (OS.gtk_tree_view_column_get_visible (column)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2008 fixVisible = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2009 break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2010 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2011 list = OS.g_list_next (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2012 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2013 void* columnHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2014 if (fixVisible) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2015 columnHandle = OS.g_list_data (columns); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2016 OS.gtk_tree_view_column_set_visible (columnHandle, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2017 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2018 super.gtk_widget_size_request (widget, requisition); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2019 if (fixVisible) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2020 OS.gtk_tree_view_column_set_visible (columnHandle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2021 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2022 if (columns !is null) OS.g_list_free (columns); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2023 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2024 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2025 void hideFirstColumn () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2026 auto firstColumn = OS.gtk_tree_view_get_column (handle, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2027 OS.gtk_tree_view_column_set_visible (firstColumn, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2028 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2029 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2030 override void hookEvents () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2031 super.hookEvents (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2032 auto selection = OS.gtk_tree_view_get_selection(handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2033 OS.g_signal_connect_closure (selection, OS.changed.ptr, display.closures [CHANGED], false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2034 OS.g_signal_connect_closure (handle, OS.row_activated.ptr, display.closures [ROW_ACTIVATED], false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2035 if (checkRenderer !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2036 OS.g_signal_connect_closure (checkRenderer, OS.toggled.ptr, display.closures [TOGGLED], false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2037 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2038 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2039 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2040 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2041 * Searches the receiver's list starting at the first column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2042 * (index 0) until a column is found that is equal to the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2043 * argument, and returns the index of that column. If no column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2044 * is found, returns -1. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2045 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2046 * @param column the search column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2047 * @return the index of the column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2048 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2049 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2050 * <li>ERROR_NULL_ARGUMENT - if the column is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2051 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2052 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2053 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2054 * <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
|
2055 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2056 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2057 public int indexOf (TableColumn column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2058 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2059 if (column is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2060 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2061 if (columns [i] is column) return i; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2062 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2063 return -1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2064 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2065 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2066 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2067 * Searches the receiver's list starting at the first item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2068 * (index 0) until an item is found that is equal to the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2069 * argument, and returns the index of that item. If no item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2070 * is found, returns -1. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2071 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2072 * @param item the search item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2073 * @return the index of the item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2074 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2075 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2076 * <li>ERROR_NULL_ARGUMENT - if the item is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2077 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2078 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2079 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2080 * <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
|
2081 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2082 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2083 public int indexOf (TableItem item) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2084 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2085 if (item is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2086 if (1 <= lastIndexOf && lastIndexOf < itemCount - 1) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2087 if (items [lastIndexOf] is item) return lastIndexOf; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2088 if (items [lastIndexOf + 1] is item) return ++lastIndexOf; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2089 if (items [lastIndexOf - 1] is item) return --lastIndexOf; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2090 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2091 if (lastIndexOf < itemCount / 2) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2092 for (int i=0; i<itemCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2093 if (items [i] is item) return lastIndexOf = i; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2094 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2095 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2096 for (int i=itemCount - 1; i>=0; --i) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2097 if (items [i] is item) return lastIndexOf = i; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2098 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2099 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2100 return -1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2101 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2102 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2103 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2104 * Returns <code>true</code> if the item is selected, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2105 * and <code>false</code> otherwise. Indices out of |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2106 * range are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2107 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2108 * @param index the index of the item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2109 * @return the selection state of the item at the index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2110 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2111 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2112 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2113 * <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
|
2114 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2115 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2116 public bool isSelected (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2117 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2118 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2119 char* buffer = tango.stdc.stringz.toStringz( to!(char[])(index)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2120 auto path = OS.gtk_tree_path_new_from_string (buffer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2121 bool answer = cast(bool)OS.gtk_tree_selection_path_is_selected (selection, path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2122 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2123 return answer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2124 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2125 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
2126 override bool mnemonicHit (wchar key) { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2127 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2128 auto labelHandle = columns [i].labelHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2129 if (labelHandle !is null && mnemonicHit (labelHandle, key)) return true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2130 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2131 return false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2132 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2133 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
2134 override bool mnemonicMatch (wchar key) { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2135 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2136 auto labelHandle = columns [i].labelHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2137 if (labelHandle !is null && mnemonicMatch (labelHandle, key)) return true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2138 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2139 return false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2140 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2141 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
2142 override GdkDrawable* paintWindow () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2143 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2144 return OS.gtk_tree_view_get_bin_window (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2145 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2146 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2147 void recreateRenderers () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2148 if (checkRenderer !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2149 display.removeWidget (checkRenderer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2150 OS.g_object_unref (checkRenderer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2151 checkRenderer = ownerDraw ? cast(GtkWidget*)OS.g_object_new (display.gtk_cell_renderer_toggle_get_type(), null) : cast(GtkWidget*)OS.gtk_cell_renderer_toggle_new (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2152 if (checkRenderer is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2153 OS.g_object_ref (checkRenderer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2154 display.addWidget (checkRenderer, this); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2155 OS.g_signal_connect_closure (checkRenderer, OS.toggled.ptr, display.closures [TOGGLED], false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2156 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2157 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2158 createRenderers (OS.gtk_tree_view_get_column (handle, 0), Table.FIRST_COLUMN, true, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2159 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2160 for (int i = 0; i < columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2161 TableColumn column = columns [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2162 createRenderers (cast(GtkTreeViewColumn*)column.handle, column.modelIndex, i is 0, column.style); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2163 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2164 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2165 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2166 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
2167 override void redrawBackgroundImage () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2168 Control control = findBackgroundControl (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2169 if (control !is null && control.backgroundImage !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2170 redrawWidget (0, 0, 0, 0, true, false, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2171 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2172 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2173 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2174 override void register () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2175 super.register (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2176 display.addWidget ( cast(GtkWidget*)OS.gtk_tree_view_get_selection (handle), this); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2177 if (checkRenderer !is null) display.addWidget (checkRenderer, this); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2178 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2179 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2180 override void releaseChildren (bool destroy) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2181 if (items !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2182 for (int i=0; i<itemCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2183 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2184 if (item !is null && !item.isDisposed ()) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2185 item.release (false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2186 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2187 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2188 items = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2189 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2190 if (columns !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2191 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2192 TableColumn column = columns [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2193 if (column !is null && !column.isDisposed ()) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2194 column.release (false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2195 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2196 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2197 columns = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2198 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2199 super.releaseChildren (destroy); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2200 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2201 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2202 override void releaseWidget () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2203 super.releaseWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2204 if (modelHandle !is null) OS.g_object_unref (modelHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2205 modelHandle = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2206 if (checkRenderer !is null) OS.g_object_unref (checkRenderer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2207 checkRenderer = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2208 if (imageList !is null) imageList.dispose (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2209 if (headerImageList !is null) headerImageList.dispose (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2210 imageList = headerImageList = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2211 currentItem = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2212 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2213 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2214 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2215 * Removes the item from the receiver at the given |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2216 * zero-relative index. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2217 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2218 * @param index the index for the item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2219 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2220 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2221 * <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the list minus 1 (inclusive)</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2222 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2223 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2224 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2225 * <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
|
2226 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2227 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2228 public void remove (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2229 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2230 if (!(0 <= index && index < itemCount)) error (DWT.ERROR_ITEM_NOT_REMOVED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2231 GtkTreeIter iter; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2232 TableItem item = items [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2233 bool disposed = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2234 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2235 disposed = item.isDisposed (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2236 if (!disposed) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2237 iter = *cast(GtkTreeIter*)item.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2238 item.release (false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2239 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2240 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2241 OS.gtk_tree_model_iter_nth_child (modelHandle, &iter, null, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2242 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2243 if (!disposed) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2244 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2245 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2246 OS.gtk_list_store_remove (modelHandle, &iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2247 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2248 System.arraycopy (items, index + 1, items, index, --itemCount - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2249 items [itemCount] = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2250 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2251 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2252 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2253 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2254 * Removes the items from the receiver which are |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2255 * between the given zero-relative start and end |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2256 * indices (inclusive). |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2257 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2258 * @param start the start of the range |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2259 * @param end the end of the range |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2260 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2261 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2262 * <li>ERROR_INVALID_RANGE - if either the start or end are not between 0 and the number of elements in the list minus 1 (inclusive)</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2263 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2264 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2265 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2266 * <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
|
2267 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2268 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2269 public void remove (int start, int end) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2270 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2271 if (start > end) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2272 if (!(0 <= start && start <= end && end < itemCount)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2273 error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2274 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2275 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2276 GtkTreeIter iter; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2277 OS.gtk_tree_model_iter_nth_child (modelHandle, &iter, null, start); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2278 int index = start; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2279 while (index <= end) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2280 TableItem item = items [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2281 if (item !is null && !item.isDisposed ()) item.release (false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2282 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2283 OS.gtk_list_store_remove (modelHandle, &iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2284 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2285 index++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2286 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2287 System.arraycopy (items, index, items, start, itemCount - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2288 for (int i=itemCount-(index-start); i<itemCount; i++) items [i] = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2289 itemCount = itemCount - (index - start); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2290 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2291 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2292 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2293 * Removes the items from the receiver's list at the given |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2294 * zero-relative indices. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2295 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2296 * @param indices the array of indices of the items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2297 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2298 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2299 * <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the list minus 1 (inclusive)</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2300 * <li>ERROR_NULL_ARGUMENT - if the indices array is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2301 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2302 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2303 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2304 * <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
|
2305 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2306 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2307 public void remove (int [] indices) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2308 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2309 if (indices is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2310 if (indices.length is 0) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2311 int [] newIndices = new int [indices.length]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2312 System.arraycopy (indices, 0, newIndices, 0, indices.length); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2313 sort (newIndices); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2314 int start = newIndices [newIndices.length - 1], end = newIndices [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2315 if (!(0 <= start && start <= end && end < itemCount)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2316 error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2317 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2318 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2319 int last = -1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2320 GtkTreeIter iter; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2321 for (int i=0; i<newIndices.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2322 int index = newIndices [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2323 if (index !is last) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2324 TableItem item = items [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2325 bool disposed = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2326 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2327 disposed = item.isDisposed (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2328 if (!disposed) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2329 iter = *cast(GtkTreeIter*) item.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2330 item.release (false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2331 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2332 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2333 OS.gtk_tree_model_iter_nth_child (modelHandle, &iter, null, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2334 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2335 if (!disposed) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2336 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2337 OS.gtk_list_store_remove (modelHandle, &iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2338 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2339 System.arraycopy (items, index + 1, items, index, --itemCount - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2340 items [itemCount] = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2341 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2342 last = index; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2343 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2344 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2345 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2346 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2347 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2348 * Removes all of the items from the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2349 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2350 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2351 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2352 * <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
|
2353 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2354 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2355 public void removeAll () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2356 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2357 int index = itemCount - 1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2358 while (index >= 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2359 TableItem item = items [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2360 if (item !is null && !item.isDisposed ()) item.release (false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2361 --index; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2362 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2363 items = new TableItem [4]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2364 itemCount = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2365 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2366 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2367 * Bug in GTK. In version 2.3.2, when the property fixed-height-mode |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2368 * is set and there are items in the list, OS.gtk_list_store_clear() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2369 * segment faults. The fix is to create a new empty model instead. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2370 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2371 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2372 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2373 // OS.gtk_list_store_clear (modelHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2374 auto oldModel = modelHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2375 auto types = getColumnTypes (Math.max (1,columnCount)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2376 auto newModel = OS.gtk_list_store_newv (types.length, types.ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2377 if (newModel is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2378 OS.gtk_tree_view_set_model (handle, newModel); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2379 OS.g_object_unref (oldModel); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2380 modelHandle = cast(GtkWidget*)newModel; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2381 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2382 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2383 resetCustomDraw (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2384 /* Disable searching when using VIRTUAL */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2385 if ((style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2386 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2387 * Bug in GTK. Until GTK 2.6.5, calling gtk_tree_view_set_enable_search(FALSE) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2388 * would prevent the user from being able to type in text to search the tree. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2389 * After 2.6.5, GTK introduced Ctrl+F as being the key binding for interactive |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2390 * search. This meant that even if FALSE was passed to enable_search, the user |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2391 * can still bring up the search pop up using the keybinding. GTK also introduced |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2392 * the notion of passing a -1 to gtk_set_search_column to disable searching |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2393 * (including the search key binding). The fix is to use the right calls |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2394 * for the right version. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2395 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2396 if (OS.GTK_VERSION >= OS.buildVERSION (2, 6, 5)){ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2397 OS.gtk_tree_view_set_search_column (handle, -1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2398 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2399 OS.gtk_tree_view_set_enable_search (handle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2400 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2401 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2402 /* Set the search column whenever the model changes */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2403 int firstColumn = columnCount is 0 ? FIRST_COLUMN : columns [0].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2404 OS.gtk_tree_view_set_search_column (handle, firstColumn + CELL_TEXT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2405 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2406 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2407 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2408 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2409 * Removes the listener from the collection of listeners who will |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2410 * be notified when the user changes the receiver's selection. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2411 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2412 * @param listener the listener which should no longer be notified |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2413 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2414 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2415 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2416 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2417 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2418 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2419 * <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
|
2420 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2421 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2422 * @see SelectionListener |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2423 * @see #addSelectionListener(SelectionListener) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2424 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2425 public void removeSelectionListener(SelectionListener listener) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2426 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2427 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2428 if (eventTable is null) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2429 eventTable.unhook (DWT.Selection, listener); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2430 eventTable.unhook (DWT.DefaultSelection,listener); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2431 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2432 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2433 override void rendererGetSizeProc ( |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2434 GtkCellRenderer *cell, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2435 GtkWidget *widget, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2436 GdkRectangle *cell_area, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2437 int *x_offset, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2438 int *y_offset, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2439 int *width, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2440 int *height) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2441 { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2442 auto g_class = OS.g_type_class_peek_parent (OS.G_OBJECT_GET_CLASS (cell)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2443 GtkCellRendererClass* klass = cast(GtkCellRendererClass*)g_class; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2444 klass.get_size( cell, handle, cell_area, x_offset, y_offset, width, height); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2445 if (!ignoreSize && OS.GTK_IS_CELL_RENDERER_TEXT (cell)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2446 auto iter = OS.g_object_get_qdata (cast(GObject*)cell, Display.SWT_OBJECT_INDEX2); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2447 TableItem item = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2448 if (iter !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2449 auto path = OS.gtk_tree_model_get_path (modelHandle, iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2450 auto buffer = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2451 int index = buffer [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2452 item = _getItem (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2453 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2454 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2455 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2456 int columnIndex = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2457 if (columnCount > 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2458 auto columnHandle = OS.g_object_get_qdata (cast(GObject*)cell, Display.SWT_OBJECT_INDEX1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2459 for (int i = 0; i < columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2460 if (columns [i].handle is columnHandle) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2461 columnIndex = i; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2462 break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2463 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2464 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2465 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2466 if (hooks (DWT.MeasureItem)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2467 int contentWidth, contentHeight; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2468 if (width !is null) contentWidth = *width; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2469 if (height !is null) contentHeight = *height; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2470 Image image = item.getImage (columnIndex); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2471 int imageWidth = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2472 if (image !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2473 Rectangle bounds = image.getBounds (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2474 imageWidth = bounds.width; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2475 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2476 contentWidth += imageWidth; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2477 GC gc = new GC (this); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2478 gc.setFont (item.getFont (columnIndex)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2479 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2480 event.item = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2481 event.index = columnIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2482 event.gc = gc; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2483 event.width = contentWidth; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2484 event.height = contentHeight; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2485 sendEvent (DWT.MeasureItem, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2486 gc.dispose (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2487 contentWidth = event.width - imageWidth; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2488 contentHeight = event.height; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2489 if (width !is null) *width = contentWidth; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2490 if (height !is null) *height = contentHeight; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2491 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2492 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2493 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2494 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2495 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2496 override void rendererRenderProc ( |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2497 GtkCellRenderer * cell, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2498 GdkDrawable * window, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2499 GtkWidget * widget, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2500 GdkRectangle *background_area, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2501 GdkRectangle *cell_area, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2502 GdkRectangle *expose_area, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2503 int flags) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2504 { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2505 TableItem item = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2506 auto iter = OS.g_object_get_qdata (cast(GObject*)cell, Display.SWT_OBJECT_INDEX2); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2507 if (iter !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2508 auto path = OS.gtk_tree_model_get_path (modelHandle, iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2509 auto buffer = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2510 int index = buffer [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2511 item = _getItem (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2512 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2513 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2514 auto columnHandle = OS.g_object_get_qdata (cast(GObject*)cell, Display.SWT_OBJECT_INDEX1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2515 int columnIndex = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2516 if (columnCount > 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2517 for (int i = 0; i < columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2518 if (columns [i].handle is columnHandle) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2519 columnIndex = i; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2520 break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2521 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2522 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2523 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2524 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2525 if (OS.GTK_IS_CELL_RENDERER_TOGGLE (cell) || (OS.GTK_IS_CELL_RENDERER_PIXBUF (cell) && (columnIndex !is 0 || (style & DWT.CHECK) is 0))) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2526 drawFlags = cast(int)/*64*/flags; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2527 drawState = DWT.FOREGROUND; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2528 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2529 OS.gtk_tree_model_get1 (modelHandle, item.handle, Table.BACKGROUND_COLUMN, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2530 if (ptr is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2531 int modelIndex = columnCount is 0 ? Table.FIRST_COLUMN : columns [columnIndex].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2532 OS.gtk_tree_model_get1 (modelHandle, item.handle, modelIndex + Table.CELL_BACKGROUND, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2533 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2534 if (ptr !is null) drawState |= DWT.BACKGROUND; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2535 if ((flags & OS.GTK_CELL_RENDERER_SELECTED) !is 0) drawState |= DWT.SELECTED; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2536 if ((flags & OS.GTK_CELL_RENDERER_FOCUSED) !is 0) drawState |= DWT.FOCUSED; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2537 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2538 GdkRectangle rect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2539 auto path = OS.gtk_tree_model_get_path (modelHandle, iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2540 OS.gtk_tree_view_get_background_area (handle, path, columnHandle, &rect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2541 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2542 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2543 if ((drawState & DWT.SELECTED) is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2544 Control control = findBackgroundControl (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2545 if (control !is null && control.backgroundImage !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2546 OS.gdk_window_clear_area (window, rect.x, rect.y, rect.width, rect.height); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2547 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2548 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2549 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2550 if (hooks (DWT.EraseItem)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2551 bool wasSelected = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2552 if ((drawState & DWT.SELECTED) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2553 wasSelected = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2554 OS.gdk_window_clear_area (window, rect.x, rect.y, rect.width, rect.height); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2555 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2556 GC gc = new GC (this); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2557 if ((drawState & DWT.SELECTED) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2558 gc.setBackground (display.getSystemColor (DWT.COLOR_LIST_SELECTION)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2559 gc.setForeground (display.getSystemColor (DWT.COLOR_LIST_SELECTION_TEXT)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2560 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2561 gc.setBackground (item.getBackground (columnIndex)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2562 gc.setForeground (item.getForeground (columnIndex)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2563 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2564 gc.setFont (item.getFont (columnIndex)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2565 gc.setClipping (rect.x, rect.y, rect.width, rect.height); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2566 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2567 event.item = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2568 event.index = columnIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2569 event.gc = gc; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2570 event.x = rect.x; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2571 event.y = rect.y; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2572 event.width = rect.width; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2573 event.height = rect.height; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2574 event.detail = drawState; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2575 sendEvent (DWT.EraseItem, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2576 drawForeground = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2577 drawState = event.doit ? event.detail : 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2578 drawFlags &= ~(OS.GTK_CELL_RENDERER_FOCUSED | OS.GTK_CELL_RENDERER_SELECTED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2579 if ((drawState & DWT.SELECTED) !is 0) drawFlags |= OS.GTK_CELL_RENDERER_SELECTED; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2580 if ((drawState & DWT.FOCUSED) !is 0) drawFlags |= OS.GTK_CELL_RENDERER_FOCUSED; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2581 if ((drawState & DWT.SELECTED) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2582 auto style = OS.gtk_widget_get_style (widget); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2583 //TODO - parity and sorted |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2584 OS.gtk_paint_flat_box (style, window, OS.GTK_STATE_SELECTED, OS.GTK_SHADOW_NONE, &rect, widget, "cell_odd".ptr, rect.x, rect.y, rect.width, rect.height); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2585 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2586 if (wasSelected) drawForeground = gc.getForeground ().handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2587 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2588 gc.dispose(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2589 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2590 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2591 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2592 int /*long*/ result = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2593 if ((drawState & DWT.BACKGROUND) !is 0 && (drawState & DWT.SELECTED) is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2594 GC gc = new GC (this); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2595 gc.setBackground (item.getBackground (columnIndex)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2596 gc.fillRectangle (background_area.x, background_area.y, background_area.width, background_area.height); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2597 gc.dispose (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2598 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2599 if ((drawState & DWT.FOREGROUND) !is 0 || OS.GTK_IS_CELL_RENDERER_TOGGLE (cell)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2600 auto g_class = OS.g_type_class_peek_parent (OS.G_OBJECT_GET_CLASS (cell)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2601 GtkCellRendererClass* klass = cast(GtkCellRendererClass*)g_class; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2602 if (drawForeground !is null && OS.GTK_IS_CELL_RENDERER_TEXT (cell)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2603 OS.g_object_set1 (cell, OS.foreground_gdk.ptr, cast(int)drawForeground); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2604 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2605 klass.render( cell, window, widget, background_area, cell_area, expose_area, drawFlags); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2606 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2607 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2608 if (OS.GTK_IS_CELL_RENDERER_TEXT (cell)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2609 if (hooks (DWT.PaintItem)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2610 GdkRectangle rect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2611 auto path = OS.gtk_tree_model_get_path (modelHandle, iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2612 OS.gtk_tree_view_get_background_area (handle, path, columnHandle, &rect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2613 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2614 ignoreSize = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2615 int contentX, contentWidth; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2616 OS.gtk_cell_renderer_get_size (cell, handle, null, null, null, &contentWidth, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2617 OS.gtk_tree_view_column_cell_get_position (columnHandle, cell, &contentX, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2618 ignoreSize = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2619 Image image = item.getImage (columnIndex); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2620 int imageWidth = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2621 if (image !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2622 Rectangle bounds = image.getBounds (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2623 imageWidth = bounds.width; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2624 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2625 contentX -= imageWidth; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2626 contentWidth += imageWidth; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2627 GC gc = new GC (this); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2628 if ((drawState & DWT.SELECTED) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2629 gc.setBackground (display.getSystemColor (DWT.COLOR_LIST_SELECTION)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2630 gc.setForeground (display.getSystemColor (DWT.COLOR_LIST_SELECTION_TEXT)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2631 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2632 gc.setBackground (item.getBackground (columnIndex)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2633 Color foreground = drawForeground !is null ? Color.gtk_new (display, drawForeground) : item.getForeground (columnIndex); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2634 gc.setForeground (foreground); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2635 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2636 gc.setFont (item.getFont (columnIndex)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2637 gc.setClipping (rect.x, rect.y, rect.width, rect.height); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2638 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2639 event.item = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2640 event.index = columnIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2641 event.gc = gc; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2642 event.x = rect.x + contentX; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2643 event.y = rect.y; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2644 event.width = contentWidth; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2645 event.height = rect.height; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2646 event.detail = drawState; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2647 sendEvent (DWT.PaintItem, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2648 gc.dispose(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2649 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2650 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2651 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2652 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2653 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2654 void resetCustomDraw () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2655 if ((style & DWT.VIRTUAL) !is 0 || ownerDraw) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2656 int end = Math.max (1, columnCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2657 for (int i=0; i<end; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2658 bool customDraw = columnCount !is 0 ? columns [i].customDraw : firstCustomDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2659 if (customDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2660 auto column = OS.gtk_tree_view_get_column (handle, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2661 auto textRenderer = getTextRenderer (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2662 display.doCellDataProc( null, cast(GtkTreeViewColumn*)column, cast(GtkCellRenderer*)textRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2663 if (columnCount !is 0) columns [i].customDraw = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2664 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2665 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2666 firstCustomDraw = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2667 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2668 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2669 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2670 * Selects the item at the given zero-relative index in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2671 * If the item at the index was already selected, it remains |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2672 * selected. Indices that are out of range are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2673 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2674 * @param index the index of the item to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2675 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2676 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2677 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2678 * <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
|
2679 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2680 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2681 public void select (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2682 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2683 if (!(0 <= index && index < itemCount)) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2684 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2685 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2686 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2687 TableItem item = _getItem (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2688 OS.gtk_tree_selection_select_iter (selection, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2689 if ((style & DWT.SINGLE) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2690 auto path = OS.gtk_tree_model_get_path (modelHandle, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2691 OS.gtk_tree_view_set_cursor (handle, path, null, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2692 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2693 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2694 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2695 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2696 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2697 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2698 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2699 * Selects the items in the range specified by the given zero-relative |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2700 * indices in the receiver. The range of indices is inclusive. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2701 * The current selection is not cleared before the new items are selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2702 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2703 * If an item in the given range is not selected, it is selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2704 * If an item in the given range was already selected, it remains selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2705 * Indices that are out of range are ignored and no items will be selected |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2706 * if start is greater than end. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2707 * If the receiver is single-select and there is more than one item in the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2708 * given range, then all indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2709 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2710 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2711 * @param start the start of the range |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2712 * @param end the end of the range |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2713 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2714 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2715 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2716 * <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
|
2717 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2718 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2719 * @see Table#setSelection(int,int) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2720 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2721 public void select (int start, int end) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2722 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2723 if (end < 0 || start > end || ((style & DWT.SINGLE) !is 0 && start !is end)) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2724 if (itemCount is 0 || start >= itemCount) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2725 start = Math.max (0, start); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2726 end = Math.min (end, itemCount - 1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2727 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2728 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2729 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2730 for (int index=start; index<=end; index++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2731 TableItem item = _getItem (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2732 OS.gtk_tree_selection_select_iter (selection, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2733 if ((style & DWT.SINGLE) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2734 auto path = OS.gtk_tree_model_get_path (modelHandle, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2735 OS.gtk_tree_view_set_cursor (handle, path, null, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2736 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2737 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2738 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2739 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2740 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2741 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2742 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2743 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2744 * Selects the items at the given zero-relative indices in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2745 * The current selection is not cleared before the new items are selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2746 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2747 * If the item at a given index is not selected, it is selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2748 * If the item at a given index was already selected, it remains selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2749 * Indices that are out of range and duplicate indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2750 * If the receiver is single-select and multiple indices are specified, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2751 * then all indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2752 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2753 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2754 * @param indices the array of indices for the items to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2755 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2756 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2757 * <li>ERROR_NULL_ARGUMENT - if the array of indices is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2758 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2759 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2760 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2761 * <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
|
2762 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2763 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2764 * @see Table#setSelection(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2765 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2766 public void select (int [] indices) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2767 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2768 if (indices is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2769 int length = indices.length; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2770 if (length is 0 || ((style & DWT.SINGLE) !is 0 && length > 1)) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2771 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2772 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2773 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2774 for (int i=0; i<length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2775 int index = indices [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2776 if (!(0 <= index && index < itemCount)) continue; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2777 TableItem item = _getItem (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2778 OS.gtk_tree_selection_select_iter (selection, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2779 if ((style & DWT.SINGLE) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2780 auto path = OS.gtk_tree_model_get_path (modelHandle, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2781 OS.gtk_tree_view_set_cursor (handle, path, null, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2782 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2783 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2784 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2785 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2786 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2787 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2788 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2789 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2790 * Selects all of the items in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2791 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2792 * If the receiver is single-select, do nothing. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2793 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2794 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2795 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2796 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2797 * <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
|
2798 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2799 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2800 public void selectAll () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2801 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2802 if ((style & DWT.SINGLE) !is 0) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2803 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2804 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2805 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2806 OS.gtk_tree_selection_select_all (selection); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2807 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2808 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2809 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2810 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2811 void selectFocusIndex (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2812 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2813 * Note that this method both selects and sets the focus to the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2814 * specified index, so any previous selection in the list will be lost. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2815 * gtk does not provide a way to just set focus to a specified list item. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2816 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2817 if (!(0 <= index && index < itemCount)) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2818 TableItem item = _getItem (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2819 auto path = OS.gtk_tree_model_get_path (modelHandle, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2820 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2821 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2822 OS.gtk_tree_view_set_cursor (handle, path, null, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2823 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2824 * Bug in GTK. For some reason, when an event loop is run from |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2825 * within a key pressed handler and a dialog is displayed that |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2826 * contains a GtkTreeView, gtk_tree_view_set_cursor() does |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2827 * not set the cursor or select the item. The fix is to select the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2828 * item with gtk_tree_selection_select_iter() as well. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2829 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2830 * NOTE: This happens in GTK 2.2.1 and is fixed in GTK 2.2.4. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2831 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2832 OS.gtk_tree_selection_select_iter (selection, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2833 OS.g_signal_handlers_unblock_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2834 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2835 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2836 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2837 override void setBackgroundColor (GdkColor* color) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2838 super.setBackgroundColor (color); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2839 OS.gtk_widget_modify_base (handle, 0, color); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2840 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2841 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2842 override void setBackgroundPixmap (GdkPixmap* pixmap) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2843 super.setBackgroundPixmap (pixmap); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2844 auto window = paintWindow (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2845 if (window !is null) OS.gdk_window_set_back_pixmap (window, null, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2846 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2847 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2848 override int setBounds (int x, int y, int width, int height, bool move, bool resize) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2849 int result = super.setBounds (x, y, width, height, move, resize); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2850 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2851 * Bug on GTK. The tree view sometimes does not get a paint |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2852 * event or resizes to a one pixel square when resized in a new |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2853 * shell that is not visible after any event loop has been run. The |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2854 * problem is intermittent. It doesn't seem to happen the first time |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2855 * a new shell is created. The fix is to ensure the tree view is realized |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2856 * after it has been resized. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2857 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2858 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2859 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2860 * Bug in GTK. An empty GtkTreeView fails to repaint the focus rectangle |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2861 * correctly when resized on versions before 2.6.0. The fix is to force |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2862 * the widget to redraw. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2863 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2864 if (OS.GTK_VERSION < OS.buildVERSION (2, 6, 0) && itemCount is 0) redraw (false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2865 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2866 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2867 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2868 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2869 * Sets the order that the items in the receiver should |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2870 * be displayed in to the given argument which is described |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2871 * in terms of the zero-relative ordering of when the items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2872 * were added. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2873 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2874 * @param order the new order to display the items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2875 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2876 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2877 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2878 * <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
|
2879 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2880 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2881 * <li>ERROR_NULL_ARGUMENT - if the item order is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2882 * <li>ERROR_INVALID_ARGUMENT - if the item order is not the same length as the number of items</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2883 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2884 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2885 * @see Table#getColumnOrder() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2886 * @see TableColumn#getMoveable() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2887 * @see TableColumn#setMoveable(bool) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2888 * @see DWT#Move |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2889 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2890 * @since 3.1 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2891 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2892 public void setColumnOrder (int [] order) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2893 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2894 if (order is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2895 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2896 if (order.length > 0) error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2897 return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2898 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2899 if (order.length !is columnCount) error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2900 bool [] seen = new bool [columnCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2901 for (int i = 0; i<order.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2902 int index = order [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2903 if (index < 0 || index >= columnCount) error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2904 if (seen [index]) error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2905 seen [index] = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2906 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2907 for (int i=0; i<order.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2908 auto column = columns [order [i]].handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2909 auto baseColumn = i is 0 ? null : columns [order [i-1]].handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2910 OS.gtk_tree_view_move_column_after (handle, column, baseColumn); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2911 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2912 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2913 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2914 override void setFontDescription (PangoFontDescription* font) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2915 super.setFontDescription (font); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2916 TableColumn[] columns = getColumns (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2917 for (int i = 0; i < columns.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2918 if (columns[i] !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2919 columns[i].setFontDescription (font); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2920 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2921 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2922 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2923 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2924 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2925 * Marks the receiver's header as visible if the argument is <code>true</code>, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2926 * and marks it invisible otherwise. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2927 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2928 * If one of the receiver's ancestors is not visible or some |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2929 * other condition makes the receiver not visible, marking |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2930 * it visible may not actually cause it to be displayed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2931 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2932 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2933 * @param show the new visibility state |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2934 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2935 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2936 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2937 * <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
|
2938 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2939 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2940 public void setHeaderVisible (bool show) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2941 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2942 OS.gtk_tree_view_set_headers_visible (handle, show); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2943 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2944 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2945 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2946 * Sets the number of items contained in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2947 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2948 * @param count the number of items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2949 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2950 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2951 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2952 * <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
|
2953 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2954 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2955 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2956 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2957 public void setItemCount (int count) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2958 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2959 count = Math.max (0, count); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2960 if (count is itemCount) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2961 bool isVirtual = (style & DWT.VIRTUAL) !is 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2962 if (!isVirtual) setRedraw (false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2963 remove (count, itemCount - 1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2964 int length = Math.max (4, (count + 3) / 4 * 4); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2965 TableItem [] newItems = new TableItem [length]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2966 System.arraycopy (items, 0, newItems, 0, itemCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2967 items = newItems; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2968 if (isVirtual) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2969 GtkTreeIter iter; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2970 for (int i=itemCount; i<count; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2971 OS.gtk_list_store_append (modelHandle, &iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2972 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2973 itemCount = count; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2974 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2975 for (int i=itemCount; i<count; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2976 new TableItem (this, DWT.NONE, i, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2977 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2978 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2979 if (!isVirtual) setRedraw (true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2980 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2981 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2982 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2983 * Marks the receiver's lines as visible if the argument is <code>true</code>, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2984 * and marks it invisible otherwise. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2985 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2986 * If one of the receiver's ancestors is not visible or some |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2987 * other condition makes the receiver not visible, marking |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2988 * it visible may not actually cause it to be displayed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2989 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2990 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2991 * @param show the new visibility state |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2992 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2993 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2994 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2995 * <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
|
2996 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2997 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2998 public void setLinesVisible (bool show) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2999 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3000 OS.gtk_tree_view_set_rules_hint (handle, show); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3001 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3002 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3003 override void setParentBackground () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3004 super.setParentBackground (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3005 auto window = paintWindow (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3006 if (window !is null) OS.gdk_window_set_back_pixmap (window, null, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3007 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3008 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
3009 override void setParentWindow (GtkWidget* widget) { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3010 auto window = eventWindow (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3011 OS.gtk_widget_set_parent_window (widget, window); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3012 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3013 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3014 override public void setRedraw (bool redraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3015 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3016 super.setRedraw (redraw); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3017 if (redraw && drawCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3018 /* Resize the item array to match the item count */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3019 if (items.length > 4 && items.length - itemCount > 3) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3020 int length = Math.max (4, (itemCount + 3) / 4 * 4); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3021 TableItem [] newItems = new TableItem [length]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3022 System.arraycopy (items, 0, newItems, 0, itemCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3023 items = newItems; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3024 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3025 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3026 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3027 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3028 void setScrollWidth (GtkTreeViewColumn* column, TableItem item) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3029 if (columnCount !is 0 || currentItem is item) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3030 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3031 * Use GTK_TREE_VIEW_COLUMN_GROW_ONLY on GTK versions < 2.3.2 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3032 * because fixed_height_mode is not supported. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3033 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3034 if (((style & DWT.VIRTUAL) !is 0) && OS.GTK_VERSION < OS.buildVERSION (2, 3, 2)) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3035 int width = OS.gtk_tree_view_column_get_fixed_width (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3036 int itemWidth = calculateWidth (column, cast(GtkTreeIter*)item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3037 if (width < itemWidth) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3038 OS.gtk_tree_view_column_set_fixed_width (column, itemWidth); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3039 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3040 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3041 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3042 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3043 * Sets the column used by the sort indicator for the receiver. A null |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3044 * value will clear the sort indicator. The current sort column is cleared |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3045 * before the new column is set. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3046 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3047 * @param column the column used by the sort indicator or <code>null</code> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3048 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3049 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3050 * <li>ERROR_INVALID_ARGUMENT - if the column is disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3051 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3052 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3053 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3054 * <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
|
3055 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3056 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3057 * @since 3.2 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3058 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3059 public void setSortColumn (TableColumn column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3060 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3061 if (column !is null && column.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3062 if (sortColumn !is null && !sortColumn.isDisposed()) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3063 OS.gtk_tree_view_column_set_sort_indicator (sortColumn.handle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3064 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3065 sortColumn = column; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3066 if (sortColumn !is null && sortDirection !is DWT.NONE) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3067 OS.gtk_tree_view_column_set_sort_indicator (sortColumn.handle, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3068 OS.gtk_tree_view_column_set_sort_order (sortColumn.handle, sortDirection is DWT.DOWN ? 0 : 1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3069 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3070 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3071 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3072 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3073 * Sets the direction of the sort indicator for the receiver. The value |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3074 * can be one of <code>UP</code>, <code>DOWN</code> or <code>NONE</code>. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3075 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3076 * @param direction the direction of the sort indicator |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3077 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3078 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3079 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3080 * <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
|
3081 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3082 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3083 * @since 3.2 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3084 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3085 public void setSortDirection (int direction) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3086 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3087 if (direction !is DWT.UP && direction !is DWT.DOWN && direction !is DWT.NONE) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3088 sortDirection = direction; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3089 if (sortColumn is null || sortColumn.isDisposed ()) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3090 if (sortDirection is DWT.NONE) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3091 OS.gtk_tree_view_column_set_sort_indicator (sortColumn.handle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3092 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3093 OS.gtk_tree_view_column_set_sort_indicator (sortColumn.handle, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3094 OS.gtk_tree_view_column_set_sort_order (sortColumn.handle, sortDirection is DWT.DOWN ? 0 : 1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3095 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3096 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3097 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3098 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3099 * Selects the item at the given zero-relative index in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3100 * The current selection is first cleared, then the new item is selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3101 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3102 * @param index the index of the item to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3103 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3104 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3105 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3106 * <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
|
3107 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3108 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3109 * @see Table#deselectAll() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3110 * @see Table#selectcast(int) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3111 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3112 public void setSelection (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3113 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3114 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3115 deselectAll (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3116 selectFocusIndex (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3117 showSelection (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3118 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3119 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3120 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3121 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3122 * Selects the items in the range specified by the given zero-relative |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3123 * indices in the receiver. The range of indices is inclusive. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3124 * The current selection is cleared before the new items are selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3125 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3126 * Indices that are out of range are ignored and no items will be selected |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3127 * if start is greater than end. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3128 * If the receiver is single-select and there is more than one item in the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3129 * given range, then all indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3130 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3131 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3132 * @param start the start index of the items to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3133 * @param end the end index of the items to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3134 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3135 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3136 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3137 * <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
|
3138 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3139 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3140 * @see Table#deselectAll() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3141 * @see Table#select(int,int) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3142 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3143 public void setSelection (int start, int end) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3144 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3145 deselectAll(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3146 if (end < 0 || start > end || ((style & DWT.SINGLE) !is 0 && start !is end)) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3147 if (itemCount is 0 || start >= itemCount) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3148 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3149 start = Math.max (0, start); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3150 end = Math.min (end, itemCount - 1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3151 selectFocusIndex (start); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3152 if ((style & DWT.MULTI) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3153 select (start, end); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3154 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3155 showSelection (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3156 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3157 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3158 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3159 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3160 * Selects the items at the given zero-relative indices in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3161 * The current selection is cleared before the new items are selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3162 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3163 * Indices that are out of range and duplicate indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3164 * If the receiver is single-select and multiple indices are specified, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3165 * then all indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3166 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3167 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3168 * @param indices the indices of the items to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3169 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3170 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3171 * <li>ERROR_NULL_ARGUMENT - if the array of indices is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3172 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3173 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3174 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3175 * <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
|
3176 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3177 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3178 * @see Table#deselectAll() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3179 * @see Table#select(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3180 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3181 public void setSelection (int [] indices) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3182 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3183 if (indices is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3184 deselectAll (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3185 int length = indices.length; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3186 if (length is 0 || ((style & DWT.SINGLE) !is 0 && length > 1)) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3187 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3188 selectFocusIndex (indices [0]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3189 if ((style & DWT.MULTI) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3190 select (indices); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3191 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3192 showSelection (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3193 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3194 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3195 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3196 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3197 * Sets the receiver's selection to the given item. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3198 * The current selection is cleared before the new item is selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3199 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3200 * If the item is not in the receiver, then it is ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3201 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3202 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3203 * @param item the item to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3204 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3205 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3206 * <li>ERROR_NULL_ARGUMENT - if the item is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3207 * <li>ERROR_INVALID_ARGUMENT - if the item has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3208 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3209 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3210 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3211 * <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
|
3212 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3213 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3214 * @since 3.2 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3215 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3216 public void setSelection (TableItem item) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3217 if (item is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3218 setSelection ( [item] ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3219 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3220 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3221 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3222 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3223 * Sets the receiver's selection to be the given array of items. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3224 * The current selection is cleared before the new items are selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3225 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3226 * Items that are not in the receiver are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3227 * If the receiver is single-select and multiple items are specified, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3228 * then all items are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3229 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3230 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3231 * @param items the array of items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3232 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3233 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3234 * <li>ERROR_NULL_ARGUMENT - if the array of items is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3235 * <li>ERROR_INVALID_ARGUMENT - if one of the items has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3236 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3237 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3238 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3239 * <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
|
3240 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3241 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3242 * @see Table#deselectAll() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3243 * @see Table#select(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3244 * @see Table#setSelection(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3245 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3246 public void setSelection (TableItem [] items) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3247 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3248 if (items is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3249 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3250 deselectAll (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3251 int length = items.length; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3252 if (!(length is 0 || ((style & DWT.SINGLE) !is 0 && length > 1))) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3253 bool first = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3254 for (int i = 0; i < length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3255 int index = indexOf (items [i]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3256 if (index !is -1) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3257 if (first) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3258 first = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3259 selectFocusIndex (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3260 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3261 select (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3262 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3263 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3264 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3265 showSelection (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3266 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3267 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3268 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3269 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3270 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3271 * Sets the zero-relative index of the item which is currently |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3272 * at the top of the receiver. This index can change when items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3273 * are scrolled or new items are added and removed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3274 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3275 * @param index the index of the top item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3276 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3277 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3278 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3279 * <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
|
3280 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3281 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3282 public void setTopIndex (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3283 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3284 if (!(0 <= index && index < itemCount)) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3285 auto path = OS.gtk_tree_model_get_path (modelHandle, _getItem (index).handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3286 OS.gtk_tree_view_scroll_to_cell (handle, path, null, true, 0f, 0f); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3287 if (OS.GTK_VERSION < OS.buildVERSION (2, 8, 0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3288 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3289 * Bug in GTK. According to the documentation, gtk_tree_view_scroll_to_cell |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3290 * should vertically scroll the cell to the top if use_align is true and row_align is 0. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3291 * However, prior to version 2.8 it does not scroll at all. The fix is to determine |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3292 * the new location and use gtk_tree_view_scroll_to_point. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3293 * If the widget is a pinhead, calling gtk_tree_view_scroll_to_point |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3294 * will have no effect. Therefore, it is still neccessary to call |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3295 * gtk_tree_view_scroll_to_cell. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3296 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3297 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3298 GdkRectangle cellRect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3299 OS.gtk_tree_view_get_cell_area (handle, path, null, &cellRect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3300 int tx, ty; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3301 OS.gtk_tree_view_widget_to_tree_coords(handle, cellRect.x, cellRect.y, &tx, &ty); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3302 OS.gtk_tree_view_scroll_to_point (handle, -1, ty); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3303 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3304 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3305 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3306 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3307 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3308 * Shows the column. If the column is already showing in the receiver, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3309 * this method simply returns. Otherwise, the columns are scrolled until |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3310 * the column is visible. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3311 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3312 * @param column the column to be shown |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3313 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3314 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3315 * <li>ERROR_NULL_ARGUMENT - if the column is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3316 * <li>ERROR_INVALID_ARGUMENT - if the column has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3317 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3318 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3319 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3320 * <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
|
3321 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3322 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3323 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3324 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3325 public void showColumn (TableColumn column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3326 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3327 if (column is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3328 if (column.isDisposed()) error(DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3329 if (column.parent !is this) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3330 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3331 * This code is intentionally commented. According to the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3332 * documentation, gtk_tree_view_scroll_to_cell should scroll the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3333 * minimum amount to show the column but instead it scrolls strangely. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3334 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3335 //OS.gtk_tree_view_scroll_to_cell (handle, 0, column.handle, false, 0, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3336 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3337 GdkRectangle cellRect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3338 OS.gtk_tree_view_get_cell_area (handle, null, column.handle, &cellRect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3339 GdkRectangle visibleRect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3340 OS.gtk_tree_view_get_visible_rect (handle, &visibleRect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3341 if (cellRect.x < visibleRect.x) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3342 OS.gtk_tree_view_scroll_to_point (handle, cellRect.x, -1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3343 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3344 int width = Math.min (visibleRect.width, cellRect.width); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3345 if (cellRect.x + width > visibleRect.x + visibleRect.width) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3346 int tree_x = cellRect.x + width - visibleRect.width; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3347 OS.gtk_tree_view_scroll_to_point (handle, tree_x, -1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3348 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3349 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3350 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3351 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3352 bool showFirstColumn () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3353 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3354 * Bug in GTK. If no columns are visible, changing the selection |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3355 * will fail. The fix is to temporarily make a column visible. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3356 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3357 int columnCount = Math.max (1, this.columnCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3358 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3359 auto column = OS.gtk_tree_view_get_column (handle, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3360 if (OS.gtk_tree_view_column_get_visible (column)) return false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3361 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3362 auto firstColumn = OS.gtk_tree_view_get_column (handle, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3363 OS.gtk_tree_view_column_set_visible (firstColumn, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3364 return true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3365 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3366 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3367 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3368 * Shows the item. If the item is already showing in the receiver, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3369 * this method simply returns. Otherwise, the items are scrolled until |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3370 * the item is visible. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3371 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3372 * @param item the item to be shown |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3373 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3374 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3375 * <li>ERROR_NULL_ARGUMENT - if the item is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3376 * <li>ERROR_INVALID_ARGUMENT - if the item has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3377 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3378 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3379 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3380 * <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
|
3381 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3382 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3383 * @see Table#showSelection() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3384 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3385 public void showItem (TableItem item) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3386 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3387 if (item is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3388 if (item.isDisposed()) error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3389 if (item.parent !is this) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3390 showItem (cast(GtkTreeIter*)item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3391 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3392 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3393 void showItem (GtkTreeIter* iter) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3394 auto path = OS.gtk_tree_model_get_path (modelHandle, iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3395 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3396 * This code intentionally commented. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3397 * Bug in GTK. According to the documentation, gtk_tree_view_scroll_to_cell |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3398 * should scroll the minimum amount to show the cell if use_align is false. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3399 * However, what actually happens is the cell is scrolled to the top. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3400 * The fix is to determine the new location and use gtk_tree_view_scroll_to_point. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3401 * If the widget is a pinhead, calling gtk_tree_view_scroll_to_point |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3402 * will have no effect. Therefore, it is still neccessary to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3403 * call gtk_tree_view_scroll_to_cell. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3404 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3405 // OS.gtk_tree_view_scroll_to_cell (handle, path, 0, false, 0, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3406 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3407 GdkRectangle visibleRect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3408 OS.gtk_tree_view_get_visible_rect (handle, &visibleRect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3409 GdkRectangle cellRect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3410 OS.gtk_tree_view_get_cell_area (handle, path, null, &cellRect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3411 int tx, ty; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3412 OS.gtk_tree_view_widget_to_tree_coords(handle, cellRect.x, cellRect.y, &tx, &ty); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3413 if (ty < visibleRect.y ) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3414 OS.gtk_tree_view_scroll_to_cell (handle, path, null, true, 0f, 0f); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3415 OS.gtk_tree_view_scroll_to_point (handle, -1, ty); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3416 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3417 int height = Math.min (visibleRect.height, cellRect.height); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3418 if (ty + height > visibleRect.y + visibleRect.height) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3419 OS.gtk_tree_view_scroll_to_cell (handle, path, null, true, 1f, 0f); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3420 ty += cellRect.height - visibleRect.height; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3421 OS.gtk_tree_view_scroll_to_point (handle, -1, ty); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3422 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3423 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3424 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3425 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3426 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3427 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3428 * Shows the selection. If the selection is already showing in the receiver, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3429 * this method simply returns. Otherwise, the items are scrolled until |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3430 * the selection is visible. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3431 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3432 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3433 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3434 * <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
|
3435 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3436 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3437 * @see Table#showItem(TableItem) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3438 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3439 public void showSelection () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3440 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3441 TableItem [] selection = getSelection (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3442 if (selection.length is 0) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3443 TableItem item = selection [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3444 showItem (cast(GtkTreeIter*)item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3445 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3446 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3447 override void treeSelectionProc (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, int[] selection, int length_) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3448 if (selection !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3449 auto indices = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3450 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3451 selection [length_] = indices [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3452 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3453 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3454 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3455 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3456 override void updateScrollBarValue (ScrollBar bar) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3457 super.updateScrollBarValue (bar); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3458 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3459 * Bug in GTK. Scrolling changes the XWindow position |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3460 * and makes the child widgets appear to scroll even |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3461 * though when queried their position is unchanged. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3462 * The fix is to queue a resize event for each child to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3463 * force the position to be corrected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3464 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3465 auto parentHandle = parentingHandle (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3466 auto list = OS.gtk_container_get_children (parentHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3467 if (list is null) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3468 auto temp = list; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3469 while (temp !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3470 auto widget = OS.g_list_data (temp); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3471 if (widget !is null) OS.gtk_widget_queue_resize (widget); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3472 temp = OS.g_list_next (temp); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3473 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3474 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3475 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3476 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3477 } |