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
25FXDEFMAP(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
96FXIMPLEMENT(MFXEditableTable, FXTable, MFXEditableTableMap, ARRAYNUMBER(MFXEditableTableMap))
97
98
99MFXEditableTable::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
116long
117MFXEditableTable::onLeftBtnPress(FXObject* sender, FXSelector sel, void* ptr) {
118 editEnd();
119 FXTable::onLeftBtnPress(sender, sel, ptr);
120 return 1;
121}
122
123
124long
125MFXEditableTable::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
145long
146MFXEditableTable::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
157void
158MFXEditableTable::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
201void
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
232long
233MFXEditableTable::onEditEnd(FXObject*, FXSelector, void*) {
234 delete myEditedItem;
235 myEditedItem = nullptr;
236 return 1;
237}
238
239
240void
242 if (!myEditedItem) {
243 return;
244 }
245 myEditedItem = nullptr;
246 myEditor->hide();
247 setFocus();
248 killSelection(true);
249}
250
251
252long
253MFXEditableTable::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
275long
276MFXEditableTable::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
287long
288MFXEditableTable::onEditFocusOut(FXObject*, FXSelector, void*) {
289 editEnd();
290 return 0;
291}
292
293/*
294long
295MFXEditableTable::onTipTimer(FXObject* sender, FXSelector sel, void* ptr)
296{
297 if(myEditedItem) return 0;
298 return FXTable::onTipTimer(sender, sel, ptr);
299}
300*/
301
302long
303MFXEditableTable::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
315long
316MFXEditableTable::onHScrollerChanged(FXObject* o, FXSelector s, void* d) {
317 editEnd();
318 return FXScrollArea::onHScrollerChanged(o, s, d);
319}
320
321
322long
323MFXEditableTable::onVScrollerChanged(FXObject* o, FXSelector s, void* d) {
324 editEnd();
325 return FXScrollArea::onVScrollerChanged(o, s, d);
326}
327
328
329long
330MFXEditableTable::onHScrollerDragged(FXObject* o, FXSelector s, void* d) {
331 editEnd();
332 return FXScrollArea::onHScrollerDragged(o, s, d);
333}
334
335
336long
337MFXEditableTable::onVScrollerDragged(FXObject* o, FXSelector s, void* d) {
338 editEnd();
339 return FXScrollArea::onVScrollerDragged(o, s, d);
340}
341
342
343long
344MFXEditableTable::onAutoScroll(FXObject* o, FXSelector s, void* d) {
345 editEnd();
346 return FXTable::onAutoScroll(o, s, d);
347}
348
349
350long
351MFXEditableTable::onUngrabbed(FXObject* o, FXSelector s, void* d) {
352 editEnd();
353 return FXTable::onUngrabbed(o, s, d);
354}
355
356
357long
358MFXEditableTable::onRightBtnPress(FXObject* o, FXSelector s, void* d) {
359 editEnd();
360 return FXTable::onRightBtnPress(o, s, d);
361}
362
363
364long
365MFXEditableTable::onTabKeyPress(FXObject* o, FXSelector s, void* d) {
366 editEnd();
367 return FXTable::onKeyPress(o, s, d);
368}
369
370
371long
372MFXEditableTable::onTabKeyRelease(FXObject* o, FXSelector s, void* d) {
373 editEnd();
374 return FXTable::onKeyRelease(o, s, d);
375}
376
377
378long
379MFXEditableTable::onFocusIn(FXObject* o, FXSelector s, void* d) {
380// editEnd();
381 return FXTable::onFocusIn(o, s, d);
382}
383
384
385long
386MFXEditableTable::onFocusOut(FXObject* o, FXSelector s, void* d) {
387// editEnd();
388 return FXTable::onFocusOut(o, s, d);
389}
390
391
392long
393MFXEditableTable::onSelectionLost(FXObject* o, FXSelector s, void* d) {
394// editEnd();
395 return FXTable::onSelectionLost(o, s, d);
396}
397
398
399long
400MFXEditableTable::onSelectionGained(FXObject* o, FXSelector s, void* d) {
401// editEnd();
402 return FXTable::onSelectionGained(o, s, d);
403}
404
405
406long
407MFXEditableTable::onSelectionRequest(FXObject* o, FXSelector s, void* d) {
408// editEnd();
409 return FXTable::onSelectionRequest(o, s, d);
410}
411
412
413long
414MFXEditableTable::onClipboardLost(FXObject* o, FXSelector s, void* d) {
415 editEnd();
416 return FXTable::onClipboardLost(o, s, d);
417}
418
419
420long
421MFXEditableTable::onClipboardGained(FXObject* o, FXSelector s, void* d) {
422 editEnd();
423 return FXTable::onClipboardGained(o, s, d);
424}
425
426
427long
428MFXEditableTable::onClipboardRequest(FXObject* o, FXSelector s, void* d) {
429 editEnd();
430 return FXTable::onClipboardRequest(o, s, d);
431}
432
433
434long
435MFXEditableTable::onDoubleClicked(FXObject*, FXSelector, void*) {
436 editEnd();
437 return 1;
438// return FXTable::onUngrabbed(o, s, d);
439}
440
441
442long
443MFXEditableTable::onTripleClicked(FXObject*, FXSelector, void*) {
444 editEnd();
445 return 1;
446// return FXTable::onUngrabbed(o, s, d);
447}
448
449
450long
451MFXEditableTable::onCommand(FXObject* o, FXSelector s, void* d) {
452 editEnd();
453 return FXTable::onCommand(o, s, d);
454}
455
456
457long
458MFXEditableTable::onUpdHorzGrid(FXObject* o, FXSelector s, void* d) {
459 editEnd();
460 return FXTable::onUpdHorzGrid(o, s, d);
461}
462
463
464long
465MFXEditableTable::onUpdVertGrid(FXObject* o, FXSelector s, void* d) {
466 editEnd();
467 return FXTable::onUpdVertGrid(o, s, d);
468}
469
470
471long
472MFXEditableTable::onCmdHorzGrid(FXObject* o, FXSelector s, void* d) {
473 editEnd();
474 return FXTable::onCmdHorzGrid(o, s, d);
475}
476
477
478long
479MFXEditableTable::onCmdVertGrid(FXObject* o, FXSelector s, void* d) {
480 editEnd();
481 return FXTable::onCmdVertGrid(o, s, d);
482}
483
484
485long
486MFXEditableTable::onCmdDeleteColumn(FXObject*, FXSelector, void*) {
487 editEnd();
488 return 1;
489// return FXTable::onUngrabbed(o, s, d);
490}
491
492
493long
494MFXEditableTable::onUpdDeleteColumn(FXObject*, FXSelector, void*) {
495 editEnd();
496 return 1;
497// return FXTable::onUngrabbed(o, s, d);
498}
499
500
501long
502MFXEditableTable::onCmdDeleteRow(FXObject*, FXSelector, void*) {
503 editEnd();
504 return 1;
505// return FXTable::onUngrabbed(o, s, d);
506}
507
508
509long
510MFXEditableTable::onUpdDeleteRow(FXObject*, FXSelector, void*) {
511 editEnd();
512 return 1;
513// return FXTable::onUngrabbed(o, s, d);
514}
515
516
517long
518MFXEditableTable::onCmdInsertColumn(FXObject*, FXSelector, void*) {
519 editEnd();
520 return 1;
521// return FXTable::onUngrabbed(o, s, d);
522}
523
524
525long
526MFXEditableTable::onCmdInsertRow(FXObject*, FXSelector, void*) {
527 editEnd();
528 return 1;
529// return FXTable::onUngrabbed(o, s, d);
530}
531
532
533
534long
535MFXEditableTable::onCmdMoveLeft(FXObject* o, FXSelector s, void* d) {
536 editEnd();
537 return FXTable::onCmdMoveLeft(o, s, d);
538}
539
540
541long
542MFXEditableTable::onCmdMoveRight(FXObject* o, FXSelector s, void* d) {
543 editEnd();
544 return FXTable::onCmdMoveRight(o, s, d);
545}
546
547
548long
549MFXEditableTable::onCmdMoveUp(FXObject* o, FXSelector s, void* d) {
550 editEnd();
551 return FXTable::onCmdMoveUp(o, s, d);
552}
553
554
555long
556MFXEditableTable::onCmdMoveDown(FXObject* o, FXSelector s, void* d) {
557 editEnd();
558 return FXTable::onCmdMoveDown(o, s, d);
559}
560
561
562long
563MFXEditableTable::onCmdMoveHome(FXObject* o, FXSelector s, void* d) {
564 editEnd();
565 return FXTable::onCmdMoveHome(o, s, d);
566}
567
568
569long
570MFXEditableTable::onCmdMoveEnd(FXObject* o, FXSelector s, void* d) {
571 editEnd();
572 return FXTable::onCmdMoveEnd(o, s, d);
573}
574
575
576long
577MFXEditableTable::onCmdMoveTop(FXObject* o, FXSelector s, void* d) {
578 editEnd();
579 return FXTable::onCmdMoveTop(o, s, d);
580}
581
582
583long
584MFXEditableTable::onCmdMoveBottom(FXObject* o, FXSelector s, void* d) {
585 editEnd();
586 return FXTable::onCmdMoveBottom(o, s, d);
587}
588
589
590long
591MFXEditableTable::onCmdMovePageDown(FXObject* o, FXSelector s, void* d) {
592 editEnd();
593 return FXTable::onCmdMovePageDown(o, s, d);
594}
595
596
597long
598MFXEditableTable::onCmdMovePageUp(FXObject* o, FXSelector s, void* d) {
599 editEnd();
600 return FXTable::onCmdMovePageUp(o, s, d);
601}
602
603
604
605long
606MFXEditableTable::onCmdSelectRowIndex(FXObject* o, FXSelector s, void* d) {
607 editEnd();
608 return FXTable::onCmdSelectRowIndex(o, s, d);
609}
610
611
612long
613MFXEditableTable::onCmdSelectColumnIndex(FXObject*, FXSelector, void*) {
614 editEnd();
615 return 1;
616// return FXTable::onUngrabbed(o, s, d);
617}
618
619
620long
621MFXEditableTable::onCmdSelectColumn(FXObject*, FXSelector, void*) {
622 editEnd();
623 return 1;
624// return FXTable::onUngrabbed(o, s, d);
625}
626
627
628long
629MFXEditableTable::onCmdSelectRow(FXObject* o, FXSelector s, void* d) {
630 editEnd();
631 return FXTable::onCmdSelectRow(o, s, d);
632}
633
634
635long
636MFXEditableTable::onCmdSelectCell(FXObject*, FXSelector, void*) {
637// editEnd();
638 return 1;
639// return FXTable::onUngrabbed(o, s, d);
640}
641
642
643long
644MFXEditableTable::onCmdSelectAll(FXObject*, FXSelector, void*) {
645 editEnd();
646 return 1;
647// return FXTable::onUngrabbed(o, s, d);
648}
649
650
651long
652MFXEditableTable::onCmdDeselectAll(FXObject*, FXSelector, void*) {
653 editEnd();
654 return 1;
655// return FXTable::onUngrabbed(o, s, d);
656}
657
658
659long
660MFXEditableTable::onCmdMark(FXObject* o, FXSelector s, void* d) {
661 editEnd();
662 return FXTable::onCmdMark(o, s, d);
663}
664
665
666long
667MFXEditableTable::onCmdExtend(FXObject* o, FXSelector s, void* d) {
668 editEnd();
669 return FXTable::onCmdExtend(o, s, d);
670}
671
672
673void
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