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