SUMO - Simulation of Urban MObility
MFXEditableTable.cpp
Go to the documentation of this file.
00001 /****************************************************************************/
00007 // missing_desc
00008 /****************************************************************************/
00009 // SUMO, Simulation of Urban MObility; see http://sumo.sourceforge.net/
00010 // Copyright (C) 2001-2012 DLR (http://www.dlr.de/) and contributors
00011 /****************************************************************************/
00012 //
00013 //   This file is part of SUMO.
00014 //   SUMO is free software: you can redistribute it and/or modify
00015 //   it under the terms of the GNU General Public License as published by
00016 //   the Free Software Foundation, either version 3 of the License, or
00017 //   (at your option) any later version.
00018 //
00019 /****************************************************************************/
00020 
00021 
00022 // ===========================================================================
00023 // included modules
00024 // ===========================================================================
00025 #ifdef _MSC_VER
00026 #include <windows_config.h>
00027 #else
00028 #include <config.h>
00029 #endif
00030 
00031 #include <fx.h>
00032 #include <fxkeys.h>
00033 #include "MFXEditableTable.h"
00034 
00035 #ifdef CHECK_MEMORY_LEAKS
00036 #include <foreign/nvwa/debug_new.h>
00037 #endif // CHECK_MEMORY_LEAKS
00038 
00039 FXDEFMAP(MFXEditableTable) MFXEditableTableMap[] = {
00040     FXMAPFUNC(SEL_LEFTBUTTONPRESS, 0, MFXEditableTable::onLeftBtnPress),
00041     FXMAPFUNC(SEL_LEFTBUTTONRELEASE, 0, MFXEditableTable::onLeftBtnRelease),
00042     FXMAPFUNC(SEL_CLICKED, 0, MFXEditableTable::onLeftBtnClicked),
00043     FXMAPFUNC(SEL_RIGHTBUTTONRELEASE, 0, MFXEditableTable::onRightBtnRelease),
00044     FXMAPFUNC(SEL_KEYRELEASE, 0, MFXEditableTable::onKeyRelease),
00045     FXMAPFUNC(SEL_KEYPRESS, MFXEditableTable::ID_EDITOR, MFXEditableTable::onEditKeyPress),
00046     //    FXMAPFUNC(SEL_TIMEOUT,FXTable::ID_TIPTIMER, MFXEditableTable::onTipTimer),
00047     FXMAPFUNC(SEL_FOCUSOUT, MFXEditableTable::ID_EDITOR, MFXEditableTable::onEditFocusOut),
00048     FXMAPFUNC(SEL_COMMAND, MFXEditableTable::ID_EDITEND, MFXEditableTable::onEditEnd),
00049 
00050     FXMAPFUNC(SEL_COMMAND, FXWindow::ID_HSCROLLED, MFXEditableTable::onHScrollerChanged),
00051     FXMAPFUNC(SEL_COMMAND, FXWindow::ID_VSCROLLED, MFXEditableTable::onVScrollerChanged),
00052     FXMAPFUNC(SEL_CHANGED, FXWindow::ID_HSCROLLED, MFXEditableTable::onHScrollerDragged),
00053     FXMAPFUNC(SEL_CHANGED, FXWindow::ID_VSCROLLED, MFXEditableTable::onVScrollerDragged),
00054     /*
00055       FXMAPFUNC(SEL_TIMEOUT,FXWindow::ID_AUTOSCROLL,MFXEditableTable::onAutoScroll),
00056       FXMAPFUNC(SEL_UNGRABBED,0,MFXEditableTable::onUngrabbed),
00057       FXMAPFUNC(SEL_RIGHTBUTTONPRESS,0,MFXEditableTable::onRightBtnPress),
00058       FXMAPFUNC(SEL_KEYPRESS,0,MFXEditableTable::onTabKeyPress),
00059       FXMAPFUNC(SEL_KEYRELEASE,0,MFXEditableTable::onTabKeyRelease),
00060       FXMAPFUNC(SEL_CLIPBOARD_LOST,0,MFXEditableTable::onClipboardLost),
00061       FXMAPFUNC(SEL_CLIPBOARD_GAINED,0,MFXEditableTable::onClipboardGained),
00062       FXMAPFUNC(SEL_CLIPBOARD_REQUEST,0,MFXEditableTable::onClipboardRequest),
00063       FXMAPFUNC(SEL_DOUBLECLICKED,0,MFXEditableTable::onDoubleClicked),
00064       FXMAPFUNC(SEL_TRIPLECLICKED,0,MFXEditableTable::onTripleClicked),
00065       FXMAPFUNC(SEL_COMMAND,0,MFXEditableTable::onCommand),
00066       */
00067     /*
00068       FXMAPFUNC(SEL_FOCUSIN,0,MFXEditableTable::onFocusIn),
00069       FXMAPFUNC(SEL_FOCUSOUT,0,MFXEditableTable::onFocusOut),
00070       FXMAPFUNC(SEL_SELECTION_LOST,0,MFXEditableTable::onSelectionLost),
00071       FXMAPFUNC(SEL_SELECTION_GAINED,0,MFXEditableTable::onSelectionGained),
00072       FXMAPFUNC(SEL_SELECTION_REQUEST,0,MFXEditableTable::onSelectionRequest),
00073     */
00074 
00075     FXMAPFUNC(SEL_UPDATE, FXTable::ID_HORZ_GRID, MFXEditableTable::onUpdHorzGrid),
00076     FXMAPFUNC(SEL_UPDATE, FXTable::ID_VERT_GRID, MFXEditableTable::onUpdVertGrid),
00077     FXMAPFUNC(SEL_COMMAND, FXTable::ID_HORZ_GRID, MFXEditableTable::onCmdHorzGrid),
00078     FXMAPFUNC(SEL_COMMAND, FXTable::ID_VERT_GRID, MFXEditableTable::onCmdVertGrid),
00079     FXMAPFUNC(SEL_COMMAND, FXTable::ID_DELETE_COLUMN, MFXEditableTable::onCmdDeleteColumn),
00080     FXMAPFUNC(SEL_UPDATE, FXTable::ID_DELETE_COLUMN, MFXEditableTable::onUpdDeleteColumn),
00081     FXMAPFUNC(SEL_COMMAND, FXTable::ID_DELETE_ROW, MFXEditableTable::onCmdDeleteRow),
00082     FXMAPFUNC(SEL_UPDATE, FXTable::ID_DELETE_ROW, MFXEditableTable::onUpdDeleteRow),
00083     FXMAPFUNC(SEL_COMMAND, FXTable::ID_INSERT_COLUMN, MFXEditableTable::onCmdInsertColumn),
00084     FXMAPFUNC(SEL_COMMAND, FXTable::ID_INSERT_ROW, MFXEditableTable::onCmdInsertRow),
00085 
00086     FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_LEFT, MFXEditableTable::onCmdMoveLeft),
00087     FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_RIGHT, MFXEditableTable::onCmdMoveRight),
00088     FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_UP, MFXEditableTable::onCmdMoveUp),
00089     FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_DOWN, MFXEditableTable::onCmdMoveDown),
00090     FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_HOME, MFXEditableTable::onCmdMoveHome),
00091     FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_END, MFXEditableTable::onCmdMoveEnd),
00092     FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_TOP, MFXEditableTable::onCmdMoveTop),
00093     FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_BOTTOM, MFXEditableTable::onCmdMoveBottom),
00094     FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_PAGEDOWN, MFXEditableTable::onCmdMovePageDown),
00095     FXMAPFUNC(SEL_COMMAND, FXTable::ID_MOVE_PAGEUP, MFXEditableTable::onCmdMovePageUp),
00096 
00097     FXMAPFUNC(SEL_COMMAND, FXTable::ID_SELECT_ROW_INDEX, MFXEditableTable::onCmdSelectRowIndex),
00098     FXMAPFUNC(SEL_COMMAND, FXTable::ID_SELECT_COLUMN_INDEX, MFXEditableTable::onCmdSelectColumnIndex),
00099     FXMAPFUNC(SEL_COMMAND, FXTable::ID_SELECT_COLUMN, MFXEditableTable::onCmdSelectColumn),
00100     FXMAPFUNC(SEL_COMMAND, FXTable::ID_SELECT_ROW, MFXEditableTable::onCmdSelectRow),
00101     //  FXMAPFUNC(SEL_COMMAND,FXTable::ID_SELECT_CELL,MFXEditableTable::onCmdSelectCell),
00102     FXMAPFUNC(SEL_COMMAND, FXTable::ID_SELECT_ALL, MFXEditableTable::onCmdSelectAll),
00103     FXMAPFUNC(SEL_COMMAND, FXTable::ID_DESELECT_ALL, MFXEditableTable::onCmdDeselectAll),
00104     FXMAPFUNC(SEL_COMMAND, FXTable::ID_MARK, MFXEditableTable::onCmdMark),
00105     FXMAPFUNC(SEL_COMMAND, FXTable::ID_EXTEND, MFXEditableTable::onCmdExtend),
00106 };
00107 
00108 
00109 // Object implementation
00110 FXIMPLEMENT(MFXEditableTable, FXTable, MFXEditableTableMap, ARRAYNUMBER(MFXEditableTableMap))
00111 
00112 
00113 MFXEditableTable::MFXEditableTable(FXComposite* p, FXObject* tgt,
00114                                    FXSelector sel, FXuint opts,
00115                                    FXint x, FXint y, FXint w, FXint h,
00116                                    FXint pl, FXint pr, FXint pt, FXint pb)
00117     : FXTable(p, tgt, sel, opts, x, y, w, h, pl, pr, pt, pb),
00118       myEditedItem(0) {
00119     myEditor =
00120         new FXTextField((FXComposite*)getParent(), 1, this,
00121                         ID_EDITOR, FRAME_NORMAL | LAYOUT_EXPLICIT);
00122     myEditor->hide();
00123     flags |= FLAG_ENABLED | FLAG_DROPTARGET;
00124 }
00125 
00126 
00127 MFXEditableTable::~MFXEditableTable() {}
00128 
00129 
00130 long
00131 MFXEditableTable::onLeftBtnPress(FXObject* sender, FXSelector sel, void* ptr) {
00132     editEnd();
00133     FXTable::onLeftBtnPress(sender, sel, ptr);
00134     return 1;
00135 }
00136 
00137 
00138 long
00139 MFXEditableTable::onLeftBtnClicked(FXObject* , FXSelector , void* ptr) {
00140     FXTablePos* e = (FXTablePos*)ptr;
00141     int r = e->row;
00142     int c = e->col;
00143     if (c == -1 || r == -1) {
00144         return 1;
00145     }
00146     killSelection(false);
00147     myEditedItem = getItem(r, c);
00148     myEditedCol = c;
00149     myEditedRow = r;
00150     if (c >= 0 && r >= 0) {
00151         editItem(myEditedItem, 0);
00152     } else {
00153         editEnd();
00154     }
00155     return 1;
00156 }
00157 
00158 
00159 long
00160 MFXEditableTable::onLeftBtnRelease(FXObject* sender, FXSelector sel, void* ptr) {
00161     FXTable::onLeftBtnRelease(sender, sel, ptr);
00162     /*    FXEvent* e= (FXEvent*)ptr;
00163         if(flgEditTimer) {
00164             flgEditTimer = FALSE;
00165             if(!e->moved) getApp()->addTimeout(this,ID_EDITTIMER,600);
00166         }*/
00167     return 1;
00168 }
00169 
00170 
00171 void
00172 MFXEditableTable::editItem(FXTableItem* item, FXint how) {
00173     if (item == 0) {
00174         editEnd();
00175         return;
00176     }
00177     if (myWriteProtectedCols.find(myEditedCol) != myWriteProtectedCols.end()) {
00178         editEnd();
00179         return;
00180     }
00181     FXTableItem* it = item;
00182     myPreviousText = item->getText();
00183     FXint x = getColumnX(myEditedCol) + getRowHeader()->getWidth() + xpos;
00184     FXint y = getRowY(myEditedRow) + getColumnHeader()->getHeight() + ypos;
00185     FXIcon* icon = item->getIcon();
00186     if (icon) {
00187         x += icon->getWidth() + 4;
00188     }
00189     FXint vw = getViewportWidth();
00190     if (vertical->shown()) {
00191         vw -= vertical->getWidth();
00192     }
00193     if (vw > getColumnWidth(myEditedCol)) {
00194         vw = getColumnWidth(myEditedCol) + x;
00195     }
00196     myEditor->setText(it->getText());
00197     myEditor->move(x, y);
00198     myEditor->resize(vw - x + 1, getRowHeight(myEditedRow) + 1);
00199     myEditor->show();
00200     myEditor->raise();
00201     myEditor->setFocus();
00202     if (how == 'I') {
00203         myEditor->killSelection();
00204         myEditor->setCursorPos(0);
00205     } else if (how == 'A') {
00206         myEditor->killSelection();
00207         myEditor->setCursorPos(myEditor->getText().length());
00208     } else {
00209         myEditor->selectAll();
00210     }
00211     myEditedItem = it;
00212 }
00213 
00214 
00215 void
00216 MFXEditableTable::editEnd() {
00217     if (!myEditedItem) {
00218         return;
00219     }
00220     FXTableItem* item = myEditedItem;
00221     myEditedItem = NULL;
00222     myEditor->hide();
00223     setFocus();
00224     FXString text = myEditor->getText();
00225     myEditedItem = 0;
00226     if (item->getText() == text) {
00227         return;
00228     }
00229     if (handle(item, FXSEL(SEL_COMMAND, ID_EDITEND), &text)) {
00230         item->setText(text);
00231         handle(this, FXSEL(SEL_CHANGED, 0), item);
00232     }
00233     killSelection(true);
00234     if (target) {
00235         MFXEditedTableItem edited;
00236         edited.item = item;
00237         edited.row = myEditedRow;
00238         edited.col = myEditedCol;
00239         if (!target->handle(this, FXSEL(SEL_CHANGED, ID_TEXT_CHANGED), (void*) &edited)) {
00240             item->setText(myPreviousText);
00241         }
00242     }
00243 }
00244 
00245 
00246 long
00247 MFXEditableTable::onEditEnd(FXObject*, FXSelector , void*) {
00248     delete myEditedItem;
00249     myEditedItem = 0;
00250     return 1;
00251 }
00252 
00253 
00254 void
00255 MFXEditableTable::editCancel() {
00256     if (!myEditedItem) {
00257         return;
00258     }
00259     myEditedItem = 0;
00260     myEditor->hide();
00261     setFocus();
00262     killSelection(true);
00263 }
00264 
00265 
00266 long
00267 MFXEditableTable::onEditKeyPress(FXObject*, FXSelector, void* ptr) {
00268     FXEvent* e = (FXEvent*)ptr;
00269     switch (e->code) {
00270         case KEY_Escape:
00271             editCancel();
00272             return 1;
00273         case KEY_Return:
00274         case KEY_KP_Enter:
00275             editEnd();
00276 //        flgEnter = TRUE;
00277 //        if(e->state & SHIFTMASK) handle(this, FXSEL(SEL_COMMAND,ID_NEXTLINE), NULL);
00278             return 1;
00279         case KEY_Up:
00280         case KEY_Down:
00281 //        editEnd();
00282             //      handle(this, FXSEL(SEL_KEYPRESS,0), ptr);
00283             return 1;
00284     }
00285     return 0;
00286 }
00287 
00288 
00289 long
00290 MFXEditableTable::onKeyRelease(FXObject* sender, FXSelector sel, void* ptr) {
00291     FXint key = ((FXEvent*)ptr)->code;
00292     if (/*flgEnter &&*/ key == KEY_Return || key == KEY_KP_Enter) {
00293 //        flgEnter = FALSE;
00294         return 1;
00295     }
00296 //    flgEnter = FALSE;
00297     return FXTable::onKeyRelease(sender, sel, ptr);
00298 }
00299 
00300 
00301 long
00302 MFXEditableTable::onEditFocusOut(FXObject*, FXSelector , void*) {
00303     editEnd();
00304     return 0;
00305 }
00306 
00307 /*
00308 long
00309 MFXEditableTable::onTipTimer(FXObject* sender, FXSelector sel, void* ptr)
00310 {
00311     if(myEditedItem) return 0;
00312     return FXTable::onTipTimer(sender, sel, ptr);
00313 }
00314 */
00315 
00316 long
00317 MFXEditableTable::onRightBtnRelease(FXObject* sender, FXSelector sel, void* ptr) {
00318     /*  if(dragItem) {
00319         flags &= ~(FLAG_PRESSED | FLAG_TRYDRAG | FLAG_DODRAG);
00320         endDrag(FALSE);
00321         setDragCursor(getDefaultCursor());
00322         dragItem = NULL;
00323         }*/
00324     return FXTable::onRightBtnRelease(sender, sel, ptr);
00325 }
00326 
00327 
00328 
00329 long
00330 MFXEditableTable::onHScrollerChanged(FXObject* o, FXSelector s, void* d) {
00331     editEnd();
00332     return FXScrollArea::onHScrollerChanged(o, s, d);
00333 }
00334 
00335 
00336 long
00337 MFXEditableTable::onVScrollerChanged(FXObject* o, FXSelector s, void* d) {
00338     editEnd();
00339     return FXScrollArea::onVScrollerChanged(o, s, d);
00340 }
00341 
00342 
00343 long
00344 MFXEditableTable::onHScrollerDragged(FXObject* o, FXSelector s, void* d) {
00345     editEnd();
00346     return FXScrollArea::onHScrollerDragged(o, s, d);
00347 }
00348 
00349 
00350 long
00351 MFXEditableTable::onVScrollerDragged(FXObject* o, FXSelector s, void* d) {
00352     editEnd();
00353     return FXScrollArea::onVScrollerDragged(o, s, d);
00354 }
00355 
00356 
00357 long
00358 MFXEditableTable::onAutoScroll(FXObject* o, FXSelector s, void* d) {
00359     editEnd();
00360     return FXTable::onAutoScroll(o, s, d);
00361 }
00362 
00363 
00364 long
00365 MFXEditableTable::onUngrabbed(FXObject* o, FXSelector s, void* d) {
00366     editEnd();
00367     return FXTable::onUngrabbed(o, s, d);
00368 }
00369 
00370 
00371 long
00372 MFXEditableTable::onRightBtnPress(FXObject* o, FXSelector s, void* d) {
00373     editEnd();
00374     return FXTable::onRightBtnPress(o, s, d);
00375 }
00376 
00377 
00378 long
00379 MFXEditableTable::onTabKeyPress(FXObject* o, FXSelector s, void* d) {
00380     editEnd();
00381     return FXTable::onKeyPress(o, s, d);
00382 }
00383 
00384 
00385 long
00386 MFXEditableTable::onTabKeyRelease(FXObject* o, FXSelector s, void* d) {
00387     editEnd();
00388     return FXTable::onKeyRelease(o, s, d);
00389 }
00390 
00391 
00392 long
00393 MFXEditableTable::onFocusIn(FXObject* o, FXSelector s, void* d) {
00394 //    editEnd();
00395     return FXTable::onFocusIn(o, s, d);
00396 }
00397 
00398 
00399 long
00400 MFXEditableTable::onFocusOut(FXObject* o, FXSelector s, void* d) {
00401 //    editEnd();
00402     return FXTable::onFocusOut(o, s, d);
00403 }
00404 
00405 
00406 long
00407 MFXEditableTable::onSelectionLost(FXObject* o, FXSelector s, void* d) {
00408 //    editEnd();
00409     return FXTable::onSelectionLost(o, s, d);
00410 }
00411 
00412 
00413 long
00414 MFXEditableTable::onSelectionGained(FXObject* o, FXSelector s, void* d) {
00415 //    editEnd();
00416     return FXTable::onSelectionGained(o, s, d);
00417 }
00418 
00419 
00420 long
00421 MFXEditableTable::onSelectionRequest(FXObject* o, FXSelector s, void* d) {
00422 //    editEnd();
00423     return FXTable::onSelectionRequest(o, s, d);
00424 }
00425 
00426 
00427 long
00428 MFXEditableTable::onClipboardLost(FXObject* o, FXSelector s, void* d) {
00429     editEnd();
00430     return FXTable::onClipboardLost(o, s, d);
00431 }
00432 
00433 
00434 long
00435 MFXEditableTable::onClipboardGained(FXObject* o, FXSelector s, void* d) {
00436     editEnd();
00437     return FXTable::onClipboardGained(o, s, d);
00438 }
00439 
00440 
00441 long
00442 MFXEditableTable::onClipboardRequest(FXObject* o, FXSelector s, void* d) {
00443     editEnd();
00444     return FXTable::onClipboardRequest(o, s, d);
00445 }
00446 
00447 
00448 long
00449 MFXEditableTable::onDoubleClicked(FXObject*, FXSelector , void*) {
00450     editEnd();
00451     return 1;
00452 //    return FXTable::onUngrabbed(o, s, d);
00453 }
00454 
00455 
00456 long
00457 MFXEditableTable::onTripleClicked(FXObject*, FXSelector , void*) {
00458     editEnd();
00459     return 1;
00460 //    return FXTable::onUngrabbed(o, s, d);
00461 }
00462 
00463 
00464 long
00465 MFXEditableTable::onCommand(FXObject* o, FXSelector s, void* d) {
00466     editEnd();
00467     return FXTable::onCommand(o, s, d);
00468 }
00469 
00470 
00471 long
00472 MFXEditableTable::onUpdHorzGrid(FXObject* o, FXSelector s, void* d) {
00473     editEnd();
00474     return FXTable::onUpdHorzGrid(o, s, d);
00475 }
00476 
00477 
00478 long
00479 MFXEditableTable::onUpdVertGrid(FXObject* o, FXSelector s, void* d) {
00480     editEnd();
00481     return FXTable::onUpdVertGrid(o, s, d);
00482 }
00483 
00484 
00485 long
00486 MFXEditableTable::onCmdHorzGrid(FXObject* o, FXSelector s, void* d) {
00487     editEnd();
00488     return FXTable::onCmdHorzGrid(o, s, d);
00489 }
00490 
00491 
00492 long
00493 MFXEditableTable::onCmdVertGrid(FXObject* o, FXSelector s, void* d) {
00494     editEnd();
00495     return FXTable::onCmdVertGrid(o, s, d);
00496 }
00497 
00498 
00499 long
00500 MFXEditableTable::onCmdDeleteColumn(FXObject*, FXSelector , void*) {
00501     editEnd();
00502     return 1;
00503 //    return FXTable::onUngrabbed(o, s, d);
00504 }
00505 
00506 
00507 long
00508 MFXEditableTable::onUpdDeleteColumn(FXObject*, FXSelector , void*) {
00509     editEnd();
00510     return 1;
00511 //    return FXTable::onUngrabbed(o, s, d);
00512 }
00513 
00514 
00515 long
00516 MFXEditableTable::onCmdDeleteRow(FXObject*, FXSelector , void*) {
00517     editEnd();
00518     return 1;
00519 //    return FXTable::onUngrabbed(o, s, d);
00520 }
00521 
00522 
00523 long
00524 MFXEditableTable::onUpdDeleteRow(FXObject*, FXSelector , void*) {
00525     editEnd();
00526     return 1;
00527 //    return FXTable::onUngrabbed(o, s, d);
00528 }
00529 
00530 
00531 long
00532 MFXEditableTable::onCmdInsertColumn(FXObject*, FXSelector , void*) {
00533     editEnd();
00534     return 1;
00535 //    return FXTable::onUngrabbed(o, s, d);
00536 }
00537 
00538 
00539 long
00540 MFXEditableTable::onCmdInsertRow(FXObject*, FXSelector , void*) {
00541     editEnd();
00542     return 1;
00543 //    return FXTable::onUngrabbed(o, s, d);
00544 }
00545 
00546 
00547 
00548 long
00549 MFXEditableTable::onCmdMoveLeft(FXObject* o, FXSelector s, void* d) {
00550     editEnd();
00551     return FXTable::onCmdMoveLeft(o, s, d);
00552 }
00553 
00554 
00555 long
00556 MFXEditableTable::onCmdMoveRight(FXObject* o, FXSelector s, void* d) {
00557     editEnd();
00558     return FXTable::onCmdMoveRight(o, s, d);
00559 }
00560 
00561 
00562 long
00563 MFXEditableTable::onCmdMoveUp(FXObject* o, FXSelector s, void* d) {
00564     editEnd();
00565     return FXTable::onCmdMoveUp(o, s, d);
00566 }
00567 
00568 
00569 long
00570 MFXEditableTable::onCmdMoveDown(FXObject* o, FXSelector s, void* d) {
00571     editEnd();
00572     return FXTable::onCmdMoveDown(o, s, d);
00573 }
00574 
00575 
00576 long
00577 MFXEditableTable::onCmdMoveHome(FXObject* o, FXSelector s, void* d) {
00578     editEnd();
00579     return FXTable::onCmdMoveHome(o, s, d);
00580 }
00581 
00582 
00583 long
00584 MFXEditableTable::onCmdMoveEnd(FXObject* o, FXSelector s, void* d) {
00585     editEnd();
00586     return FXTable::onCmdMoveEnd(o, s, d);
00587 }
00588 
00589 
00590 long
00591 MFXEditableTable::onCmdMoveTop(FXObject* o, FXSelector s, void* d) {
00592     editEnd();
00593     return FXTable::onCmdMoveTop(o, s, d);
00594 }
00595 
00596 
00597 long
00598 MFXEditableTable::onCmdMoveBottom(FXObject* o, FXSelector s, void* d) {
00599     editEnd();
00600     return FXTable::onCmdMoveBottom(o, s, d);
00601 }
00602 
00603 
00604 long
00605 MFXEditableTable::onCmdMovePageDown(FXObject* o, FXSelector s, void* d) {
00606     editEnd();
00607     return FXTable::onCmdMovePageDown(o, s, d);
00608 }
00609 
00610 
00611 long
00612 MFXEditableTable::onCmdMovePageUp(FXObject* o, FXSelector s, void* d) {
00613     editEnd();
00614     return FXTable::onCmdMovePageUp(o, s, d);
00615 }
00616 
00617 
00618 
00619 long
00620 MFXEditableTable::onCmdSelectRowIndex(FXObject* o, FXSelector s, void* d) {
00621     editEnd();
00622     return FXTable::onCmdSelectRowIndex(o, s, d);
00623 }
00624 
00625 
00626 long
00627 MFXEditableTable::onCmdSelectColumnIndex(FXObject*, FXSelector , void*) {
00628     editEnd();
00629     return 1;
00630 //    return FXTable::onUngrabbed(o, s, d);
00631 }
00632 
00633 
00634 long
00635 MFXEditableTable::onCmdSelectColumn(FXObject*, FXSelector , void*) {
00636     editEnd();
00637     return 1;
00638 //    return FXTable::onUngrabbed(o, s, d);
00639 }
00640 
00641 
00642 long
00643 MFXEditableTable::onCmdSelectRow(FXObject* o, FXSelector s, void* d) {
00644     editEnd();
00645     return FXTable::onCmdSelectRow(o, s, d);
00646 }
00647 
00648 
00649 long
00650 MFXEditableTable::onCmdSelectCell(FXObject*, FXSelector , void*) {
00651 //    editEnd();
00652     return 1;
00653 //    return FXTable::onUngrabbed(o, s, d);
00654 }
00655 
00656 
00657 long
00658 MFXEditableTable::onCmdSelectAll(FXObject*, FXSelector , void*) {
00659     editEnd();
00660     return 1;
00661 //    return FXTable::onUngrabbed(o, s, d);
00662 }
00663 
00664 
00665 long
00666 MFXEditableTable::onCmdDeselectAll(FXObject*, FXSelector , void*) {
00667     editEnd();
00668     return 1;
00669 //    return FXTable::onUngrabbed(o, s, d);
00670 }
00671 
00672 
00673 long
00674 MFXEditableTable::onCmdMark(FXObject* o, FXSelector s, void* d) {
00675     editEnd();
00676     return FXTable::onCmdMark(o, s, d);
00677 }
00678 
00679 
00680 long
00681 MFXEditableTable::onCmdExtend(FXObject* o, FXSelector s, void* d) {
00682     editEnd();
00683     return FXTable::onCmdExtend(o, s, d);
00684 }
00685 
00686 
00687 void
00688 MFXEditableTable::writeProtectCol(int col, bool val) {
00689     if (val) {
00690         myWriteProtectedCols.insert(col);
00691     } else {
00692         std::set<int>::iterator i = myWriteProtectedCols.find(col);
00693         if (i != myWriteProtectedCols.end()) {
00694             myWriteProtectedCols.erase(i);
00695         }
00696     }
00697 }
00698 
00699 
00700 
00701 /****************************************************************************/
00702 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines