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