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