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