alternative to assert
[gtkD.git] / gtkD / demos / gtkD / TEditableCells.d
bloba7b62aca6e1f1f542ca2b4978031851f8e0c381b
1 ///*
2 // * This file is part of gtkD.
3 // *
4 // * gtkD is free software; you can redistribute it and/or modify
5 // * it under the terms of the GNU Lesser General Public License as published by
6 // * the Free Software Foundation; either version 2.1 of the License, or
7 // * (at your option) any later version.
8 // *
9 // * gtkD is distributed in the hope that it will be useful,
10 // * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // * GNU Lesser General Public License for more details.
13 // *
14 // * You should have received a copy of the GNU Lesser General Public License
15 // * along with gtkD; if not, write to the Free Software
16 // * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // */
19 //module gtkD.TEditableCells;
21 //private import gtk.gtktypes;
23 //private import gtk.Window;
25 //private import gtk.TreeView;
26 //private import gtk.TreeModel;
27 //private import gtk.CellRenderer;
28 //private import gtk.Button;
29 //private import gtk.MenuItem;
30 //private import gtk.VBox;
31 //private import gtk.HBox;
32 //private import gtk.ScrolledWindow;
33 //private import gtk.Label;
34 //private import gtk.ListStore;
35 //private import gtk.TreeView;
36 //private import gtk.TreeIter;
37 //private import gtk.TreePath;
38 //private import gtk.CellRendererText;
39 //private import gtk.TreeViewColumn;
40 //private import gtk.Item;
41 //private import gtk.TreeSelection;
42 //private import gtk.MessageDialog;
44 //private import std.string;
45 //private import std.stdio;
47 //private import gtk.TreeNode;
49 ///**
50 // * reproduces the gtk-demo Editable Cells
51 // * \todo review array of chars copy
52 // */
53 //public:
54 //class TEditableCells : Window
55 //{
56 // ListRow[] listRows;
57 // TreeView treeView;
58 //
59 // /**
60 // * ctor. must reactivate the constructor name change loby
61 // */
62 // this()
63 // {
64 // super("Shopping list");
65 // setDefaultSize(320,200);
66 // setBorderWidth(5);
68 // setup();
69 //
70 // show();
71 // }
73 // private void setup()
74 // {
75 // VBox vbox;
76 // HBox hbox;
77 // ScrolledWindow sw;
78 // Button button;
79 // TreeModel model;
80 //
81 // /* create window, etc */
82 //
83 // vbox = new VBox(false, 5);
84 // add(vbox);
85 // vbox.packStart(new Label("Shopping list (you can edit the cells!)"),false,false, 0);
86 //
87 // sw = new ScrolledWindow(null,null);
88 // sw.setShadowType(ShadowType.ETCHED_IN);
89 // sw.setPolicy(PolicyType.AUTOMATIC,PolicyType.AUTOMATIC);
90 // vbox.packStart(sw,true,true, 0);
91 //
92 // /* create model */
93 // model = createModel();
94 //
95 // /* create tree view */
96 // treeView = new TreeView(model); // add model here
97 // //g_object_unref (model); // do we need this???
98 // treeView.setRulesHint(true);
99 // treeView.getSelection().setMode(SelectionMode.SINGLE);
101 // addColumns(treeView);
102 // sw.add(treeView);
104 // /* some buttons */
105 // hbox = new HBox(true,4);
106 // vbox.packStart(hbox,false,false,0);
108 // button = new Button("Add item",&addItem);
109 // hbox.packStart(button,true,true,0);
111 // button = new Button("Remove item",&removeItem);
112 // hbox.packStart(button,true,true,0);
114 // }
116 // enum cols
117 // {
118 // COLUMN_NUMBER,
119 // COLUMN_PRODUCT,
120 // COLUMN_EDITABLE,
121 // NUM_COLUMNS
122 // };
124 // TreeModel createModel()
125 // {
128 // int i = 0;
129 // ListStore model;
130 // TreeIter iter = new TreeIter();
132 // /* create array */
133 // //articles = g_array_sized_new (FALSE, FALSE, sizeof (Item), 1);
135 // addItems();
137 // GtkDType []columns;
138 //// columns ~= GtkDType.INT;
139 //// columns ~= GtkDType.STRING;
140 //// columns ~= GtkDType.BOOLEAN;
142 // columns ~= GtkDType.STRING;
143 // columns ~= GtkDType.STRING;
144 // columns ~= GtkDType.BOOLEAN;
146 // /* create list store */
147 // model = new ListStore(columns);
149 // /* add items */
150 // foreach(ListRow row ; listRows)
151 // {
152 // model.append(iter);
153 // model.set(iter,row);
154 // }
156 // return model;
157 // }
159 // void editedCallback(CellRenderer renderer, TreeModel model, char[] pathString, char[] newText,int column)
160 // {
161 // //printf("path string %.*s\n",pathString);
162 // //printf("newText %.*s\n",newText);
163 // //printf("column %d\n",column);
165 // TreeIter iter = new TreeIter();
167 // ListStore store = cast(ListStore)model;
169 // TreePath path = new TreePath(pathString);
170 // model.getIter(iter,path);
171 // //store.getIter(iter,path);
172 // int row = path.getIndices()[0];
174 // switch ( column )
175 // {
176 // case 0:
177 // try
178 // {
179 // listRows[row].setNumber(Integer.toInt(newText));
180 // }
181 // catch(Error error)
182 // {
183 // //printf("catch error\n");
184 // // ignore to keep old value
185 // }
186 // //model.set(iter, listRows[row]);
187 // store.setValue(iter, column, listRows[row].getNumber().toString());
188 // break;
190 // case 1:
191 // listRows[row].setProduct(newText);
192 // //model.set(iter, listRows[row]);
193 // store.setValue(iter, column, listRows[row].getProduct().toString());
194 // break;
196 // default:
197 // printf("TEditableCells.editedCallback : Unexpected column edited %d\n",column);
198 // break;
199 // }
200 // dump(listRows);
202 // }
203 // void addColumns(TreeView treeView)
204 // {
205 // Dispatcher dispatcher = Dispatcher.getDispatcher();
206 // CellRenderer renderer;
207 // TreeModel model = treeView.getModel();
208 // renderer = new CellRendererText();
209 // int pos = treeView.insertEditableColumn(0, "Number", renderer, true);
210 // //TreeViewColumn column = new TreeViewColumn("Number",new CellRendererText(),"text", 0);
211 // //treeView.appendColumn(column);
212 // TreeViewColumn column = treeView.getColumn(pos-1);
213 // column.setResizable(true);
214 // column.setSortColumnID(0);
215 // column.setSortIndicator(true);
216 // dispatcher.addCellListener(this,renderer,model,pos-1);
218 // renderer = new CellRendererText();
219 // pos = treeView.insertEditableColumn(1, "Product", renderer, true);
220 // //column = new TreeViewColumn("Product",new CellRendererText(),"text", 1);
221 // //treeView.appendColumn(column);
222 // column = treeView.getColumn(pos-1);
223 // column.setResizable(true);
224 // column.setSortColumnID(1);
225 // column.setSortIndicator(true);
226 // dispatcher.addCellListener(this,renderer,model,pos-1);
228 // }
230 // class ListRow : TreeNode
231 // {
232 // int number;
233 // char[] product;
234 // bit editable;
235 // this(int number, char[] prod, bit editable)
236 // {
237 // this.number = number;
238 // product = prod;
239 // this.editable = editable;
240 // }
241 // void setNumber(int number)
242 // {
243 // this.number = number;
244 // }
245 // char[] getNumber()
246 // {
247 // return number;
248 // }
249 // void setProduct(char[] prod)
250 // {
251 // product = prod;
252 // }
253 // char[] getProduct()
254 // {
255 // return product;
256 // }
257 // void* getNodeValue(int column)
258 // {
259 // switch(column)
260 // {
261 // case 0: return number; break;
262 // case 1: return product; break;
263 // case 2: return editable; break;
264 // }
265 // }
266 // char[] toString()
267 // {
268 // return ""~number ~ "\t" ~ product ~ "\t" ~ editable;
269 // }
270 // }
272 // void addItems()
273 // {
274 // listRows ~= new ListRow(3,"bottles of coke",true);
275 // listRows ~= new ListRow(5,"packages of noodles",true);
276 // listRows ~= new ListRow(2,"packages of chocolate chip cookies",true);
277 // listRows ~= new ListRow(1,"can vanilla ice cream",true);
278 // listRows ~= new ListRow(6,"eggs",true);
279 // }
281 // void addItem(Button button)
282 // {
283 // Item foo;
284 // TreeIter iter = new TreeIter;
285 // ListStore model = treeView.getListStore();
287 // ListRow row = new ListRow(0,"Description here",true);
289 // model.append(iter);
290 // model.set(iter,row);
291 // listRows ~= row;
293 // }
295 // void removeItem(Button button)
296 // {
298 // TreeIter iter = new TreeIter;
299 // ListStore model = treeView.getListStore();
301 // TreeSelection selection = treeView.getSelection();
303 // if ( selection.getSelected(model,iter) )
304 // {
305 // TreePath path;
306 // path = model.getPath(iter);
307 // int row = path.getIndices()[0];
308 // model.remove(iter);
310 // //dump(listRows);
311 // //listRows = listRows[0..row] ~ listRows[row+1..listRows.length];
312 // listRows[row..listRows.length-1] = listRows[row+1..listRows.length];
313 // listRows.length = listRows.length-1;
314 // //dump(listRows);
315 // path.free();
316 // }
317 // }
320 // void dump(Object[] oArray)
321 // {
322 // writefln("\n");
323 // foreach(Object o ; oArray)
324 // {
325 // writefln("%s",o);
326 // }
327 // }