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