Mercurial > projects > dwt-linux
annotate dwt/widgets/Table.d @ 240:ce446666f5a2
Update to SWT 3.4M7
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 12 May 2008 19:13:01 +0200 |
parents | 380bad9f6852 |
children | 5a30aa9820f3 |
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 /* |
240 | 187 * Feature in Windows. Even when WS_HSCROLL or |
188 * WS_VSCROLL is not specified, Windows creates | |
189 * trees and tables with scroll bars. The fix | |
190 * is to set H_SCROLL and V_SCROLL. | |
191 * | |
192 * NOTE: This code appears on all platforms so that | |
193 * applications have consistent scroll bar behavior. | |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
194 */ |
240 | 195 if ((style & DWT.NO_SCROLL) is 0) { |
196 style |= DWT.H_SCROLL | DWT.V_SCROLL; | |
197 } | |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
198 /* GTK is always FULL_SELECTION */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
199 style |= DWT.FULL_SELECTION; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
200 return checkBits (style, DWT.SINGLE, DWT.MULTI, 0, 0, 0, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
201 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
202 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
203 override void cellDataProc ( |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
204 GtkTreeViewColumn *tree_column, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
205 GtkCellRenderer *cell, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
206 GtkTreeModel *tree_model, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
207 GtkTreeIter *iter, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
208 void* data) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
209 { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
210 if (cell is cast(GtkCellRenderer*)ignoreCell) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
211 auto path = OS.gtk_tree_model_get_path (tree_model, iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
212 auto index = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
213 TableItem item = _getItem (index[0]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
214 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
215 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
|
216 bool isPixbuf = OS.GTK_IS_CELL_RENDERER_PIXBUF (cast(GTypeInstance*)cell); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
217 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
|
218 int modelIndex = -1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
219 bool customDraw = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
220 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
221 modelIndex = Table.FIRST_COLUMN; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
222 customDraw = firstCustomDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
223 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
224 TableColumn column = cast(TableColumn) display.getWidget (cast(GtkWidget*)tree_column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
225 if (column !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
226 modelIndex = column.modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
227 customDraw = column.customDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
228 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
229 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
230 if (modelIndex is -1) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
231 bool setData = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
232 if ((style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
233 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
234 * 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
|
235 * 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
|
236 * 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
|
237 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
238 if (OS.GTK_VERSION < OS.buildVERSION (2, 3, 2)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
239 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
240 GdkRectangle visible; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
241 OS.gtk_tree_view_get_visible_rect (handle, &visible); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
242 GdkRectangle area; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
243 path = OS.gtk_tree_model_get_path (tree_model, iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
244 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
|
245 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
246 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
|
247 /* 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
|
248 * the correct height. |
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 (imageList !is null && imageList.pixbufs.length > 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
251 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
|
252 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
253 return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
254 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
255 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
256 if (!item.cached) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
257 lastIndexOf = index[0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
258 setData = checkData (item); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
259 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
260 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
261 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
262 if (setData) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
263 if (isPixbuf) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
264 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
|
265 OS.g_object_set1 (cell, OS.pixbuf.ptr, cast(int)ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
266 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
267 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
|
268 if (ptr !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
269 OS.g_object_set1 (cell, OS.text.ptr, cast(int)ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
270 OS.g_free (ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
271 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
272 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
273 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
274 if (customDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
275 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
276 * 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
|
277 * 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
|
278 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
279 if (OS.GTK_VERSION > OS.buildVERSION (2, 2, 1)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
280 if (!ownerDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
281 ptr = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
282 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
|
283 if (ptr !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
284 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
|
285 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
286 } |
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 if (!isPixbuf) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
289 ptr = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
290 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
|
291 if (ptr !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
292 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
|
293 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
294 ptr = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
295 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
|
296 if (ptr !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
297 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
|
298 } |
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
301 if (setData) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
302 ignoreCell = cast(GtkWidget*)cell; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
303 setScrollWidth (tree_column, item); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
304 ignoreCell = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
305 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
306 return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
307 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
308 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
309 bool checkData (TableItem item) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
310 if (item.cached) return true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
311 if ((style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
312 item.cached = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
313 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
314 event.item = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
315 event.index = indexOf (item); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
316 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
|
317 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
|
318 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
|
319 currentItem = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
320 sendEvent (DWT.SetData, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
321 //widget could be disposed at this point |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
322 currentItem = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
323 if (isDisposed ()) return false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
324 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
|
325 if (item.isDisposed ()) return false; |
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 return true; |
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 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
330 protected override void checkSubclass () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
331 if (!isValidSubclass ()) error (DWT.ERROR_INVALID_SUBCLASS); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
332 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
333 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
334 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
335 * Adds the listener to the collection of listeners who will |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
336 * 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
|
337 * it one of the messages defined in the <code>SelectionListener</code> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
338 * interface. |
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 * 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
|
341 * 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
|
342 * 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
|
343 * <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
|
344 * 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
|
345 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
346 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
347 * @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
|
348 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
349 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
350 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
351 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
352 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
353 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
354 * <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
|
355 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
356 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
357 * @see SelectionListener |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
358 * @see #removeSelectionListener |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
359 * @see SelectionEvent |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
360 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
361 public void addSelectionListener (SelectionListener listener) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
362 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
363 if (listener is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
364 TypedListener typedListener = new TypedListener (listener); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
365 addListener (DWT.Selection, typedListener); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
366 addListener (DWT.DefaultSelection, typedListener); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
367 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
368 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
369 int calculateWidth (GtkTreeViewColumn* column, GtkTreeIter* iter) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
370 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
|
371 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
372 * 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
|
373 * 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
|
374 * 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
|
375 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
376 // Code intentionally commented |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
377 //int [] width = new int [1]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
378 //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
|
379 //return width [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
380 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
381 int width = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
382 int w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
383 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
|
384 width += 2 * w; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
385 auto list = OS.gtk_tree_view_column_get_cell_renderers (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
386 if (list is null) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
387 auto temp = list; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
388 while (temp !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
389 auto renderer = OS.g_list_data (temp); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
390 if (renderer !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
391 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
|
392 width += w; |
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 temp = OS.g_list_next (temp); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
395 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
396 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
397 return width; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
398 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
399 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
400 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
401 * 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
|
402 * 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
|
403 * 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
|
404 * these attributes are requested again as needed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
405 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
406 * @param index the index of the item to clear |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
407 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
408 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
409 * <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
|
410 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
411 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
412 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
413 * <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
|
414 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
415 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
416 * @see DWT#VIRTUAL |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
417 * @see DWT#SetData |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
418 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
419 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
420 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
421 public void clear (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
422 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
423 if (!(0 <= index && index < itemCount)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
424 error(DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
425 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
426 TableItem item = items [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
427 if (item !is null) item.clear (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
428 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
429 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
430 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
431 * Removes the items from the receiver which are between the given |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
432 * zero-relative start and end indices (inclusive). The text, icon |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
433 * 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
|
434 * 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
|
435 * these attributes are requested again as needed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
436 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
437 * @param start the start index of the item to clear |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
438 * @param end the end index of the item to clear |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
439 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
440 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
441 * <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
|
442 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
443 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
444 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
445 * <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
|
446 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
447 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
448 * @see DWT#VIRTUAL |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
449 * @see DWT#SetData |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
450 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
451 * @since 3.0 |
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 public void clear (int start, int end) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
454 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
455 if (start > end) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
456 if (!(0 <= start && start <= end && end < itemCount)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
457 error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
458 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
459 if (start is 0 && end is itemCount - 1) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
460 clearAll(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
461 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
462 for (int i=start; i<=end; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
463 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
464 if (item !is null) item.clear(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
465 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
466 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
467 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
468 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
469 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
470 * 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
|
471 * 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
|
472 * 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
|
473 * these attributes are requested again as needed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
474 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
475 * @param indices the array of indices of the items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
476 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
477 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
478 * <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
|
479 * <li>ERROR_NULL_ARGUMENT - if the indices array is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
480 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
481 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
482 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
483 * <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
|
484 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
485 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
486 * @see DWT#VIRTUAL |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
487 * @see DWT#SetData |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
488 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
489 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
490 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
491 public void clear (int [] indices) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
492 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
493 if (indices is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
494 if (indices.length is 0) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
495 for (int i=0; i<indices.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
496 if (!(0 <= indices [i] && indices [i] < itemCount)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
497 error (DWT.ERROR_INVALID_RANGE); |
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 for (int i=0; i<indices.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
501 TableItem item = items [indices [i]]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
502 if (item !is null) item.clear(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
503 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
504 } |
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 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
507 * 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
|
508 * 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
|
509 * table was created with the <code>DWT.VIRTUAL</code> style, these |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
510 * attributes are requested again as needed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
511 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
512 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
513 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
514 * <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
|
515 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
516 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
517 * @see DWT#VIRTUAL |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
518 * @see DWT#SetData |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
519 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
520 * @since 3.0 |
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 public void clearAll () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
523 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
524 for (int i=0; i<itemCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
525 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
526 if (item !is null) item.clear(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
527 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
528 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
529 |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
530 public override Point computeSize (int wHint, int hHint, bool changed) { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
531 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
532 if (wHint !is DWT.DEFAULT && wHint < 0) wHint = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
533 if (hHint !is DWT.DEFAULT && hHint < 0) hHint = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
534 Point size = computeNativeSize (handle, wHint, hHint, changed); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
535 Rectangle trim = computeTrim (0, 0, size.x, size.y); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
536 size.x = trim.width; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
537 size.y = trim.height; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
538 return size; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
539 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
540 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
541 void createColumn (TableColumn column, int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
542 int modelIndex = FIRST_COLUMN; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
543 if (columnCount !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
544 int modelLength = OS.gtk_tree_model_get_n_columns (modelHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
545 bool [] usedColumns = new bool [modelLength]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
546 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
547 int columnIndex = columns [i].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
548 for (int j = 0; j < CELL_TYPES; j++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
549 usedColumns [columnIndex + j] = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
550 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
551 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
552 while (modelIndex < modelLength) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
553 if (!usedColumns [modelIndex]) break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
554 modelIndex++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
555 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
556 if (modelIndex is modelLength) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
557 auto oldModel = modelHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
558 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
|
559 auto newModel = OS.gtk_list_store_newv (types.length, types.ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
560 if (newModel is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
561 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
562 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
|
563 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
|
564 if (newItem is null) error (DWT.ERROR_NO_HANDLES); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
565 OS.gtk_list_store_append (newModel, newItem); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
566 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
567 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
568 auto oldItem = item.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
569 for (int j=0; j<modelLength; j++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
570 OS.gtk_tree_model_get1 (oldModel, oldItem, j, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
571 OS.gtk_list_store_set1 (newModel, newItem, j, ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
572 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
|
573 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
574 OS.gtk_list_store_remove (oldModel, oldItem); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
575 OS.g_free (oldItem); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
576 item.handle = cast(GtkWidget*)newItem; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
577 } else { |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
123
diff
changeset
|
578 OS.g_free (newItem); |
89
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
581 OS.gtk_tree_view_set_model (handle, newModel); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
582 OS.g_object_unref (oldModel); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
583 modelHandle = cast(GtkWidget*)newModel; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
584 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
585 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
586 auto columnHandle = OS.gtk_tree_view_column_new (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
587 if (columnHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
588 if (index is 0 && columnCount > 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
589 TableColumn checkColumn = columns [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
590 createRenderers (cast(GtkTreeViewColumn*)checkColumn.handle, checkColumn.modelIndex, false, checkColumn.style); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
591 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
592 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
|
593 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
594 * 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
|
595 * because fixed_height_mode is not supported. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
596 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
597 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
|
598 if (!useVirtual && columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
599 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
|
600 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
601 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
|
602 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
|
603 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
604 OS.gtk_tree_view_column_set_resizable (columnHandle, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
605 OS.gtk_tree_view_column_set_clickable (columnHandle, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
606 OS.gtk_tree_view_column_set_min_width (columnHandle, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
607 OS.gtk_tree_view_insert_column (handle, columnHandle, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
608 if (column !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
609 column.handle = cast(GtkWidget*)columnHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
610 column.modelIndex = modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
611 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
612 /* Disable searching when using VIRTUAL */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
613 if ((style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
614 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
615 * 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
|
616 * 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
|
617 * 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
|
618 * 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
|
619 * 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
|
620 * 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
|
621 * (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
|
622 * for the right version. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
623 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
624 if (OS.GTK_VERSION >= OS.buildVERSION (2, 6, 5)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
625 OS.gtk_tree_view_set_search_column (handle, -1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
626 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
627 OS.gtk_tree_view_set_enable_search (handle, false); |
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 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
630 /* Set the search column whenever the model changes */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
631 int firstColumn = columnCount is 0 ? FIRST_COLUMN : columns [0].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
632 OS.gtk_tree_view_set_search_column (handle, firstColumn + CELL_TEXT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
633 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
634 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
635 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
636 override void createHandle (int index) { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
637 state |= HANDLE; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
638 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
|
639 if (fixedHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
640 OS.gtk_fixed_set_has_window (fixedHandle, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
641 scrolledHandle = cast(GtkWidget*)OS.gtk_scrolled_window_new (null, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
642 if (scrolledHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
643 auto types = getColumnTypes (1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
644 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
|
645 if (modelHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
646 handle = cast(GtkWidget*)OS.gtk_tree_view_new_with_model (modelHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
647 if (handle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
648 if ((style & DWT.CHECK) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
649 checkRenderer = cast(GtkWidget*)OS.gtk_cell_renderer_toggle_new (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
650 if (checkRenderer is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
651 OS.g_object_ref (checkRenderer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
652 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
653 createColumn (null, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
654 OS.gtk_container_add (fixedHandle, scrolledHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
655 OS.gtk_container_add (scrolledHandle, handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
656 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
657 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
|
658 auto selectionHandle = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
659 OS.gtk_tree_selection_set_mode (selectionHandle, mode); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
660 OS.gtk_tree_view_set_headers_visible (handle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
661 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
|
662 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
|
663 OS.gtk_scrolled_window_set_policy (scrolledHandle, hsp, vsp); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
664 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
|
665 /* Disable searching when using VIRTUAL */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
666 if ((style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
667 /* 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
|
668 if (OS.GTK_VERSION >= OS.buildVERSION (2, 3, 2)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
669 OS.g_object_set1 (handle, OS.fixed_height_mode.ptr, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
670 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
671 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
672 * 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
|
673 * 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
|
674 * 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
|
675 * 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
|
676 * 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
|
677 * 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
|
678 * (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
|
679 * for the right version. |
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 if (OS.GTK_VERSION >= OS.buildVERSION (2, 6, 5)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
682 OS.gtk_tree_view_set_search_column (handle, -1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
683 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
684 OS.gtk_tree_view_set_enable_search (handle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
685 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
686 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
687 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
688 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
689 void createItem (TableColumn column, int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
690 if (!(0 <= index && index <= columnCount)) error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
691 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
692 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
|
693 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
|
694 OS.gtk_tree_view_column_set_visible (column.handle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
695 column.modelIndex = FIRST_COLUMN; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
696 createRenderers (cast(GtkTreeViewColumn*)column.handle, column.modelIndex, true, column.style); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
697 column.customDraw = firstCustomDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
698 firstCustomDraw = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
699 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
700 createColumn (column, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
701 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
702 auto boxHandle = OS.gtk_hbox_new (false, 3); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
703 if (boxHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
704 auto labelHandle = OS.gtk_label_new_with_mnemonic (null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
705 if (labelHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
706 auto imageHandle = OS.gtk_image_new (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
707 if (imageHandle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
708 OS.gtk_container_add (boxHandle, imageHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
709 OS.gtk_container_add (boxHandle, labelHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
710 OS.gtk_widget_show (boxHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
711 OS.gtk_widget_show (labelHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
712 column.labelHandle = labelHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
713 column.imageHandle = imageHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
714 OS.gtk_tree_view_column_set_widget (column.handle, boxHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
715 auto widget = OS.gtk_widget_get_parent (boxHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
716 while (widget !is handle) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
717 if (OS.GTK_IS_BUTTON (cast(GTypeInstance*)widget)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
718 column.buttonHandle = widget; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
719 break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
720 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
721 widget = OS.gtk_widget_get_parent (widget); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
722 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
723 if (columnCount is columns.length) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
724 TableColumn [] newColumns = new TableColumn [columns.length + 4]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
725 System.arraycopy (columns, 0, newColumns, 0, columns.length); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
726 columns = newColumns; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
727 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
728 System.arraycopy (columns, index, columns, index + 1, columnCount++ - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
729 columns [index] = column; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
730 if ((state & FONT) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
731 column.setFontDescription (getFontDescription ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
732 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
733 if (columnCount >= 1) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
734 for (int i=0; i<itemCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
735 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
736 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
737 Font [] cellFont = item.cellFont; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
738 if (cellFont !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
739 Font [] temp = new Font [columnCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
740 System.arraycopy (cellFont, 0, temp, 0, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
741 System.arraycopy (cellFont, index, temp, index+1, columnCount-index-1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
742 item.cellFont = temp; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
743 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
744 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
745 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
746 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
747 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
748 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
749 void createItem (TableItem item, int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
750 if (!(0 <= index && index <= itemCount)) error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
751 if (itemCount is items.length) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
752 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
|
753 TableItem [] newItems = new TableItem [length]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
754 System.arraycopy (items, 0, newItems, 0, items.length); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
755 items = newItems; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
756 } |
123 | 757 item.handle = cast(GtkWidget*) OS.g_malloc( GtkTreeIter.sizeof ); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
758 if (item.handle is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
759 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
760 * 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
|
761 * than to insert at the end using gtk_list_store_insert(). |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
762 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
763 if (index is itemCount) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
764 OS.gtk_list_store_append (modelHandle, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
765 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
766 OS.gtk_list_store_insert (modelHandle, item.handle, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
767 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
768 System.arraycopy (items, index, items, index + 1, itemCount++ - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
769 items [index] = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
770 } |
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 void createRenderers (GtkTreeViewColumn* columnHandle, int modelIndex, bool check, int columnStyle) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
773 OS.gtk_tree_view_column_clear (columnHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
774 if ((style & DWT.CHECK) !is 0 && check) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
775 OS.gtk_tree_view_column_pack_start (columnHandle, checkRenderer, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
776 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
|
777 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
778 * 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
|
779 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
780 if (OS.GTK_VERSION >= OS.buildVERSION (2, 2, 0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
781 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
|
782 } |
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 * 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
|
785 * 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
|
786 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
787 if (OS.GTK_VERSION > OS.buildVERSION (2, 2, 1)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
788 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
|
789 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
790 if (ownerDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
791 display.doCellDataProc( handle, cast(GtkTreeViewColumn*)columnHandle, cast(GtkCellRenderer*)checkRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
792 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
|
793 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
794 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
795 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
|
796 if (pixbufRenderer is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
797 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
|
798 if (textRenderer is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
799 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
800 if (ownerDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
801 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
|
802 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
|
803 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
804 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
805 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
806 * 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
|
807 * 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
|
808 * 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
|
809 * to be activatable. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
810 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
811 if ((style & DWT.CHECK) !is 0 && check) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
812 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
|
813 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
814 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
815 /* Set alignment */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
816 if ((columnStyle & DWT.RIGHT) !is 0) { |
213
37c3b9aefbb8
Fix: segv on table columns with alignment
Frank Benoit <benoit@tionex.de>
parents:
200
diff
changeset
|
817 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
|
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_pack_end (columnHandle, pixbufRenderer, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
820 OS.gtk_tree_view_column_set_alignment (columnHandle, 1f); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
821 } 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
|
822 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
|
823 OS.gtk_tree_view_column_pack_start (columnHandle, pixbufRenderer, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
824 OS.gtk_tree_view_column_pack_end (columnHandle, textRenderer, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
825 OS.gtk_tree_view_column_set_alignment (columnHandle, 0.5f); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
826 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
827 OS.gtk_tree_view_column_pack_start (columnHandle, pixbufRenderer, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
828 OS.gtk_tree_view_column_pack_start (columnHandle, textRenderer, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
829 OS.gtk_tree_view_column_set_alignment (columnHandle, 0f); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
830 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
831 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
832 /* Add attributes */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
833 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
|
834 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
835 * 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
|
836 * 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
|
837 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
838 if (OS.GTK_VERSION > OS.buildVERSION (2, 2, 1)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
839 if (!ownerDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
840 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
|
841 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
|
842 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
843 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
844 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
|
845 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
|
846 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
|
847 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
848 bool customDraw = firstCustomDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
849 if (columnCount !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
850 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
851 if (columns [i].handle is cast(GtkWidget*)columnHandle) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
852 customDraw = columns [i].customDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
853 break; |
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 if ((style & DWT.VIRTUAL) !is 0 || customDraw || ownerDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
858 display.doCellDataProc( handle, cast(GtkTreeViewColumn*)columnHandle, cast(GtkCellRenderer*)textRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
859 display.doCellDataProc( handle, cast(GtkTreeViewColumn*)columnHandle, cast(GtkCellRenderer*)pixbufRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
860 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
861 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
862 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
863 override void createWidget (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
864 super.createWidget (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
865 items = new TableItem [4]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
866 columns = new TableColumn [4]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
867 itemCount = columnCount = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
868 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
869 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
870 GdkColor* defaultBackground () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
871 return display.COLOR_LIST_BACKGROUND; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
872 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
873 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
874 GdkColor* defaultForeground () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
875 return display.COLOR_LIST_FOREGROUND; |
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 override void deregister () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
879 super.deregister (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
880 display.removeWidget ( cast(GtkWidget*)OS.gtk_tree_view_get_selection (handle)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
881 if (checkRenderer !is null) display.removeWidget (checkRenderer); |
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 |
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 * 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
|
886 * If the item at the index was already deselected, it remains |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
887 * deselected. Indices that are out of range are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
888 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
889 * @param index the index of the item to deselect |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
890 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
891 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
892 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
893 * <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
|
894 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
895 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
896 public void deselect (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
897 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
898 if (index < 0 || index >= itemCount) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
899 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
900 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
901 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
|
902 OS.gtk_tree_selection_unselect_iter (selection, _getItem (index).handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
903 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
|
904 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
905 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
906 |
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 * 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
|
909 * 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
|
910 * is selected, it is deselected. If the item at the index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
911 * was not selected, it remains deselected. The range of the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
912 * indices is inclusive. Indices that are out of range are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
913 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
914 * @param start the start index of the items to deselect |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
915 * @param end the end index of the items to deselect |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
916 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
917 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
918 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
919 * <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
|
920 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
921 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
922 public void deselect (int start, int end) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
923 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
924 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
925 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
926 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
|
927 for (int index=start; index<=end; index++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
928 if (index < 0 || index >= itemCount) continue; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
929 OS.gtk_tree_selection_unselect_iter (selection, _getItem (index).handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
930 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
931 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
|
932 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
933 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
934 |
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 * 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
|
937 * 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
|
938 * is selected, it is deselected. If the item at the index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
939 * was not selected, it remains deselected. Indices that are out |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
940 * of range and duplicate indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
941 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
942 * @param indices the array of indices for the items to deselect |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
943 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
944 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
945 * <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
|
946 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
947 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
948 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
949 * <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
|
950 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
951 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
952 public void deselect (int [] indices) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
953 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
954 if (indices is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
955 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
956 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
957 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
|
958 for (int i=0; i<indices.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
959 int index = indices[i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
960 if (index < 0 || index >= itemCount) continue; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
961 OS.gtk_tree_selection_unselect_iter (selection, _getItem (index).handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
962 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
963 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
|
964 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
965 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
966 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
967 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
968 * Deselects all selected items in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
969 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
970 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
971 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
972 * <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
|
973 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
974 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
975 public void deselectAll () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
976 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
977 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
978 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
979 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
|
980 OS.gtk_tree_selection_unselect_all (selection); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
981 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
|
982 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
983 } |
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 void destroyItem (TableColumn column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
986 int index = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
987 while (index < columnCount) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
988 if (columns [index] is column) break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
989 index++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
990 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
991 if (index is columnCount) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
992 auto columnHandle = column.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
993 if (columnCount is 1) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
994 firstCustomDraw = column.customDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
995 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
996 System.arraycopy (columns, index + 1, columns, index, --columnCount - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
997 columns [columnCount] = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
998 OS.gtk_tree_view_remove_column (handle, columnHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
999 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1000 auto oldModel = modelHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1001 auto types = getColumnTypes (1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1002 auto newModel = OS.gtk_list_store_newv (types.length, types.ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1003 if (newModel is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1004 void* ptr; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1005 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
|
1006 GtkTreeIter* newItem = cast(GtkTreeIter*) OS.g_malloc( GtkTreeIter.sizeof ); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1007 if (newItem is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1008 OS.gtk_list_store_append (newModel, newItem); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1009 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1010 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1011 auto oldItem = item.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1012 for (int j=0; j<FIRST_COLUMN; j++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1013 OS.gtk_tree_model_get1 (oldModel, oldItem, j, &ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1014 OS.gtk_list_store_set1 (newModel, newItem, j, ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1015 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1016 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
|
1017 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
|
1018 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
|
1019 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
|
1020 OS.g_free (ptr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1021 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
|
1022 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
|
1023 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
|
1024 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
|
1025 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
|
1026 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
|
1027 OS.gtk_list_store_remove (oldModel, oldItem); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1028 OS.g_free (oldItem); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1029 item.handle = cast(GtkWidget*) newItem; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1030 } else { |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
123
diff
changeset
|
1031 OS.g_free( newItem ); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1032 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1033 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1034 OS.gtk_tree_view_set_model (handle, newModel); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1035 OS.g_object_unref (oldModel); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1036 modelHandle = cast(GtkWidget*)newModel; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1037 createColumn (null, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1038 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1039 for (int i=0; i<itemCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1040 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1041 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1042 auto iter = item.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1043 int modelIndex = column.modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1044 OS.gtk_list_store_set1 (modelHandle, iter, modelIndex + CELL_PIXBUF, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1045 OS.gtk_list_store_set1 (modelHandle, iter, modelIndex + CELL_TEXT, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1046 OS.gtk_list_store_set1 (modelHandle, iter, modelIndex + CELL_FOREGROUND, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1047 OS.gtk_list_store_set1 (modelHandle, iter, modelIndex + CELL_BACKGROUND, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1048 OS.gtk_list_store_set1 (modelHandle, iter, modelIndex + CELL_FONT, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1049 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1050 Font [] cellFont = item.cellFont; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1051 if (cellFont !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1052 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1053 item.cellFont = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1054 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1055 Font [] temp = new Font [columnCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1056 System.arraycopy (cellFont, 0, temp, 0, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1057 System.arraycopy (cellFont, index + 1, temp, index, columnCount - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1058 item.cellFont = temp; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1059 } |
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1063 if (index is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1064 TableColumn checkColumn = columns [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1065 createRenderers (cast(GtkTreeViewColumn*)checkColumn.handle, checkColumn.modelIndex, true, checkColumn.style); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1066 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1067 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1068 /* Disable searching when using VIRTUAL */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1069 if ((style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1070 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1071 * 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
|
1072 * 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
|
1073 * 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
|
1074 * 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
|
1075 * 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
|
1076 * 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
|
1077 * (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
|
1078 * for the right version. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1079 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1080 if (OS.GTK_VERSION >= OS.buildVERSION (2, 6, 5)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1081 OS.gtk_tree_view_set_search_column (handle, -1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1082 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1083 OS.gtk_tree_view_set_enable_search (handle, false); |
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 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1086 /* Set the search column whenever the model changes */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1087 int firstColumn = columnCount is 0 ? FIRST_COLUMN : columns [0].modelIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1088 OS.gtk_tree_view_set_search_column (handle, firstColumn + CELL_TEXT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1089 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1090 } |
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 void destroyItem (TableItem item) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1093 int index = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1094 while (index < itemCount) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1095 if (items [index] is item) break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1096 index++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1097 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1098 if (index is itemCount) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1099 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1100 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
|
1101 OS.gtk_list_store_remove (modelHandle, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1102 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
|
1103 System.arraycopy (items, index + 1, items, index, --itemCount - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1104 items [itemCount] = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1105 if (itemCount is 0) resetCustomDraw (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1106 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1107 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1108 override bool dragDetect (int x, int y, bool filter, bool* consume) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1109 bool selected = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1110 if (filter) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1111 GtkTreeViewColumn * path; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1112 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
|
1113 if (path !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1114 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1115 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
|
1116 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1117 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1118 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1119 return false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1120 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1121 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1122 bool dragDetect = super.dragDetect (x, y, filter, consume); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1123 if (dragDetect && selected && consume !is null) consume[0] = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1124 return dragDetect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1125 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1126 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1127 override GdkDrawable* eventWindow () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1128 return paintWindow (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1129 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1130 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1131 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
|
1132 super.fixChildren (newShell, oldShell, newDecorations, oldDecorations, menus); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1133 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1134 TableColumn column = columns [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1135 if (column.toolTipText !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1136 column.setToolTipText(oldShell, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1137 column.setToolTipText(newShell, column.toolTipText); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1138 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1139 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1140 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1141 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1142 override GdkColor* getBackgroundColor () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1143 return getBaseColor (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1144 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1145 |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
1146 public override Rectangle getClientArea () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1147 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1148 forceResize (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1149 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1150 auto fixedWindow = OS.GTK_WIDGET_WINDOW (fixedHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1151 auto binWindow = OS.gtk_tree_view_get_bin_window (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1152 int binX, binY; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1153 OS.gdk_window_get_origin (binWindow, &binX, &binY); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1154 int fixedX, fixedY; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1155 OS.gdk_window_get_origin (fixedWindow, &fixedX, &fixedY); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1156 auto clientHandle = clientHandle (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1157 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
|
1158 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
|
1159 return new Rectangle (fixedX - binX, fixedY - binY, width, height); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1160 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1161 |
240 | 1162 int getClientWidth () { |
1163 int w, h; | |
1164 OS.gtk_widget_realize (handle); | |
1165 OS.gdk_drawable_get_size(OS.gtk_tree_view_get_bin_window(handle), &w, &h); | |
1166 return w; | |
1167 } | |
1168 | |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1169 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1170 * Returns the column at the given, zero-relative index in the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1171 * receiver. Throws an exception if the index is out of range. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1172 * Columns are returned in the order that they were created. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1173 * If no <code>TableColumn</code>s were created by the programmer, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1174 * this method will throw <code>ERROR_INVALID_RANGE</code> despite |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1175 * 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
|
1176 * 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
|
1177 * items but never creating a column. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1178 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1179 * @param index the index of the column to return |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1180 * @return the column at the given index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1181 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1182 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1183 * <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
|
1184 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1185 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1186 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1187 * <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
|
1188 * </ul> |
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 * @see Table#getColumnOrder() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1191 * @see Table#setColumnOrder(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1192 * @see TableColumn#getMoveable() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1193 * @see TableColumn#setMoveable(bool) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1194 * @see DWT#Move |
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 public TableColumn getColumn (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1197 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1198 if (!(0 <= index && index < columnCount)) error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1199 return columns [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1200 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1201 |
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 * Returns the number of columns contained in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1204 * If no <code>TableColumn</code>s were created by the programmer, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1205 * this value is zero, despite the fact that visually, one column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1206 * of items may be visible. This occurs when the programmer uses |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1207 * 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
|
1208 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1209 * @return the number of columns |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1210 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1211 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1212 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1213 * <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
|
1214 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1215 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1216 public int getColumnCount () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1217 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1218 return columnCount; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1219 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1220 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1221 uint[] getColumnTypes (int columnCount) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1222 uint[] types = new uint [FIRST_COLUMN + (columnCount * CELL_TYPES)]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1223 // per row data |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1224 types [CHECKED_COLUMN] = OS.G_TYPE_BOOLEAN (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1225 types [GRAYED_COLUMN] = OS.G_TYPE_BOOLEAN (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1226 types [FOREGROUND_COLUMN] = OS.GDK_TYPE_COLOR (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1227 types [BACKGROUND_COLUMN] = OS.GDK_TYPE_COLOR (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1228 types [FONT_COLUMN] = OS.PANGO_TYPE_FONT_DESCRIPTION (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1229 // per cell data |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1230 for (int i=FIRST_COLUMN; i<types.length; i+=CELL_TYPES) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1231 types [i + CELL_PIXBUF] = OS.GDK_TYPE_PIXBUF (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1232 types [i + CELL_TEXT] = OS.G_TYPE_STRING (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1233 types [i + CELL_FOREGROUND] = OS.GDK_TYPE_COLOR (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1234 types [i + CELL_BACKGROUND] = OS.GDK_TYPE_COLOR (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1235 types [i + CELL_FONT] = OS.PANGO_TYPE_FONT_DESCRIPTION (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1236 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1237 return types; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1238 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1239 |
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 * Returns an array of zero-relative integers that map |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1242 * the creation order of the receiver's items to the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1243 * order in which they are currently being displayed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1244 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1245 * Specifically, the indices of the returned array represent |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1246 * the current visual order of the items, and the contents |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1247 * of the array represent the creation order of the items. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1248 * </p><p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1249 * Note: This is not the actual structure used by the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1250 * to maintain its list of items, so modifying the array will |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1251 * not affect the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1252 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1253 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1254 * @return the current visual order of the receiver's items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1255 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1256 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1257 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1258 * <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
|
1259 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1260 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1261 * @see Table#setColumnOrder(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1262 * @see TableColumn#getMoveable() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1263 * @see TableColumn#setMoveable(bool) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1264 * @see DWT#Move |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1265 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1266 * @since 3.1 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1267 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1268 public int [] getColumnOrder () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1269 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1270 if (columnCount is 0) return new int [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1271 auto list = OS.gtk_tree_view_get_columns (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1272 if (list is null) return new int [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1273 int i = 0, count = OS.g_list_length (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1274 int [] order = new int [count]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1275 auto temp = list; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1276 while (temp !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1277 auto column = OS.g_list_data (temp); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1278 if (column !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1279 for (int j=0; j<columnCount; j++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1280 if (columns [j].handle is column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1281 order [i++] = j; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1282 break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1283 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1284 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1285 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1286 temp = OS.g_list_next (temp); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1287 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1288 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1289 return order; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1290 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1291 |
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 * Returns an array of <code>TableColumn</code>s which are the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1294 * columns in the receiver. Columns are returned in the order |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1295 * that they were created. If no <code>TableColumn</code>s were |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1296 * created by the programmer, the array is empty, despite the fact |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1297 * that visually, one column of items may be visible. This occurs |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1298 * 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
|
1299 * never creating a column. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1300 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1301 * Note: This is not the actual structure used by the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1302 * to maintain its list of items, so modifying the array will |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1303 * not affect the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1304 * </p> |
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 * @return the items in the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1307 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1308 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1309 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1310 * <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
|
1311 * </ul> |
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 * @see Table#getColumnOrder() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1314 * @see Table#setColumnOrder(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1315 * @see TableColumn#getMoveable() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1316 * @see TableColumn#setMoveable(bool) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1317 * @see DWT#Move |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1318 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1319 public TableColumn [] getColumns () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1320 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1321 TableColumn [] result = new TableColumn [columnCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1322 System.arraycopy (columns, 0, result, 0, columnCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1323 return result; |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1326 TableItem getFocusItem () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1327 GtkTreeViewColumn * path; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1328 OS.gtk_tree_view_get_cursor (handle, cast(void**)&path, null); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1329 if (path is null) return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1330 TableItem item = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1331 auto indices = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1332 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1333 item = _getItem (indices [0]); |
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 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1336 return item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1337 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1338 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1339 override GdkColor* getForegroundColor () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1340 return getTextColor (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1341 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1342 |
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 * Returns the width in pixels of a grid line. |
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 * @return the width of a grid line in pixels |
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 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1349 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1350 * <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
|
1351 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1352 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1353 public int getGridLineWidth () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1354 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1355 return 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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1358 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1359 * Returns the height of the receiver's header |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1360 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1361 * @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
|
1362 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1363 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1364 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1365 * <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
|
1366 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1367 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1368 * @since 2.0 |
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 public int getHeaderHeight () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1371 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1372 if (!OS.gtk_tree_view_get_headers_visible (handle)) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1373 if (columnCount > 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1374 GtkRequisition requisition; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1375 int height = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1376 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1377 auto buttonHandle = columns [i].buttonHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1378 if (buttonHandle !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1379 OS.gtk_widget_size_request (buttonHandle, &requisition); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1380 height = Math.max (height, requisition.height); |
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 return height; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1384 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1385 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1386 auto fixedWindow = OS.GTK_WIDGET_WINDOW (fixedHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1387 auto binWindow = OS.gtk_tree_view_get_bin_window (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1388 int binY; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1389 OS.gdk_window_get_origin (binWindow, null, &binY); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1390 int fixedY; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1391 OS.gdk_window_get_origin (fixedWindow, null, &fixedY); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1392 return binY - fixedY; |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1395 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1396 * Returns <code>true</code> if the receiver's header is visible, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1397 * and <code>false</code> otherwise. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1398 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1399 * 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
|
1400 * other condition makes the receiver not visible, this method |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1401 * may still indicate that it is considered visible even though |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1402 * it may not actually be showing. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1403 * </p> |
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 * @return the receiver's header's visibility state |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1406 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1407 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1408 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1409 * <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
|
1410 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1411 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1412 public bool getHeaderVisible () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1413 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1414 return cast(bool) OS.gtk_tree_view_get_headers_visible (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1415 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1416 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1417 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1418 * Returns the item at the given, zero-relative index in the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1419 * receiver. Throws an exception if the index is out of range. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1420 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1421 * @param index the index of the item to return |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1422 * @return the item at the given 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 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1425 * <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
|
1426 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1427 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1428 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1429 * <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
|
1430 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1431 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1432 public TableItem getItem (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1433 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1434 if (!(0 <= index && index < itemCount)) error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1435 return _getItem (index); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1438 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1439 * Returns the item at the given point in the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1440 * 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
|
1441 * coordinate system of the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1442 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1443 * 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
|
1444 * 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
|
1445 * returned if the point is outside of the item. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1446 * 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
|
1447 * determines the extent of the selection. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1448 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1449 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1450 * @param point the point used to locate the item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1451 * @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
|
1452 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1453 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1454 * <li>ERROR_NULL_ARGUMENT - if the point is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1455 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1456 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1457 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1458 * <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
|
1459 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1460 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1461 public TableItem getItem (Point point) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1462 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1463 if (point is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1464 void* path; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1465 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1466 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
|
1467 if (path is null) return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1468 auto indices = OS.gtk_tree_path_get_indices (path ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1469 TableItem item = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1470 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1471 item = _getItem (indices [0]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1472 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1473 OS.gtk_tree_path_free (path ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1474 return item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1475 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1476 |
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 * Returns the number of items contained in the receiver. |
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 * @return the number of items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1481 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1482 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1483 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1484 * <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
|
1485 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1486 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1487 public int getItemCount () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1488 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1489 return itemCount; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1490 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1491 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1492 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1493 * Returns the height of the area which would be used to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1494 * display <em>one</em> of the items in the receiver's. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1495 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1496 * @return the height of one item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1497 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1498 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1499 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1500 * <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
|
1501 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1502 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1503 public int getItemHeight () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1504 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1505 if (itemCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1506 auto column = OS.gtk_tree_view_get_column (handle, 0); |
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 ignoreSize = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1509 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
|
1510 ignoreSize = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1511 return h; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1512 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1513 int height = 0; |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
123
diff
changeset
|
1514 GtkTreeIter* iter = cast(GtkTreeIter*) OS.g_malloc( GtkTreeIter.sizeof ); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1515 OS.gtk_tree_model_get_iter_first (modelHandle, iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1516 int columnCount = Math.max (1, this.columnCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1517 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1518 auto column = OS.gtk_tree_view_get_column (handle, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1519 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
|
1520 int w, h; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1521 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
|
1522 height = Math.max (height, h ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1523 } |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
123
diff
changeset
|
1524 OS.g_free(iter); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1525 return height; |
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1528 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1529 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1530 * Returns a (possibly empty) array of <code>TableItem</code>s which |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1531 * are the items in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1532 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1533 * Note: This is not the actual structure used by the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1534 * to maintain its list of items, so modifying the array will |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1535 * not affect the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1536 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1537 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1538 * @return the items in the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1539 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1540 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1541 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1542 * <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
|
1543 * </ul> |
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 public TableItem [] getItems () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1546 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1547 TableItem [] result = new TableItem [itemCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1548 if ((style & DWT.VIRTUAL) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1549 for (int i=0; i<itemCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1550 result [i] = _getItem (i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1551 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1552 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1553 System.arraycopy (items, 0, result, 0, itemCount); |
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 result; |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1558 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1559 * Returns <code>true</code> if the receiver's lines are visible, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1560 * and <code>false</code> otherwise. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1561 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1562 * 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
|
1563 * other condition makes the receiver not visible, this method |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1564 * may still indicate that it is considered visible even though |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1565 * it may not actually be showing. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1566 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1567 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1568 * @return the visibility state of the lines |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1569 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1570 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1571 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1572 * <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
|
1573 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1574 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1575 public bool getLinesVisible() { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1576 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1577 return cast(bool)OS.gtk_tree_view_get_rules_hint (handle); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1580 GtkCellRendererPixbuf* getPixbufRenderer (GtkTreeViewColumn* column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1581 auto list = OS.gtk_tree_view_column_get_cell_renderers (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1582 if (list is null) return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1583 int count = OS.g_list_length (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1584 GtkCellRendererPixbuf* pixbufRenderer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1585 int i = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1586 while (i < count) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1587 auto renderer = OS.g_list_nth_data (list, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1588 if (OS.GTK_IS_CELL_RENDERER_PIXBUF (cast(GTypeInstance*)renderer)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1589 pixbufRenderer = cast(GtkCellRendererPixbuf*)renderer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1590 break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1591 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1592 i++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1593 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1594 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1595 return pixbufRenderer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1596 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1597 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1598 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1599 * Returns an array of <code>TableItem</code>s that are currently |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1600 * selected in the receiver. The order of the items is unspecified. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1601 * An empty array indicates that no items are selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1602 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1603 * Note: This is not the actual structure used by the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1604 * to maintain its selection, so modifying the array will |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1605 * not affect the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1606 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1607 * @return an array representing the selection |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1608 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1609 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1610 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1611 * <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
|
1612 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1613 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1614 public TableItem [] getSelection () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1615 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1616 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1617 if (OS.GTK_VERSION < OS.buildVERSION (2, 2, 0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1618 display.treeSelectionLength = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1619 display.treeSelection = new int [itemCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1620 display.doTreeSelectionProcConnect( &treeSelectionCallbackData, handle, selection ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1621 TableItem [] result = new TableItem [display.treeSelectionLength]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1622 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
|
1623 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1624 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1625 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1626 * Bug in GTK. gtk_tree_selection_get_selected_rows() segmentation faults |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1627 * 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
|
1628 * to give a valid pointer instead. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1629 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1630 int dummy; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1631 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
|
1632 auto list = OS.gtk_tree_selection_get_selected_rows (selection, &model); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1633 if (list !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1634 int count = OS.g_list_length (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1635 int [] treeSelection = new int [count]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1636 int length_ = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1637 for (int i=0; i<count; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1638 auto data = OS.g_list_nth_data (list, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1639 auto indices = OS.gtk_tree_path_get_indices (data); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1640 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1641 treeSelection [length_] = indices [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1642 length_++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1643 } |
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 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1646 TableItem [] result = new TableItem [length_]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1647 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
|
1648 return result; |
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 return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1651 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1652 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1653 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1654 * Returns the number of selected items contained in the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1655 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1656 * @return the number of selected items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1657 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1658 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1659 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1660 * <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
|
1661 * </ul> |
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 public int getSelectionCount () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1664 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1665 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1666 if (OS.GTK_VERSION < OS.buildVERSION (2, 2, 0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1667 display.treeSelectionLength = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1668 display.treeSelection = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1669 display.doTreeSelectionProcConnect( &treeSelectionCallbackData, handle, selection ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1670 return display.treeSelectionLength; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1671 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1672 return OS.gtk_tree_selection_count_selected_rows (selection); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1673 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1674 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1675 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1676 * Returns the zero-relative index of the item which is currently |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1677 * selected in the receiver, or -1 if no item is selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1678 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1679 * @return the index of the selected item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1680 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1681 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1682 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1683 * <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
|
1684 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1685 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1686 public int getSelectionIndex () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1687 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1688 if (OS.GTK_VERSION < OS.buildVERSION (2, 2, 0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1689 display.treeSelectionLength = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1690 display.treeSelection = new int [itemCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1691 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1692 display.doTreeSelectionProcConnect( &treeSelectionCallbackData, handle, selection ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1693 if (display.treeSelectionLength is 0) return -1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1694 return display.treeSelection [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1695 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1696 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1697 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1698 * Bug in GTK. gtk_tree_selection_get_selected_rows() segmentation faults |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1699 * 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
|
1700 * to give a valid pointer instead. |
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 int dummy; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1703 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
|
1704 auto list = OS.gtk_tree_selection_get_selected_rows (selection, &model); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1705 if (list !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1706 int count = OS.g_list_length (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1707 int index; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1708 for (int i=0; i<count; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1709 auto data = OS.g_list_nth_data (list, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1710 auto indices = OS.gtk_tree_path_get_indices (data); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1711 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1712 index = indices[0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1713 break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1714 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1715 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1716 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1717 return index; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1718 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1719 return -1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1720 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1721 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1722 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1723 * Returns the zero-relative indices of the items which are currently |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1724 * selected in the receiver. The order of the indices is unspecified. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1725 * The array is empty if no items are selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1726 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1727 * Note: This is not the actual structure used by the receiver |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1728 * to maintain its selection, so modifying the array will |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1729 * not affect the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1730 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1731 * @return the array of indices of the selected items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1732 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1733 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1734 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1735 * <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
|
1736 * </ul> |
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 public int [] getSelectionIndices () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1739 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1740 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1741 if (OS.GTK_VERSION < OS.buildVERSION (2, 2, 0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1742 display.treeSelectionLength = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1743 display.treeSelection = new int [itemCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1744 display.doTreeSelectionProcConnect( &treeSelectionCallbackData, handle, selection ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1745 if (display.treeSelectionLength is display.treeSelection.length) return display.treeSelection; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1746 int [] result = new int [display.treeSelectionLength]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1747 System.arraycopy (display.treeSelection, 0, result, 0, display.treeSelectionLength); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1748 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1749 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1750 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1751 * Bug in GTK. gtk_tree_selection_get_selected_rows() segmentation faults |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1752 * 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
|
1753 * to give a valid pointer instead. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1754 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1755 int dummy; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1756 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
|
1757 auto list = OS.gtk_tree_selection_get_selected_rows (selection, &model); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1758 if (list !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1759 int count = OS.g_list_length (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1760 int [] treeSelection = new int [count]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1761 int length_ = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1762 for (int i=0; i<count; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1763 auto data = OS.g_list_nth_data (list, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1764 auto indices = OS.gtk_tree_path_get_indices (data); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1765 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1766 treeSelection [length_] = indices [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1767 length_++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1768 } |
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 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1771 int [] result = new int [length_]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1772 System.arraycopy (treeSelection, 0, result, 0, length_); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1773 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1774 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1775 return null; |
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 |
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 * Returns the column which shows the sort indicator for |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1780 * the receiver. The value may be null if no column shows |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1781 * the sort indicator. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1782 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1783 * @return the sort indicator |
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 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1786 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1787 * <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
|
1788 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1789 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1790 * @see #setSortColumn(TableColumn) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1791 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1792 * @since 3.2 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1793 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1794 public TableColumn getSortColumn () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1795 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1796 return sortColumn; |
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 |
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 * Returns the direction of the sort indicator for the receiver. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1801 * 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
|
1802 * or <code>NONE</code>. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1803 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1804 * @return the sort direction |
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 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1807 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1808 * <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
|
1809 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1810 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1811 * @see #setSortDirectioncast(int) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1812 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1813 * @since 3.2 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1814 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1815 public int getSortDirection () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1816 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1817 return sortDirection; |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1820 GtkCellRendererText* getTextRenderer (GtkTreeViewColumn* column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1821 auto list = OS.gtk_tree_view_column_get_cell_renderers (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1822 if (list is null) return null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1823 int count = OS.g_list_length (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1824 GtkCellRendererText* textRenderer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1825 int i = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1826 while (i < count) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1827 auto renderer = OS.g_list_nth_data (list, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1828 if (OS.GTK_IS_CELL_RENDERER_TEXT (cast(GTypeInstance*)renderer)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1829 textRenderer = cast(GtkCellRendererText*)renderer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1830 break; |
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 i++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1833 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1834 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1835 return textRenderer; |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1838 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1839 * Returns the zero-relative index of the item which is currently |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1840 * 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
|
1841 * scrolled or new items are added or removed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1842 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1843 * @return the index of the top item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1844 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1845 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1846 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1847 * <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
|
1848 * </ul> |
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 public int getTopIndex () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1851 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1852 void* path; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1853 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1854 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
|
1855 if (path is null) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1856 auto indices = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1857 int index; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1858 if (indices !is null) index = indices[0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1859 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1860 return index; |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1863 override int gtk_button_press_event (GtkWidget* widget, GdkEventButton* gdkEvent) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1864 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
|
1865 auto result = super.gtk_button_press_event (widget, gdkEvent); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1866 if (result !is 0) return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1867 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1868 * 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
|
1869 * 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
|
1870 * 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
|
1871 * 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
|
1872 * 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
|
1873 * 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
|
1874 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1875 int button = gdkEvent.button; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1876 if (button is 3 && gdkEvent.type is OS.GDK_BUTTON_PRESS) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1877 void* path; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1878 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
|
1879 if (path !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1880 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1881 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
|
1882 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1883 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1884 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1885 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1886 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1887 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1888 * 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
|
1889 * 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
|
1890 * 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
|
1891 * 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
|
1892 * widget from automatically selecting the first item. |
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 if ((style & DWT.SINGLE) !is 0 && getSelectionCount () is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1895 void* path; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1896 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
|
1897 if (path !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1898 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1899 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
|
1900 OS.gtk_tree_view_set_cursor (handle, path, null, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1901 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
|
1902 OS.gtk_tree_path_free (path); |
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1906 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1907 * Bug in GTK. GTK segments fault, if the GtkTreeView widget is |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1908 * 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
|
1909 * it finishes processing a button press. The fix is to give |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1910 * focus to the widget before it starts processing the event. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1911 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1912 if (!OS.GTK_WIDGET_HAS_FOCUS (handle)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1913 OS.gtk_widget_grab_focus (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1914 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1915 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1916 } |
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 override int gtk_button_release_event (GtkWidget* widget, GdkEventButton* event) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1919 auto window = OS.GDK_EVENT_WINDOW (event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1920 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
|
1921 return super.gtk_button_release_event (widget, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1922 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1923 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1924 override int gtk_changed (GtkWidget* widget) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1925 TableItem item = getFocusItem (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1926 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1927 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1928 event.item = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1929 postEvent (DWT.Selection, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1930 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1931 return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1932 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1933 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1934 override int gtk_key_press_event (GtkWidget* widget, GdkEventKey* keyEvent) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1935 auto result = super.gtk_key_press_event (widget, keyEvent); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1936 if (result !is 0) return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1937 if (OS.GTK_VERSION < OS.buildVERSION (2, 2 ,0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1938 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1939 * 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
|
1940 * the return key, GTK does not issue notification. The fix is |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1941 * to issue this notification when the return key is pressed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1942 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1943 int key = keyEvent.keyval; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1944 switch (key) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1945 case OS.GDK_Return: |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1946 case OS.GDK_KP_Enter: { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1947 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1948 event.item = getFocusItem (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1949 postEvent (DWT.DefaultSelection, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1950 break; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1951 } |
115
52b32f5cb1e0
many file checked for switch default
Frank Benoit <benoit@tionex.de>
parents:
110
diff
changeset
|
1952 default: |
89
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1955 return result; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1956 } |
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 override int gtk_popup_menu (GtkWidget* widget) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1959 auto result = super.gtk_popup_menu (widget); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1960 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1961 * Bug in GTK. The context menu for the typeahead in GtkTreeViewer |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1962 * 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
|
1963 * 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
|
1964 * to prevent the context menu from opening by stopping the default |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1965 * handler. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1966 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1967 * 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
|
1968 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1969 return OS.GTK_VERSION < OS.buildVERSION (2, 6, 5) ? 1 : result; |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1972 override int gtk_motion_notify_event (GtkWidget* widget, GdkEventMotion* event) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1973 auto window = OS.GDK_EVENT_WINDOW (event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1974 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
|
1975 return super.gtk_motion_notify_event (widget, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1976 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1977 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1978 override void gtk_row_activated (GtkTreeView* tree, GtkTreePath* path, GtkTreeViewColumn* column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1979 TableItem item = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1980 auto indices = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1981 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1982 item = _getItem (indices [0]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1983 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1984 Event event = new Event (); |
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.DefaultSelection, 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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1989 override int gtk_toggled (int /*long*/ renderer, char* pathStr) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1990 auto path = OS.gtk_tree_path_new_from_string (pathStr); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1991 if (path is null) return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1992 auto indices = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1993 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1994 TableItem item = _getItem (indices [0]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1995 item.setChecked (!item.getChecked ()); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1996 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1997 event.detail = DWT.CHECK; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1998 event.item = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1999 postEvent (DWT.Selection, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2000 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2001 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2002 return 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2003 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2004 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2005 override void gtk_widget_size_request (GtkWidget* widget, GtkRequisition* requisition) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2006 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2007 * Bug in GTK. For some reason, gtk_widget_size_request() fails |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2008 * 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
|
2009 * no columns visible. The fix is to temporarily make one column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2010 * visible. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2011 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2012 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2013 super.gtk_widget_size_request (widget, requisition); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2014 return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2015 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2016 auto columns = OS.gtk_tree_view_get_columns (handle), list = columns; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2017 bool fixVisible = columns !is null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2018 while (list !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2019 auto column = OS.g_list_data (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2020 if (OS.gtk_tree_view_column_get_visible (column)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2021 fixVisible = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2022 break; |
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 list = OS.g_list_next (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2025 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2026 void* columnHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2027 if (fixVisible) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2028 columnHandle = OS.g_list_data (columns); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2029 OS.gtk_tree_view_column_set_visible (columnHandle, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2030 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2031 super.gtk_widget_size_request (widget, requisition); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2032 if (fixVisible) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2033 OS.gtk_tree_view_column_set_visible (columnHandle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2034 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2035 if (columns !is null) OS.g_list_free (columns); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2036 } |
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 void hideFirstColumn () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2039 auto firstColumn = OS.gtk_tree_view_get_column (handle, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2040 OS.gtk_tree_view_column_set_visible (firstColumn, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2041 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2042 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2043 override void hookEvents () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2044 super.hookEvents (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2045 auto selection = OS.gtk_tree_view_get_selection(handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2046 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
|
2047 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
|
2048 if (checkRenderer !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2049 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
|
2050 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2051 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2052 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2053 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2054 * Searches the receiver's list starting at the first column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2055 * (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
|
2056 * argument, and returns the index of that column. If no column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2057 * is found, returns -1. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2058 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2059 * @param column the search column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2060 * @return the index of the column |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2061 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2062 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2063 * <li>ERROR_NULL_ARGUMENT - if the column is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2064 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2065 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2066 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2067 * <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
|
2068 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2069 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2070 public int indexOf (TableColumn column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2071 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2072 if (column is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2073 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2074 if (columns [i] is column) return i; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2075 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2076 return -1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2077 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2078 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2079 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2080 * Searches the receiver's list starting at the first item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2081 * (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
|
2082 * argument, and returns the index of that item. If no item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2083 * is found, returns -1. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2084 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2085 * @param item the search item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2086 * @return the index of the item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2087 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2088 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2089 * <li>ERROR_NULL_ARGUMENT - if the item is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2090 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2091 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2092 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2093 * <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
|
2094 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2095 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2096 public int indexOf (TableItem item) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2097 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2098 if (item is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2099 if (1 <= lastIndexOf && lastIndexOf < itemCount - 1) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2100 if (items [lastIndexOf] is item) return lastIndexOf; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2101 if (items [lastIndexOf + 1] is item) return ++lastIndexOf; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2102 if (items [lastIndexOf - 1] is item) return --lastIndexOf; |
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 if (lastIndexOf < itemCount / 2) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2105 for (int i=0; i<itemCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2106 if (items [i] is item) return lastIndexOf = i; |
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 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2109 for (int i=itemCount - 1; i>=0; --i) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2110 if (items [i] is item) return lastIndexOf = i; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2111 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2112 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2113 return -1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2114 } |
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 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2117 * Returns <code>true</code> if the item is selected, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2118 * and <code>false</code> otherwise. Indices out of |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2119 * range are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2120 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2121 * @param index the index of the item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2122 * @return the selection state of the item at the index |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2123 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2124 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2125 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2126 * <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
|
2127 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2128 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2129 public bool isSelected (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2130 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2131 auto selection = OS.gtk_tree_view_get_selection (handle); |
238 | 2132 char* buffer = tango.stdc.stringz.toStringz( to!(String)(index)); |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2133 auto path = OS.gtk_tree_path_new_from_string (buffer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2134 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
|
2135 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2136 return answer; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2137 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2138 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
2139 override bool mnemonicHit (wchar key) { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2140 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2141 auto labelHandle = columns [i].labelHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2142 if (labelHandle !is null && mnemonicHit (labelHandle, key)) return true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2143 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2144 return false; |
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 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
2147 override bool mnemonicMatch (wchar key) { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2148 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2149 auto labelHandle = columns [i].labelHandle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2150 if (labelHandle !is null && mnemonicMatch (labelHandle, key)) return true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2151 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2152 return false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2153 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2154 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
2155 override GdkDrawable* paintWindow () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2156 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2157 return OS.gtk_tree_view_get_bin_window (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2158 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2159 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2160 void recreateRenderers () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2161 if (checkRenderer !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2162 display.removeWidget (checkRenderer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2163 OS.g_object_unref (checkRenderer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2164 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
|
2165 if (checkRenderer is null) error (DWT.ERROR_NO_HANDLES); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2166 OS.g_object_ref (checkRenderer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2167 display.addWidget (checkRenderer, this); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2168 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
|
2169 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2170 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2171 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
|
2172 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2173 for (int i = 0; i < columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2174 TableColumn column = columns [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2175 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
|
2176 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2177 } |
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 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
2180 override void redrawBackgroundImage () { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2181 Control control = findBackgroundControl (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2182 if (control !is null && control.backgroundImage !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2183 redrawWidget (0, 0, 0, 0, true, false, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2184 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2185 } |
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 override void register () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2188 super.register (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2189 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
|
2190 if (checkRenderer !is null) display.addWidget (checkRenderer, this); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2191 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2192 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2193 override void releaseChildren (bool destroy) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2194 if (items !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2195 for (int i=0; i<itemCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2196 TableItem item = items [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2197 if (item !is null && !item.isDisposed ()) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2198 item.release (false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2199 } |
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 items = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2202 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2203 if (columns !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2204 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2205 TableColumn column = columns [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2206 if (column !is null && !column.isDisposed ()) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2207 column.release (false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2208 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2209 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2210 columns = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2211 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2212 super.releaseChildren (destroy); |
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 override void releaseWidget () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2216 super.releaseWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2217 if (modelHandle !is null) OS.g_object_unref (modelHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2218 modelHandle = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2219 if (checkRenderer !is null) OS.g_object_unref (checkRenderer); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2220 checkRenderer = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2221 if (imageList !is null) imageList.dispose (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2222 if (headerImageList !is null) headerImageList.dispose (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2223 imageList = headerImageList = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2224 currentItem = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2225 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2226 |
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 * Removes the item from the receiver at the given |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2229 * zero-relative index. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2230 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2231 * @param index the index for the item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2232 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2233 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2234 * <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
|
2235 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2236 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2237 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2238 * <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
|
2239 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2240 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2241 public void remove (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2242 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2243 if (!(0 <= index && index < itemCount)) error (DWT.ERROR_ITEM_NOT_REMOVED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2244 GtkTreeIter iter; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2245 TableItem item = items [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2246 bool disposed = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2247 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2248 disposed = item.isDisposed (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2249 if (!disposed) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2250 iter = *cast(GtkTreeIter*)item.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2251 item.release (false); |
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 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2254 OS.gtk_tree_model_iter_nth_child (modelHandle, &iter, null, index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2255 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2256 if (!disposed) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2257 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2258 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
|
2259 OS.gtk_list_store_remove (modelHandle, &iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2260 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
|
2261 System.arraycopy (items, index + 1, items, index, --itemCount - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2262 items [itemCount] = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2263 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2264 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2265 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2266 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2267 * Removes the items from the receiver which are |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2268 * between the given zero-relative start and end |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2269 * indices (inclusive). |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2270 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2271 * @param start the start of the range |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2272 * @param end the end of the range |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2273 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2274 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2275 * <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
|
2276 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2277 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2278 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2279 * <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
|
2280 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2281 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2282 public void remove (int start, int end) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2283 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2284 if (start > end) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2285 if (!(0 <= start && start <= end && end < itemCount)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2286 error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2287 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2288 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2289 GtkTreeIter iter; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2290 OS.gtk_tree_model_iter_nth_child (modelHandle, &iter, null, start); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2291 int index = start; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2292 while (index <= end) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2293 TableItem item = items [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2294 if (item !is null && !item.isDisposed ()) item.release (false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2295 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
|
2296 OS.gtk_list_store_remove (modelHandle, &iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2297 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
|
2298 index++; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2299 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2300 System.arraycopy (items, index, items, start, itemCount - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2301 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
|
2302 itemCount = itemCount - (index - start); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2303 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2304 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2305 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2306 * Removes the items from the receiver's list at the given |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2307 * zero-relative indices. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2308 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2309 * @param indices the array of indices of the items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2310 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2311 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2312 * <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
|
2313 * <li>ERROR_NULL_ARGUMENT - if the indices array is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2314 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2315 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2316 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2317 * <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
|
2318 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2319 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2320 public void remove (int [] indices) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2321 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2322 if (indices is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2323 if (indices.length is 0) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2324 int [] newIndices = new int [indices.length]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2325 System.arraycopy (indices, 0, newIndices, 0, indices.length); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2326 sort (newIndices); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2327 int start = newIndices [newIndices.length - 1], end = newIndices [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2328 if (!(0 <= start && start <= end && end < itemCount)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2329 error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2330 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2331 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2332 int last = -1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2333 GtkTreeIter iter; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2334 for (int i=0; i<newIndices.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2335 int index = newIndices [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2336 if (index !is last) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2337 TableItem item = items [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2338 bool disposed = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2339 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2340 disposed = item.isDisposed (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2341 if (!disposed) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2342 iter = *cast(GtkTreeIter*) item.handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2343 item.release (false); |
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 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2346 OS.gtk_tree_model_iter_nth_child (modelHandle, &iter, null, index); |
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 if (!disposed) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2349 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
|
2350 OS.gtk_list_store_remove (modelHandle, &iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2351 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
|
2352 System.arraycopy (items, index + 1, items, index, --itemCount - index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2353 items [itemCount] = null; |
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 last = index; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2356 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2357 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2358 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2359 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2360 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2361 * Removes all of the items from the receiver. |
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 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2364 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2365 * <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
|
2366 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2367 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2368 public void removeAll () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2369 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2370 int index = itemCount - 1; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2371 while (index >= 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2372 TableItem item = items [index]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2373 if (item !is null && !item.isDisposed ()) item.release (false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2374 --index; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2375 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2376 items = new TableItem [4]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2377 itemCount = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2378 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2379 OS.g_signal_handlers_block_matched (selection, OS.G_SIGNAL_MATCH_DATA, 0, 0, null, null, udCHANGED); |
240 | 2380 OS.gtk_list_store_clear (modelHandle); |
89
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; |
240 | 2488 if (contentHeight < event.height) contentHeight = event.height; |
89
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)); |
240 | 2565 if ((style & DWT.MIRRORED) !is 0) rect.x = getClientWidth () - rect.width - rect.x; |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2566 gc.setClipping (rect.x, rect.y, rect.width, rect.height); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2567 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2568 event.item = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2569 event.index = columnIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2570 event.gc = gc; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2571 event.x = rect.x; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2572 event.y = rect.y; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2573 event.width = rect.width; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2574 event.height = rect.height; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2575 event.detail = drawState; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2576 sendEvent (DWT.EraseItem, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2577 drawForeground = null; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2578 drawState = event.doit ? event.detail : 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2579 drawFlags &= ~(OS.GTK_CELL_RENDERER_FOCUSED | OS.GTK_CELL_RENDERER_SELECTED); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2580 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
|
2581 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
|
2582 if ((drawState & DWT.SELECTED) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2583 auto style = OS.gtk_widget_get_style (widget); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2584 //TODO - parity and sorted |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2585 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
|
2586 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2587 if (wasSelected) drawForeground = gc.getForeground ().handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2588 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2589 gc.dispose(); |
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2593 int /*long*/ result = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2594 if ((drawState & DWT.BACKGROUND) !is 0 && (drawState & DWT.SELECTED) is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2595 GC gc = new GC (this); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2596 gc.setBackground (item.getBackground (columnIndex)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2597 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
|
2598 gc.dispose (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2599 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2600 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
|
2601 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
|
2602 GtkCellRendererClass* klass = cast(GtkCellRendererClass*)g_class; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2603 if (drawForeground !is null && OS.GTK_IS_CELL_RENDERER_TEXT (cell)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2604 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
|
2605 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2606 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
|
2607 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2608 if (item !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2609 if (OS.GTK_IS_CELL_RENDERER_TEXT (cell)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2610 if (hooks (DWT.PaintItem)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2611 GdkRectangle rect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2612 auto path = OS.gtk_tree_model_get_path (modelHandle, iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2613 OS.gtk_tree_view_get_background_area (handle, path, columnHandle, &rect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2614 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2615 ignoreSize = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2616 int contentX, contentWidth; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2617 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
|
2618 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
|
2619 ignoreSize = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2620 Image image = item.getImage (columnIndex); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2621 int imageWidth = 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2622 if (image !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2623 Rectangle bounds = image.getBounds (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2624 imageWidth = bounds.width; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2625 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2626 contentX -= imageWidth; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2627 contentWidth += imageWidth; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2628 GC gc = new GC (this); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2629 if ((drawState & DWT.SELECTED) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2630 gc.setBackground (display.getSystemColor (DWT.COLOR_LIST_SELECTION)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2631 gc.setForeground (display.getSystemColor (DWT.COLOR_LIST_SELECTION_TEXT)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2632 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2633 gc.setBackground (item.getBackground (columnIndex)); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2634 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
|
2635 gc.setForeground (foreground); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2636 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2637 gc.setFont (item.getFont (columnIndex)); |
240 | 2638 if ((style & DWT.MIRRORED) !is 0) rect.x = getClientWidth () - rect.width - rect.x; |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2639 gc.setClipping (rect.x, rect.y, rect.width, rect.height); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2640 Event event = new Event (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2641 event.item = item; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2642 event.index = columnIndex; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2643 event.gc = gc; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2644 event.x = rect.x + contentX; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2645 event.y = rect.y; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2646 event.width = contentWidth; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2647 event.height = rect.height; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2648 event.detail = drawState; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2649 sendEvent (DWT.PaintItem, event); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2650 gc.dispose(); |
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2655 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2656 void resetCustomDraw () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2657 if ((style & DWT.VIRTUAL) !is 0 || ownerDraw) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2658 int end = Math.max (1, columnCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2659 for (int i=0; i<end; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2660 bool customDraw = columnCount !is 0 ? columns [i].customDraw : firstCustomDraw; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2661 if (customDraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2662 auto column = OS.gtk_tree_view_get_column (handle, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2663 auto textRenderer = getTextRenderer (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2664 display.doCellDataProc( null, cast(GtkTreeViewColumn*)column, cast(GtkCellRenderer*)textRenderer ); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2665 if (columnCount !is 0) columns [i].customDraw = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2666 } |
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 firstCustomDraw = false; |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2671 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2672 * 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
|
2673 * If the item at the index was already selected, it remains |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2674 * selected. Indices that are out of range are ignored. |
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 * @param index the index of the item to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2677 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2678 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2679 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2680 * <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
|
2681 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2682 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2683 public void select (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2684 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2685 if (!(0 <= index && index < itemCount)) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2686 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2687 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2688 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
|
2689 TableItem item = _getItem (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2690 OS.gtk_tree_selection_select_iter (selection, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2691 if ((style & DWT.SINGLE) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2692 auto path = OS.gtk_tree_model_get_path (modelHandle, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2693 OS.gtk_tree_view_set_cursor (handle, path, null, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2694 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2695 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2696 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
|
2697 if (fixColumn) hideFirstColumn (); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2700 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2701 * 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
|
2702 * indices in the receiver. The range of indices is inclusive. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2703 * 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
|
2704 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2705 * 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
|
2706 * 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
|
2707 * 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
|
2708 * if start is greater than end. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2709 * 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
|
2710 * given range, then all indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2711 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2712 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2713 * @param start the start of the range |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2714 * @param end the end of the range |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2715 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2716 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2717 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2718 * <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
|
2719 * </ul> |
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 * @see Table#setSelection(int,int) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2722 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2723 public void select (int start, int end) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2724 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2725 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
|
2726 if (itemCount is 0 || start >= itemCount) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2727 start = Math.max (0, start); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2728 end = Math.min (end, itemCount - 1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2729 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2730 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2731 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
|
2732 for (int index=start; index<=end; index++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2733 TableItem item = _getItem (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2734 OS.gtk_tree_selection_select_iter (selection, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2735 if ((style & DWT.SINGLE) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2736 auto path = OS.gtk_tree_model_get_path (modelHandle, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2737 OS.gtk_tree_view_set_cursor (handle, path, null, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2738 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2739 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2740 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2741 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
|
2742 if (fixColumn) hideFirstColumn (); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2745 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2746 * 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
|
2747 * 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
|
2748 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2749 * 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
|
2750 * 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
|
2751 * Indices that are out of range and duplicate indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2752 * If the receiver is single-select and multiple indices are specified, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2753 * then all indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2754 * </p> |
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 * @param indices the array of indices for the items to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2757 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2758 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2759 * <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
|
2760 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2761 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2762 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2763 * <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
|
2764 * </ul> |
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 * @see Table#setSelection(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2767 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2768 public void select (int [] indices) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2769 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2770 if (indices is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2771 int length = indices.length; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2772 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
|
2773 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2774 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2775 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
|
2776 for (int i=0; i<length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2777 int index = indices [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2778 if (!(0 <= index && index < itemCount)) continue; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2779 TableItem item = _getItem (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2780 OS.gtk_tree_selection_select_iter (selection, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2781 if ((style & DWT.SINGLE) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2782 auto path = OS.gtk_tree_model_get_path (modelHandle, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2783 OS.gtk_tree_view_set_cursor (handle, path, null, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2784 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2785 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2786 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2787 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
|
2788 if (fixColumn) hideFirstColumn (); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2791 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2792 * Selects all of the items in the receiver. |
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 * If the receiver is single-select, do nothing. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2795 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2796 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2797 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2798 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2799 * <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
|
2800 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2801 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2802 public void selectAll () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2803 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2804 if ((style & DWT.SINGLE) !is 0) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2805 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2806 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2807 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
|
2808 OS.gtk_tree_selection_select_all (selection); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2809 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
|
2810 if (fixColumn) hideFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2811 } |
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 void selectFocusIndex (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2814 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2815 * 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
|
2816 * 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
|
2817 * 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
|
2818 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2819 if (!(0 <= index && index < itemCount)) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2820 TableItem item = _getItem (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2821 auto path = OS.gtk_tree_model_get_path (modelHandle, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2822 auto selection = OS.gtk_tree_view_get_selection (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2823 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
|
2824 OS.gtk_tree_view_set_cursor (handle, path, null, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2825 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2826 * 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
|
2827 * within a key pressed handler and a dialog is displayed that |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2828 * contains a GtkTreeView, gtk_tree_view_set_cursor() does |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2829 * 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
|
2830 * item with gtk_tree_selection_select_iter() as well. |
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 * 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
|
2833 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2834 OS.gtk_tree_selection_select_iter (selection, item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2835 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
|
2836 OS.gtk_tree_path_free (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2837 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2838 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2839 override void setBackgroundColor (GdkColor* color) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2840 super.setBackgroundColor (color); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2841 OS.gtk_widget_modify_base (handle, 0, color); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2842 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2843 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2844 override void setBackgroundPixmap (GdkPixmap* pixmap) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2845 super.setBackgroundPixmap (pixmap); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2846 auto window = paintWindow (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2847 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
|
2848 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2849 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2850 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
|
2851 int result = super.setBounds (x, y, width, height, move, resize); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2852 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2853 * 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
|
2854 * 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
|
2855 * 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
|
2856 * 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
|
2857 * 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
|
2858 * after it has been resized. |
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 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2861 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2862 * 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
|
2863 * 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
|
2864 * the widget to redraw. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2865 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2866 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
|
2867 return result; |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2870 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2871 * Sets the order that the items in the receiver should |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2872 * be displayed in to the given argument which is described |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2873 * in terms of the zero-relative ordering of when the items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2874 * were added. |
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 * @param order the new order to display the items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2877 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2878 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2879 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2880 * <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
|
2881 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2882 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2883 * <li>ERROR_NULL_ARGUMENT - if the item order is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2884 * <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
|
2885 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2886 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2887 * @see Table#getColumnOrder() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2888 * @see TableColumn#getMoveable() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2889 * @see TableColumn#setMoveable(bool) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2890 * @see DWT#Move |
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 * @since 3.1 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2893 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2894 public void setColumnOrder (int [] order) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2895 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2896 if (order is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2897 if (columnCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2898 if (order.length > 0) error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2899 return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2900 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2901 if (order.length !is columnCount) error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2902 bool [] seen = new bool [columnCount]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2903 for (int i = 0; i<order.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2904 int index = order [i]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2905 if (index < 0 || index >= columnCount) error (DWT.ERROR_INVALID_RANGE); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2906 if (seen [index]) error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2907 seen [index] = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2908 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2909 for (int i=0; i<order.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2910 auto column = columns [order [i]].handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2911 auto baseColumn = i is 0 ? null : columns [order [i-1]].handle; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2912 OS.gtk_tree_view_move_column_after (handle, column, baseColumn); |
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2915 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2916 override void setFontDescription (PangoFontDescription* font) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2917 super.setFontDescription (font); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2918 TableColumn[] columns = getColumns (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2919 for (int i = 0; i < columns.length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2920 if (columns[i] !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2921 columns[i].setFontDescription (font); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2926 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2927 * 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
|
2928 * and marks it invisible otherwise. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2929 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2930 * 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
|
2931 * other condition makes the receiver not visible, marking |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2932 * it visible may not actually cause it to be displayed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2933 * </p> |
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 * @param show the new visibility state |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2936 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2937 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2938 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2939 * <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
|
2940 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2941 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2942 public void setHeaderVisible (bool show) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2943 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2944 OS.gtk_tree_view_set_headers_visible (handle, show); |
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 |
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 * Sets the number of items contained in the receiver. |
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 * @param count the number of items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2951 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2952 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2953 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2954 * <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
|
2955 * </ul> |
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 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2958 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2959 public void setItemCount (int count) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2960 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2961 count = Math.max (0, count); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2962 if (count is itemCount) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2963 bool isVirtual = (style & DWT.VIRTUAL) !is 0; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2964 if (!isVirtual) setRedraw (false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2965 remove (count, itemCount - 1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2966 int length = Math.max (4, (count + 3) / 4 * 4); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2967 TableItem [] newItems = new TableItem [length]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2968 System.arraycopy (items, 0, newItems, 0, itemCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2969 items = newItems; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2970 if (isVirtual) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2971 GtkTreeIter iter; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2972 for (int i=itemCount; i<count; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2973 OS.gtk_list_store_append (modelHandle, &iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2974 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2975 itemCount = count; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2976 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2977 for (int i=itemCount; i<count; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2978 new TableItem (this, DWT.NONE, i, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2979 } |
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 if (!isVirtual) setRedraw (true); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2984 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2985 * 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
|
2986 * and marks it invisible otherwise. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2987 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2988 * 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
|
2989 * other condition makes the receiver not visible, marking |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2990 * it visible may not actually cause it to be displayed. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2991 * </p> |
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 * @param show the new visibility state |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2994 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2995 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2996 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2997 * <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
|
2998 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2999 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3000 public void setLinesVisible (bool show) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3001 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3002 OS.gtk_tree_view_set_rules_hint (handle, show); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3003 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3004 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3005 override void setParentBackground () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3006 super.setParentBackground (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3007 auto window = paintWindow (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3008 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
|
3009 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3010 |
152
17f8449522fd
overloads second walkthrough
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
3011 override void setParentWindow (GtkWidget* widget) { |
89
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3012 auto window = eventWindow (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3013 OS.gtk_widget_set_parent_window (widget, window); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3014 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3015 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3016 override public void setRedraw (bool redraw) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3017 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3018 super.setRedraw (redraw); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3019 if (redraw && drawCount is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3020 /* Resize the item array to match the item count */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3021 if (items.length > 4 && items.length - itemCount > 3) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3022 int length = Math.max (4, (itemCount + 3) / 4 * 4); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3023 TableItem [] newItems = new TableItem [length]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3024 System.arraycopy (items, 0, newItems, 0, itemCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3025 items = newItems; |
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3029 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3030 void setScrollWidth (GtkTreeViewColumn* column, TableItem item) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3031 if (columnCount !is 0 || currentItem is item) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3032 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3033 * 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
|
3034 * because fixed_height_mode is not supported. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3035 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3036 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
|
3037 int width = OS.gtk_tree_view_column_get_fixed_width (column); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3038 int itemWidth = calculateWidth (column, cast(GtkTreeIter*)item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3039 if (width < itemWidth) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3040 OS.gtk_tree_view_column_set_fixed_width (column, itemWidth); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3044 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3045 * 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
|
3046 * 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
|
3047 * before the new column is set. |
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 * @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
|
3050 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3051 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3052 * <li>ERROR_INVALID_ARGUMENT - if the column is disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3053 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3054 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3055 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3056 * <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
|
3057 * </ul> |
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 * @since 3.2 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3060 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3061 public void setSortColumn (TableColumn column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3062 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3063 if (column !is null && column.isDisposed ()) error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3064 if (sortColumn !is null && !sortColumn.isDisposed()) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3065 OS.gtk_tree_view_column_set_sort_indicator (sortColumn.handle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3066 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3067 sortColumn = column; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3068 if (sortColumn !is null && sortDirection !is DWT.NONE) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3069 OS.gtk_tree_view_column_set_sort_indicator (sortColumn.handle, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3070 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
|
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3074 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3075 * 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
|
3076 * 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
|
3077 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3078 * @param direction the direction of the sort indicator |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3079 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3080 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3081 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3082 * <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
|
3083 * </ul> |
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 * @since 3.2 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3086 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3087 public void setSortDirection (int direction) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3088 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3089 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
|
3090 sortDirection = direction; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3091 if (sortColumn is null || sortColumn.isDisposed ()) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3092 if (sortDirection is DWT.NONE) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3093 OS.gtk_tree_view_column_set_sort_indicator (sortColumn.handle, false); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3094 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3095 OS.gtk_tree_view_column_set_sort_indicator (sortColumn.handle, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3096 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
|
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3100 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3101 * 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
|
3102 * 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
|
3103 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3104 * @param index the index of the item to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3105 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3106 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3107 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3108 * <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
|
3109 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3110 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3111 * @see Table#deselectAll() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3112 * @see Table#selectcast(int) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3113 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3114 public void setSelection (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3115 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3116 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3117 deselectAll (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3118 selectFocusIndex (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3119 showSelection (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3120 if (fixColumn) hideFirstColumn (); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3123 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3124 * 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
|
3125 * indices in the receiver. The range of indices is inclusive. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3126 * The current selection is cleared before the new items are selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3127 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3128 * 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
|
3129 * if start is greater than end. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3130 * 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
|
3131 * given range, then all indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3132 * </p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3133 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3134 * @param start the start index of the items to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3135 * @param end the end index of the items to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3136 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3137 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3138 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3139 * <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
|
3140 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3141 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3142 * @see Table#deselectAll() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3143 * @see Table#select(int,int) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3144 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3145 public void setSelection (int start, int end) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3146 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3147 deselectAll(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3148 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
|
3149 if (itemCount is 0 || start >= itemCount) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3150 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3151 start = Math.max (0, start); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3152 end = Math.min (end, itemCount - 1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3153 selectFocusIndex (start); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3154 if ((style & DWT.MULTI) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3155 select (start, end); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3156 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3157 showSelection (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3158 if (fixColumn) hideFirstColumn (); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3161 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3162 * 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
|
3163 * The current selection is cleared before the new items are selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3164 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3165 * Indices that are out of range and duplicate indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3166 * If the receiver is single-select and multiple indices are specified, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3167 * then all indices are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3168 * </p> |
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 * @param indices the indices of the items to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3171 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3172 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3173 * <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
|
3174 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3175 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3176 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3177 * <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
|
3178 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3179 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3180 * @see Table#deselectAll() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3181 * @see Table#select(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3182 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3183 public void setSelection (int [] indices) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3184 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3185 if (indices is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3186 deselectAll (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3187 int length = indices.length; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3188 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
|
3189 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3190 selectFocusIndex (indices [0]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3191 if ((style & DWT.MULTI) !is 0) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3192 select (indices); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3193 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3194 showSelection (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3195 if (fixColumn) hideFirstColumn (); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3198 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3199 * Sets the receiver's selection to the given item. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3200 * The current selection is cleared before the new item is selected. |
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 * 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
|
3203 * </p> |
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 * @param item the item to select |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3206 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3207 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3208 * <li>ERROR_NULL_ARGUMENT - if the item is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3209 * <li>ERROR_INVALID_ARGUMENT - if the item has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3210 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3211 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3212 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3213 * <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
|
3214 * </ul> |
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 * @since 3.2 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3217 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3218 public void setSelection (TableItem item) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3219 if (item is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3220 setSelection ( [item] ); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3224 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3225 * 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
|
3226 * The current selection is cleared before the new items are selected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3227 * <p> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3228 * Items that are not in the receiver are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3229 * If the receiver is single-select and multiple items are specified, |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3230 * then all items are ignored. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3231 * </p> |
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 * @param items the array of items |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3234 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3235 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3236 * <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
|
3237 * <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
|
3238 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3239 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3240 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3241 * <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
|
3242 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3243 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3244 * @see Table#deselectAll() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3245 * @see Table#select(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3246 * @see Table#setSelection(int[]) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3247 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3248 public void setSelection (TableItem [] items) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3249 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3250 if (items is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3251 bool fixColumn = showFirstColumn (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3252 deselectAll (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3253 int length = items.length; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3254 if (!(length is 0 || ((style & DWT.SINGLE) !is 0 && length > 1))) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3255 bool first = true; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3256 for (int i = 0; i < length; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3257 int index = indexOf (items [i]); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3258 if (index !is -1) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3259 if (first) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3260 first = false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3261 selectFocusIndex (index); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3262 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3263 select (index); |
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 } |
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 showSelection (); |
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 if (fixColumn) hideFirstColumn (); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3272 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3273 * Sets the zero-relative index of the item which is currently |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3274 * 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
|
3275 * are scrolled or new items are added and removed. |
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 * @param index the index of the top item |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3278 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3279 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3280 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3281 * <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
|
3282 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3283 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3284 public void setTopIndex (int index) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3285 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3286 if (!(0 <= index && index < itemCount)) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3287 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
|
3288 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
|
3289 if (OS.GTK_VERSION < OS.buildVERSION (2, 8, 0)) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3290 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3291 * 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
|
3292 * 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
|
3293 * 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
|
3294 * the new location and use gtk_tree_view_scroll_to_point. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3295 * 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
|
3296 * will have no effect. Therefore, it is still neccessary to call |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3297 * gtk_tree_view_scroll_to_cell. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3298 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3299 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3300 GdkRectangle cellRect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3301 OS.gtk_tree_view_get_cell_area (handle, path, null, &cellRect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3302 int tx, ty; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3303 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
|
3304 OS.gtk_tree_view_scroll_to_point (handle, -1, ty); |
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 OS.gtk_tree_path_free (path); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3309 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3310 * 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
|
3311 * this method simply returns. Otherwise, the columns are scrolled until |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3312 * the column is visible. |
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 * @param column the column to be shown |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3315 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3316 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3317 * <li>ERROR_NULL_ARGUMENT - if the column is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3318 * <li>ERROR_INVALID_ARGUMENT - if the column has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3319 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3320 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3321 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3322 * <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
|
3323 * </ul> |
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 * @since 3.0 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3326 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3327 public void showColumn (TableColumn column) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3328 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3329 if (column is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3330 if (column.isDisposed()) error(DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3331 if (column.parent !is this) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3332 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3333 * This code is intentionally commented. According to the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3334 * documentation, gtk_tree_view_scroll_to_cell should scroll the |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3335 * minimum amount to show the column but instead it scrolls strangely. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3336 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3337 //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
|
3338 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3339 GdkRectangle cellRect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3340 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
|
3341 GdkRectangle visibleRect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3342 OS.gtk_tree_view_get_visible_rect (handle, &visibleRect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3343 if (cellRect.x < visibleRect.x) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3344 OS.gtk_tree_view_scroll_to_point (handle, cellRect.x, -1); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3345 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3346 int width = Math.min (visibleRect.width, cellRect.width); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3347 if (cellRect.x + width > visibleRect.x + visibleRect.width) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3348 int tree_x = cellRect.x + width - visibleRect.width; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3349 OS.gtk_tree_view_scroll_to_point (handle, tree_x, -1); |
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 } |
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 bool showFirstColumn () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3355 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3356 * Bug in GTK. If no columns are visible, changing the selection |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3357 * will fail. The fix is to temporarily make a column visible. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3358 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3359 int columnCount = Math.max (1, this.columnCount); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3360 for (int i=0; i<columnCount; i++) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3361 auto column = OS.gtk_tree_view_get_column (handle, i); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3362 if (OS.gtk_tree_view_column_get_visible (column)) return false; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3363 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3364 auto firstColumn = OS.gtk_tree_view_get_column (handle, 0); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3365 OS.gtk_tree_view_column_set_visible (firstColumn, true); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3366 return true; |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3369 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3370 * 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
|
3371 * this method simply returns. Otherwise, the items are scrolled until |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3372 * the item is visible. |
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 * @param item the item to be shown |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3375 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3376 * @exception IllegalArgumentException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3377 * <li>ERROR_NULL_ARGUMENT - if the item is null</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3378 * <li>ERROR_INVALID_ARGUMENT - if the item has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3379 * </ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3380 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3381 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3382 * <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
|
3383 * </ul> |
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 * @see Table#showSelection() |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3386 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3387 public void showItem (TableItem item) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3388 checkWidget (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3389 if (item is null) error (DWT.ERROR_NULL_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3390 if (item.isDisposed()) error (DWT.ERROR_INVALID_ARGUMENT); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3391 if (item.parent !is this) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3392 showItem (cast(GtkTreeIter*)item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3393 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3394 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3395 void showItem (GtkTreeIter* iter) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3396 auto path = OS.gtk_tree_model_get_path (modelHandle, iter); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3397 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3398 * This code intentionally commented. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3399 * 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
|
3400 * 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
|
3401 * 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
|
3402 * 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
|
3403 * 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
|
3404 * will have no effect. Therefore, it is still neccessary to |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3405 * call gtk_tree_view_scroll_to_cell. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3406 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3407 // 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
|
3408 OS.gtk_widget_realize (handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3409 GdkRectangle visibleRect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3410 OS.gtk_tree_view_get_visible_rect (handle, &visibleRect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3411 GdkRectangle cellRect; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3412 OS.gtk_tree_view_get_cell_area (handle, path, null, &cellRect); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3413 int tx, ty; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3414 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
|
3415 if (ty < visibleRect.y ) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3416 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
|
3417 OS.gtk_tree_view_scroll_to_point (handle, -1, ty); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3418 } else { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3419 int height = Math.min (visibleRect.height, cellRect.height); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3420 if (ty + height > visibleRect.y + visibleRect.height) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3421 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
|
3422 ty += cellRect.height - visibleRect.height; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3423 OS.gtk_tree_view_scroll_to_point (handle, -1, ty); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3424 } |
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 OS.gtk_tree_path_free (path); |
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 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3429 /** |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3430 * 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
|
3431 * this method simply returns. Otherwise, the items are scrolled until |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3432 * the selection is visible. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3433 * |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3434 * @exception DWTException <ul> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3435 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3436 * <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
|
3437 * </ul> |
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 * @see Table#showItem(TableItem) |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3440 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3441 public void showSelection () { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3442 checkWidget(); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3443 TableItem [] selection = getSelection (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3444 if (selection.length is 0) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3445 TableItem item = selection [0]; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3446 showItem (cast(GtkTreeIter*)item.handle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3447 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3448 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3449 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
|
3450 if (selection !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3451 auto indices = OS.gtk_tree_path_get_indices (path); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3452 if (indices !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3453 selection [length_] = indices [0]; |
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 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3457 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3458 override void updateScrollBarValue (ScrollBar bar) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3459 super.updateScrollBarValue (bar); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3460 /* |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3461 * Bug in GTK. Scrolling changes the XWindow position |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3462 * and makes the child widgets appear to scroll even |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3463 * though when queried their position is unchanged. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3464 * 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
|
3465 * force the position to be corrected. |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3466 */ |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3467 auto parentHandle = parentingHandle (); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3468 auto list = OS.gtk_container_get_children (parentHandle); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3469 if (list is null) return; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3470 auto temp = list; |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3471 while (temp !is null) { |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3472 auto widget = OS.g_list_data (temp); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3473 if (widget !is null) OS.gtk_widget_queue_resize (widget); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3474 temp = OS.g_list_next (temp); |
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 OS.g_list_free (list); |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3477 } |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3478 |
9f6c2c92be2b
Table, TableColumn and TableItem
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3479 } |