SUMO - Simulation of Urban MObility
|
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