SUMO - Simulation of Urban MObility
MFXEditableTable.cpp
Go to the documentation of this file.
1 /****************************************************************************/
7 // missing_desc
8 /****************************************************************************/
9 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
10 // Copyright (C) 2004-2015 DLR (http://www.dlr.de/) and contributors
11 /****************************************************************************/
12 //
13 // This file is part of SUMO.
14 // SUMO is free software: you can redistribute it and/or modify
15 // it under the terms of the GNU General Public License as published by
16 // the Free Software Foundation, either version 3 of the License, or
17 // (at your option) any later version.
18 //
19 /****************************************************************************/
20 
21 
22 // ===========================================================================
23 // included modules
24 // ===========================================================================
25 #ifdef _MSC_VER
26 #include <windows_config.h>
27 #else
28 #include <config.h>
29 #endif
30 
31 #include <fx.h>
32 #include <fxkeys.h>
33 #include "MFXEditableTable.h"
34 
35 #ifdef CHECK_MEMORY_LEAKS
36 #include <foreign/nvwa/debug_new.h>
37 #endif // CHECK_MEMORY_LEAKS
38 
39 FXDEFMAP(MFXEditableTable) MFXEditableTableMap[] = {
40  FXMAPFUNC(SEL_LEFTBUTTONPRESS, 0, MFXEditableTable::onLeftBtnPress),
41  FXMAPFUNC(SEL_LEFTBUTTONRELEASE, 0, MFXEditableTable::onLeftBtnRelease),
42  FXMAPFUNC(SEL_CLICKED, 0, MFXEditableTable::onLeftBtnClicked),
43  FXMAPFUNC(SEL_RIGHTBUTTONRELEASE, 0, MFXEditableTable::onRightBtnRelease),
44  FXMAPFUNC(SEL_KEYRELEASE, 0, MFXEditableTable::onKeyRelease),
46  // FXMAPFUNC(SEL_TIMEOUT,FXTable::ID_TIPTIMER, MFXEditableTable::onTipTimer),
49 
50  FXMAPFUNC(SEL_COMMAND, FXWindow::ID_HSCROLLED, MFXEditableTable::onHScrollerChanged),
51  FXMAPFUNC(SEL_COMMAND, FXWindow::ID_VSCROLLED, MFXEditableTable::onVScrollerChanged),
52  FXMAPFUNC(SEL_CHANGED, FXWindow::ID_HSCROLLED, MFXEditableTable::onHScrollerDragged),
53  FXMAPFUNC(SEL_CHANGED, FXWindow::ID_VSCROLLED, MFXEditableTable::onVScrollerDragged),
54  /*
55  FXMAPFUNC(SEL_TIMEOUT,FXWindow::ID_AUTOSCROLL,MFXEditableTable::onAutoScroll),
56  FXMAPFUNC(SEL_UNGRABBED,0,MFXEditableTable::onUngrabbed),
57  FXMAPFUNC(SEL_RIGHTBUTTONPRESS,0,MFXEditableTable::onRightBtnPress),
58  FXMAPFUNC(SEL_KEYPRESS,0,MFXEditableTable::onTabKeyPress),
59  FXMAPFUNC(SEL_KEYRELEASE,0,MFXEditableTable::onTabKeyRelease),
60  FXMAPFUNC(SEL_CLIPBOARD_LOST,0,MFXEditableTable::onClipboardLost),
61  FXMAPFUNC(SEL_CLIPBOARD_GAINED,0,MFXEditableTable::onClipboardGained),
62  FXMAPFUNC(SEL_CLIPBOARD_REQUEST,0,MFXEditableTable::onClipboardRequest),
63  FXMAPFUNC(SEL_DOUBLECLICKED,0,MFXEditableTable::onDoubleClicked),
64  FXMAPFUNC(SEL_TRIPLECLICKED,0,MFXEditableTable::onTripleClicked),
65  FXMAPFUNC(SEL_COMMAND,0,MFXEditableTable::onCommand),
66  */
67  /*
68  FXMAPFUNC(SEL_FOCUSIN,0,MFXEditableTable::onFocusIn),
69  FXMAPFUNC(SEL_FOCUSOUT,0,MFXEditableTable::onFocusOut),
70  FXMAPFUNC(SEL_SELECTION_LOST,0,MFXEditableTable::onSelectionLost),
71  FXMAPFUNC(SEL_SELECTION_GAINED,0,MFXEditableTable::onSelectionGained),
72  FXMAPFUNC(SEL_SELECTION_REQUEST,0,MFXEditableTable::onSelectionRequest),
73  */
74 
75  FXMAPFUNC(SEL_UPDATE, FXTable::ID_HORZ_GRID, MFXEditableTable::onUpdHorzGrid),
76  FXMAPFUNC(SEL_UPDATE, FXTable::ID_VERT_GRID, MFXEditableTable::onUpdVertGrid),
77  FXMAPFUNC(SEL_COMMAND, FXTable::ID_HORZ_GRID, MFXEditableTable::onCmdHorzGrid),
78  FXMAPFUNC(SEL_COMMAND, FXTable::ID_VERT_GRID, MFXEditableTable::onCmdVertGrid),
79  FXMAPFUNC(SEL_COMMAND, FXTable::ID_DELETE_COLUMN, MFXEditableTable::onCmdDeleteColumn),
80  FXMAPFUNC(SEL_UPDATE, FXTable::ID_DELETE_COLUMN, MFXEditableTable::onUpdDeleteColumn),
81  FXMAPFUNC(SEL_COMMAND, FXTable::ID_DELETE_ROW, MFXEditableTable::onCmdDeleteRow),
82  FXMAPFUNC(SEL_UPDATE, FXTable::ID_DELETE_ROW, MFXEditableTable::onUpdDeleteRow),
83  FXMAPFUNC(SEL_COMMAND, FXTable::ID_INSERT_COLUMN, MFXEditableTable::onCmdInsertColumn),
84  FXMAPFUNC(SEL_COMMAND, FXTable::ID_INSERT_ROW, MFXEditableTable::onCmdInsertRow),
85 
86  FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_LEFT, MFXEditableTable::onCmdMoveLeft),
87  FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_RIGHT, MFXEditableTable::onCmdMoveRight),
88  FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_UP, MFXEditableTable::onCmdMoveUp),
89  FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_DOWN, MFXEditableTable::onCmdMoveDown),
90  FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_HOME, MFXEditableTable::onCmdMoveHome),
91  FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_END, MFXEditableTable::onCmdMoveEnd),
92  FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_TOP, MFXEditableTable::onCmdMoveTop),
93  FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_BOTTOM, MFXEditableTable::onCmdMoveBottom),
94  FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_PAGEDOWN, MFXEditableTable::onCmdMovePageDown),
95  FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_PAGEUP, MFXEditableTable::onCmdMovePageUp),
96 
97  FXMAPFUNC(SEL_COMMAND, FXTable::ID_SELECT_ROW_INDEX, MFXEditableTable::onCmdSelectRowIndex),
98  FXMAPFUNC(SEL_COMMAND, FXTable::ID_SELECT_COLUMN_INDEX, MFXEditableTable::onCmdSelectColumnIndex),
99  FXMAPFUNC(SEL_COMMAND, FXTable::ID_SELECT_COLUMN, MFXEditableTable::onCmdSelectColumn),
100  FXMAPFUNC(SEL_COMMAND, FXTable::ID_SELECT_ROW, MFXEditableTable::onCmdSelectRow),
101  // FXMAPFUNC(SEL_COMMAND,FXTable::ID_SELECT_CELL,MFXEditableTable::onCmdSelectCell),
102  FXMAPFUNC(SEL_COMMAND, FXTable::ID_SELECT_ALL, MFXEditableTable::onCmdSelectAll),
103  FXMAPFUNC(SEL_COMMAND, FXTable::ID_DESELECT_ALL, MFXEditableTable::onCmdDeselectAll),
104  FXMAPFUNC(SEL_COMMAND, FXTable::ID_MARK, MFXEditableTable::onCmdMark),
105  FXMAPFUNC(SEL_COMMAND, FXTable::ID_EXTEND, MFXEditableTable::onCmdExtend),
106 };
107 
108 
109 // Object implementation
110 FXIMPLEMENT(MFXEditableTable, FXTable, MFXEditableTableMap, ARRAYNUMBER(MFXEditableTableMap))
111 
112 
113 MFXEditableTable::MFXEditableTable(FXComposite* p, FXObject* tgt,
114  FXSelector sel, FXuint opts,
115  FXint x, FXint y, FXint w, FXint h,
116  FXint pl, FXint pr, FXint pt, FXint pb)
117  : FXTable(p, tgt, sel, opts, x, y, w, h, pl, pr, pt, pb),
118  myEditedItem(0) {
119  myEditor =
120  new FXTextField((FXComposite*)getParent(), 1, this,
121  ID_EDITOR, FRAME_NORMAL | LAYOUT_EXPLICIT);
122  myEditor->hide();
123  flags |= FLAG_ENABLED | FLAG_DROPTARGET;
124 }
125 
126 
128 
129 
130 long
131 MFXEditableTable::onLeftBtnPress(FXObject* sender, FXSelector sel, void* ptr) {
132  editEnd();
133  FXTable::onLeftBtnPress(sender, sel, ptr);
134  return 1;
135 }
136 
137 
138 long
139 MFXEditableTable::onLeftBtnClicked(FXObject* , FXSelector , void* ptr) {
140  FXTablePos* e = (FXTablePos*)ptr;
141  int r = e->row;
142  int c = e->col;
143  if (c == -1 || r == -1) {
144  return 1;
145  }
146  killSelection(false);
147  myEditedItem = getItem(r, c);
148  myEditedCol = c;
149  myEditedRow = r;
150  if (c >= 0 && r >= 0) {
152  } else {
153  editEnd();
154  }
155  return 1;
156 }
157 
158 
159 long
160 MFXEditableTable::onLeftBtnRelease(FXObject* sender, FXSelector sel, void* ptr) {
161  FXTable::onLeftBtnRelease(sender, sel, ptr);
162  /* FXEvent* e= (FXEvent*)ptr;
163  if(flgEditTimer) {
164  flgEditTimer = FALSE;
165  if(!e->moved) getApp()->addTimeout(this,ID_EDITTIMER,600);
166  }*/
167  return 1;
168 }
169 
170 
171 void
172 MFXEditableTable::editItem(FXTableItem* item, FXint how) {
173  if (item == 0) {
174  editEnd();
175  return;
176  }
178  editEnd();
179  return;
180  }
181  FXTableItem* it = item;
182  myPreviousText = item->getText();
183  FXint x = getColumnX(myEditedCol) + getRowHeader()->getWidth() + xpos;
184  FXint y = getRowY(myEditedRow) + getColumnHeader()->getHeight() + ypos;
185  FXIcon* icon = item->getIcon();
186  if (icon) {
187  x += icon->getWidth() + 4;
188  }
189  FXint vw = getViewportWidth();
190  if (vertical->shown()) {
191  vw -= vertical->getWidth();
192  }
193  if (vw > getColumnWidth(myEditedCol)) {
194  vw = getColumnWidth(myEditedCol) + x;
195  }
196  myEditor->setText(it->getText());
197  myEditor->move(x, y);
198  myEditor->resize(vw - x + 1, getRowHeight(myEditedRow) + 1);
199  myEditor->show();
200  myEditor->raise();
201  myEditor->setFocus();
202  if (how == 'I') {
203  myEditor->killSelection();
204  myEditor->setCursorPos(0);
205  } else if (how == 'A') {
206  myEditor->killSelection();
207  myEditor->setCursorPos(myEditor->getText().length());
208  } else {
209  myEditor->selectAll();
210  }
211  myEditedItem = it;
212 }
213 
214 
215 void
217  if (!myEditedItem) {
218  return;
219  }
220  FXTableItem* item = myEditedItem;
221  myEditedItem = NULL;
222  myEditor->hide();
223  setFocus();
224  FXString text = myEditor->getText();
225  myEditedItem = 0;
226  if (item->getText() == text) {
227  return;
228  }
229  if (handle(item, FXSEL(SEL_COMMAND, ID_EDITEND), &text)) {
230  item->setText(text);
231  handle(this, FXSEL(SEL_CHANGED, 0), item);
232  }
233  killSelection(true);
234  if (target) {
235  MFXEditedTableItem edited;
236  edited.item = item;
237  edited.row = myEditedRow;
238  edited.col = myEditedCol;
239  if (!target->handle(this, FXSEL(SEL_CHANGED, ID_TEXT_CHANGED), (void*) &edited)) {
240  item->setText(myPreviousText);
241  }
242  }
243 }
244 
245 
246 long
247 MFXEditableTable::onEditEnd(FXObject*, FXSelector , void*) {
248  delete myEditedItem;
249  myEditedItem = 0;
250  return 1;
251 }
252 
253 
254 void
256  if (!myEditedItem) {
257  return;
258  }
259  myEditedItem = 0;
260  myEditor->hide();
261  setFocus();
262  killSelection(true);
263 }
264 
265 
266 long
267 MFXEditableTable::onEditKeyPress(FXObject*, FXSelector, void* ptr) {
268  FXEvent* e = (FXEvent*)ptr;
269  switch (e->code) {
270  case KEY_Escape:
271  editCancel();
272  return 1;
273  case KEY_Return:
274  case KEY_KP_Enter:
275  editEnd();
276 // flgEnter = TRUE;
277 // if(e->state & SHIFTMASK) handle(this, FXSEL(SEL_COMMAND,ID_NEXTLINE), NULL);
278  return 1;
279  case KEY_Up:
280  case KEY_Down:
281 // editEnd();
282  // handle(this, FXSEL(SEL_KEYPRESS,0), ptr);
283  return 1;
284  }
285  return 0;
286 }
287 
288 
289 long
290 MFXEditableTable::onKeyRelease(FXObject* sender, FXSelector sel, void* ptr) {
291  FXint key = ((FXEvent*)ptr)->code;
292  if (/*flgEnter &&*/ key == KEY_Return || key == KEY_KP_Enter) {
293 // flgEnter = FALSE;
294  return 1;
295  }
296 // flgEnter = FALSE;
297  return FXTable::onKeyRelease(sender, sel, ptr);
298 }
299 
300 
301 long
302 MFXEditableTable::onEditFocusOut(FXObject*, FXSelector , void*) {
303  editEnd();
304  return 0;
305 }
306 
307 /*
308 long
309 MFXEditableTable::onTipTimer(FXObject* sender, FXSelector sel, void* ptr)
310 {
311  if(myEditedItem) return 0;
312  return FXTable::onTipTimer(sender, sel, ptr);
313 }
314 */
315 
316 long
317 MFXEditableTable::onRightBtnRelease(FXObject* sender, FXSelector sel, void* ptr) {
318  /* if(dragItem) {
319  flags &= ~(FLAG_PRESSED | FLAG_TRYDRAG | FLAG_DODRAG);
320  endDrag(FALSE);
321  setDragCursor(getDefaultCursor());
322  dragItem = NULL;
323  }*/
324  return FXTable::onRightBtnRelease(sender, sel, ptr);
325 }
326 
327 
328 
329 long
330 MFXEditableTable::onHScrollerChanged(FXObject* o, FXSelector s, void* d) {
331  editEnd();
332  return FXScrollArea::onHScrollerChanged(o, s, d);
333 }
334 
335 
336 long
337 MFXEditableTable::onVScrollerChanged(FXObject* o, FXSelector s, void* d) {
338  editEnd();
339  return FXScrollArea::onVScrollerChanged(o, s, d);
340 }
341 
342 
343 long
344 MFXEditableTable::onHScrollerDragged(FXObject* o, FXSelector s, void* d) {
345  editEnd();
346  return FXScrollArea::onHScrollerDragged(o, s, d);
347 }
348 
349 
350 long
351 MFXEditableTable::onVScrollerDragged(FXObject* o, FXSelector s, void* d) {
352  editEnd();
353  return FXScrollArea::onVScrollerDragged(o, s, d);
354 }
355 
356 
357 long
358 MFXEditableTable::onAutoScroll(FXObject* o, FXSelector s, void* d) {
359  editEnd();
360  return FXTable::onAutoScroll(o, s, d);
361 }
362 
363 
364 long
365 MFXEditableTable::onUngrabbed(FXObject* o, FXSelector s, void* d) {
366  editEnd();
367  return FXTable::onUngrabbed(o, s, d);
368 }
369 
370 
371 long
372 MFXEditableTable::onRightBtnPress(FXObject* o, FXSelector s, void* d) {
373  editEnd();
374  return FXTable::onRightBtnPress(o, s, d);
375 }
376 
377 
378 long
379 MFXEditableTable::onTabKeyPress(FXObject* o, FXSelector s, void* d) {
380  editEnd();
381  return FXTable::onKeyPress(o, s, d);
382 }
383 
384 
385 long
386 MFXEditableTable::onTabKeyRelease(FXObject* o, FXSelector s, void* d) {
387  editEnd();
388  return FXTable::onKeyRelease(o, s, d);
389 }
390 
391 
392 long
393 MFXEditableTable::onFocusIn(FXObject* o, FXSelector s, void* d) {
394 // editEnd();
395  return FXTable::onFocusIn(o, s, d);
396 }
397 
398 
399 long
400 MFXEditableTable::onFocusOut(FXObject* o, FXSelector s, void* d) {
401 // editEnd();
402  return FXTable::onFocusOut(o, s, d);
403 }
404 
405 
406 long
407 MFXEditableTable::onSelectionLost(FXObject* o, FXSelector s, void* d) {
408 // editEnd();
409  return FXTable::onSelectionLost(o, s, d);
410 }
411 
412 
413 long
414 MFXEditableTable::onSelectionGained(FXObject* o, FXSelector s, void* d) {
415 // editEnd();
416  return FXTable::onSelectionGained(o, s, d);
417 }
418 
419 
420 long
421 MFXEditableTable::onSelectionRequest(FXObject* o, FXSelector s, void* d) {
422 // editEnd();
423  return FXTable::onSelectionRequest(o, s, d);
424 }
425 
426 
427 long
428 MFXEditableTable::onClipboardLost(FXObject* o, FXSelector s, void* d) {
429  editEnd();
430  return FXTable::onClipboardLost(o, s, d);
431 }
432 
433 
434 long
435 MFXEditableTable::onClipboardGained(FXObject* o, FXSelector s, void* d) {
436  editEnd();
437  return FXTable::onClipboardGained(o, s, d);
438 }
439 
440 
441 long
442 MFXEditableTable::onClipboardRequest(FXObject* o, FXSelector s, void* d) {
443  editEnd();
444  return FXTable::onClipboardRequest(o, s, d);
445 }
446 
447 
448 long
449 MFXEditableTable::onDoubleClicked(FXObject*, FXSelector , void*) {
450  editEnd();
451  return 1;
452 // return FXTable::onUngrabbed(o, s, d);
453 }
454 
455 
456 long
457 MFXEditableTable::onTripleClicked(FXObject*, FXSelector , void*) {
458  editEnd();
459  return 1;
460 // return FXTable::onUngrabbed(o, s, d);
461 }
462 
463 
464 long
465 MFXEditableTable::onCommand(FXObject* o, FXSelector s, void* d) {
466  editEnd();
467  return FXTable::onCommand(o, s, d);
468 }
469 
470 
471 long
472 MFXEditableTable::onUpdHorzGrid(FXObject* o, FXSelector s, void* d) {
473  editEnd();
474  return FXTable::onUpdHorzGrid(o, s, d);
475 }
476 
477 
478 long
479 MFXEditableTable::onUpdVertGrid(FXObject* o, FXSelector s, void* d) {
480  editEnd();
481  return FXTable::onUpdVertGrid(o, s, d);
482 }
483 
484 
485 long
486 MFXEditableTable::onCmdHorzGrid(FXObject* o, FXSelector s, void* d) {
487  editEnd();
488  return FXTable::onCmdHorzGrid(o, s, d);
489 }
490 
491 
492 long
493 MFXEditableTable::onCmdVertGrid(FXObject* o, FXSelector s, void* d) {
494  editEnd();
495  return FXTable::onCmdVertGrid(o, s, d);
496 }
497 
498 
499 long
500 MFXEditableTable::onCmdDeleteColumn(FXObject*, FXSelector , void*) {
501  editEnd();
502  return 1;
503 // return FXTable::onUngrabbed(o, s, d);
504 }
505 
506 
507 long
508 MFXEditableTable::onUpdDeleteColumn(FXObject*, FXSelector , void*) {
509  editEnd();
510  return 1;
511 // return FXTable::onUngrabbed(o, s, d);
512 }
513 
514 
515 long
516 MFXEditableTable::onCmdDeleteRow(FXObject*, FXSelector , void*) {
517  editEnd();
518  return 1;
519 // return FXTable::onUngrabbed(o, s, d);
520 }
521 
522 
523 long
524 MFXEditableTable::onUpdDeleteRow(FXObject*, FXSelector , void*) {
525  editEnd();
526  return 1;
527 // return FXTable::onUngrabbed(o, s, d);
528 }
529 
530 
531 long
532 MFXEditableTable::onCmdInsertColumn(FXObject*, FXSelector , void*) {
533  editEnd();
534  return 1;
535 // return FXTable::onUngrabbed(o, s, d);
536 }
537 
538 
539 long
540 MFXEditableTable::onCmdInsertRow(FXObject*, FXSelector , void*) {
541  editEnd();
542  return 1;
543 // return FXTable::onUngrabbed(o, s, d);
544 }
545 
546 
547 
548 long
549 MFXEditableTable::onCmdMoveLeft(FXObject* o, FXSelector s, void* d) {
550  editEnd();
551  return FXTable::onCmdMoveLeft(o, s, d);
552 }
553 
554 
555 long
556 MFXEditableTable::onCmdMoveRight(FXObject* o, FXSelector s, void* d) {
557  editEnd();
558  return FXTable::onCmdMoveRight(o, s, d);
559 }
560 
561 
562 long
563 MFXEditableTable::onCmdMoveUp(FXObject* o, FXSelector s, void* d) {
564  editEnd();
565  return FXTable::onCmdMoveUp(o, s, d);
566 }
567 
568 
569 long
570 MFXEditableTable::onCmdMoveDown(FXObject* o, FXSelector s, void* d) {
571  editEnd();
572  return FXTable::onCmdMoveDown(o, s, d);
573 }
574 
575 
576 long
577 MFXEditableTable::onCmdMoveHome(FXObject* o, FXSelector s, void* d) {
578  editEnd();
579  return FXTable::onCmdMoveHome(o, s, d);
580 }
581 
582 
583 long
584 MFXEditableTable::onCmdMoveEnd(FXObject* o, FXSelector s, void* d) {
585  editEnd();
586  return FXTable::onCmdMoveEnd(o, s, d);
587 }
588 
589 
590 long
591 MFXEditableTable::onCmdMoveTop(FXObject* o, FXSelector s, void* d) {
592  editEnd();
593  return FXTable::onCmdMoveTop(o, s, d);
594 }
595 
596 
597 long
598 MFXEditableTable::onCmdMoveBottom(FXObject* o, FXSelector s, void* d) {
599  editEnd();
600  return FXTable::onCmdMoveBottom(o, s, d);
601 }
602 
603 
604 long
605 MFXEditableTable::onCmdMovePageDown(FXObject* o, FXSelector s, void* d) {
606  editEnd();
607  return FXTable::onCmdMovePageDown(o, s, d);
608 }
609 
610 
611 long
612 MFXEditableTable::onCmdMovePageUp(FXObject* o, FXSelector s, void* d) {
613  editEnd();
614  return FXTable::onCmdMovePageUp(o, s, d);
615 }
616 
617 
618 
619 long
620 MFXEditableTable::onCmdSelectRowIndex(FXObject* o, FXSelector s, void* d) {
621  editEnd();
622  return FXTable::onCmdSelectRowIndex(o, s, d);
623 }
624 
625 
626 long
627 MFXEditableTable::onCmdSelectColumnIndex(FXObject*, FXSelector , void*) {
628  editEnd();
629  return 1;
630 // return FXTable::onUngrabbed(o, s, d);
631 }
632 
633 
634 long
635 MFXEditableTable::onCmdSelectColumn(FXObject*, FXSelector , void*) {
636  editEnd();
637  return 1;
638 // return FXTable::onUngrabbed(o, s, d);
639 }
640 
641 
642 long
643 MFXEditableTable::onCmdSelectRow(FXObject* o, FXSelector s, void* d) {
644  editEnd();
645  return FXTable::onCmdSelectRow(o, s, d);
646 }
647 
648 
649 long
650 MFXEditableTable::onCmdSelectCell(FXObject*, FXSelector , void*) {
651 // editEnd();
652  return 1;
653 // return FXTable::onUngrabbed(o, s, d);
654 }
655 
656 
657 long
658 MFXEditableTable::onCmdSelectAll(FXObject*, FXSelector , void*) {
659  editEnd();
660  return 1;
661 // return FXTable::onUngrabbed(o, s, d);
662 }
663 
664 
665 long
666 MFXEditableTable::onCmdDeselectAll(FXObject*, FXSelector , void*) {
667  editEnd();
668  return 1;
669 // return FXTable::onUngrabbed(o, s, d);
670 }
671 
672 
673 long
674 MFXEditableTable::onCmdMark(FXObject* o, FXSelector s, void* d) {
675  editEnd();
676  return FXTable::onCmdMark(o, s, d);
677 }
678 
679 
680 long
681 MFXEditableTable::onCmdExtend(FXObject* o, FXSelector s, void* d) {
682  editEnd();
683  return FXTable::onCmdExtend(o, s, d);
684 }
685 
686 
687 void
689  if (val) {
690  myWriteProtectedCols.insert(col);
691  } else {
692  std::set<int>::iterator i = myWriteProtectedCols.find(col);
693  if (i != myWriteProtectedCols.end()) {
694  myWriteProtectedCols.erase(i);
695  }
696  }
697 }
698 
699 
700 
701 /****************************************************************************/
702 
long onCmdMoveTop(FXObject *o, FXSelector s, void *d)
long onUpdVertGrid(FXObject *o, FXSelector s, void *d)
long onEditEnd(FXObject *, FXSelector, void *)
long onCmdMark(FXObject *o, FXSelector s, void *d)
long onCmdSelectRow(FXObject *o, FXSelector s, void *d)
long onHScrollerChanged(FXObject *o, FXSelector s, void *d)
long onClipboardRequest(FXObject *o, FXSelector s, void *d)
virtual void editItem(FXTableItem *item, FXint how)
long onUpdDeleteColumn(FXObject *o, FXSelector s, void *d)
long onCmdSelectRowIndex(FXObject *o, FXSelector s, void *d)
long onCmdSelectColumnIndex(FXObject *o, FXSelector s, void *d)
long onCmdMovePageUp(FXObject *o, FXSelector s, void *d)
long onFocusIn(FXObject *o, FXSelector s, void *d)
long onCmdInsertColumn(FXObject *o, FXSelector s, void *d)
long onCmdMoveRight(FXObject *o, FXSelector s, void *d)
long onRightBtnPress(FXObject *o, FXSelector s, void *d)
long onCmdSelectCell(FXObject *o, FXSelector s, void *d)
FXTableItem * myEditedItem
long onDoubleClicked(FXObject *o, FXSelector s, void *d)
long onCmdInsertRow(FXObject *o, FXSelector s, void *d)
long onRightBtnRelease(FXObject *sender, FXSelector sel, void *ptr)
long onClipboardLost(FXObject *o, FXSelector s, void *d)
long onAutoScroll(FXObject *o, FXSelector s, void *d)
long onCmdVertGrid(FXObject *o, FXSelector s, void *d)
long onCmdDeleteRow(FXObject *o, FXSelector s, void *d)
long onCmdMoveBottom(FXObject *o, FXSelector s, void *d)
long onFocusOut(FXObject *o, FXSelector s, void *d)
FXTableItem * item
long onCmdMoveHome(FXObject *o, FXSelector s, void *d)
long onCmdSelectAll(FXObject *o, FXSelector s, void *d)
long onCmdMovePageDown(FXObject *o, FXSelector s, void *d)
long onHScrollerDragged(FXObject *o, FXSelector s, void *d)
virtual void editCancel()
long onSelectionRequest(FXObject *o, FXSelector s, void *d)
long onTabKeyRelease(FXObject *o, FXSelector s, void *d)
long onSelectionLost(FXObject *o, FXSelector s, void *d)
virtual void editEnd()
FXDEFMAP(MFXEditableTable) MFXEditableTableMap[]
long onCmdMoveLeft(FXObject *o, FXSelector s, void *d)
long onLeftBtnRelease(FXObject *sender, FXSelector sel, void *ptr)
long onKeyRelease(FXObject *sender, FXSelector sel, void *ptr)
long onUpdDeleteRow(FXObject *o, FXSelector s, void *d)
long onVScrollerChanged(FXObject *o, FXSelector s, void *d)
long onClipboardGained(FXObject *o, FXSelector s, void *d)
long onSelectionGained(FXObject *o, FXSelector s, void *d)
long onCmdExtend(FXObject *o, FXSelector s, void *d)
long onCmdMoveEnd(FXObject *o, FXSelector s, void *d)
long onEditFocusOut(FXObject *, FXSelector, void *)
long onUngrabbed(FXObject *o, FXSelector s, void *d)
long onVScrollerDragged(FXObject *o, FXSelector s, void *d)
long onCommand(FXObject *o, FXSelector s, void *d)
long onCmdDeselectAll(FXObject *o, FXSelector s, void *d)
long onCmdSelectColumn(FXObject *o, FXSelector s, void *d)
long onTripleClicked(FXObject *o, FXSelector s, void *d)
long onLeftBtnPress(FXObject *sender, FXSelector sel, void *ptr)
void writeProtectCol(int col, bool val=true)
FXTextField * myEditor
long onEditKeyPress(FXObject *, FXSelector, void *ptr)
long onCmdDeleteColumn(FXObject *o, FXSelector s, void *d)
long onCmdHorzGrid(FXObject *o, FXSelector s, void *d)
long onCmdMoveUp(FXObject *o, FXSelector s, void *d)
long onTabKeyPress(FXObject *o, FXSelector s, void *d)
long onUpdHorzGrid(FXObject *o, FXSelector s, void *d)
long onCmdMoveDown(FXObject *o, FXSelector s, void *d)
long onLeftBtnClicked(FXObject *sender, FXSelector sel, void *ptr)
std::set< int > myWriteProtectedCols