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