From: Darius S. <dst...@us...> - 2001-07-24 11:34:52
|
Update of /cvsroot/kuml/kuml/kuml_gui/src/ige/common/editors In directory usw-pr-cvs1:/tmp/cvs-serv15670/common/editors Modified Files: AbstractEditor.cpp AbstractEditor.h Editor.h SelectionLayer.cpp SelectionLayer.h StandardManipulationLayer.cpp StandardManipulationLayer.h StandardSelectionLayer.cpp Log Message: Added more core implementation. Editor now supports simple line Index: AbstractEditor.cpp =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/editors/AbstractEditor.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** AbstractEditor.cpp 2001/07/22 23:21:38 1.4 --- AbstractEditor.cpp 2001/07/24 11:34:49 1.5 *************** *** 33,50 **** void AbstractEditor::select(SelectableView *view){ ! QRect damagedArea; if(view->isSelected()) { view->select(); ! damagedArea = damagedArea.unite(view->bounds()); } ! getViewer()->refresh(damagedArea); } void AbstractEditor::unselect(SelectableView *view) { ! QRect damagedArea; if(view->isSelected()) { view->unselect(); ! damagedArea = damagedArea.unite(view->bounds()); } ! getViewer()->refresh(damagedArea); } void AbstractEditor::unselectAll() { --- 33,50 ---- void AbstractEditor::select(SelectableView *view){ ! // QRect damagedArea; if(view->isSelected()) { view->select(); ! // damagedArea = damagedArea.unite(view->bounds()); } ! // getViewer()->refresh(damagedArea); } void AbstractEditor::unselect(SelectableView *view) { ! // QRect damagedArea; if(view->isSelected()) { view->unselect(); ! // damagedArea = damagedArea.unite(view->bounds()); } ! // getViewer()->refresh(damagedArea); } void AbstractEditor::unselectAll() { *************** *** 54,68 **** QRect damagedArea; ! while ( iter != iterEnd ) { SelectableView *view =(SelectableView*) *iter; if(view->isSelected()) { - view->unselect(); damagedArea = damagedArea.unite(view->bounds()); } ++iter; } ! getManipulationLayer()->removeAllManipulator(); ! getSelectionLayer()->removeAllHandles(); getViewer()->refresh(damagedArea); --- 54,69 ---- QRect damagedArea; ! while ( iter != iterEnd ) { SelectableView *view =(SelectableView*) *iter; if(view->isSelected()) { damagedArea = damagedArea.unite(view->bounds()); + damagedArea = damagedArea.unite(view->getManipulator()->bounds()); + view->unselect(false); } ++iter; } ! // getManipulationLayer()->removeAllManipulator(); ! // getSelectionLayer()->removeAllHandles(); getViewer()->refresh(damagedArea); *************** *** 92,99 **** --- 93,121 ---- } + void AbstractEditor::removeManipulator(ViewManipulator *m) { + StandardManipulationLayer *ml = (StandardManipulationLayer*)getManipulationLayer(); + vector<ViewManipulator*>::iterator iter = ml->getManipulatorIterator(); + SelectableView *manipulatedView = (SelectableView *)m->getTarget(); + + while (iter != ml->getManipulatorIteratorEnd()) { + if(*iter = m) { + ml->removeManipulator(m); + manipulatedView->setManipulator(0); + + // The deletion of the handles should be done in the destructor of the selector object + // m->deleteAllHandles(); + return; + } + ++iter; + } + } ViewManipulator* AbstractEditor::addManipulator(SelectableView *view){ SelectionLayer *sl = getSelectionLayer(); ViewManipulator *m = view->createManipulator(); ManipulationLayer *ml = getManipulationLayer(); + + // Its valid to not provide a manipulator + if(m == 0) + return 0; CHECK_PTR(m); Index: AbstractEditor.h =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/editors/AbstractEditor.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** AbstractEditor.h 2001/07/22 23:21:38 1.2 --- AbstractEditor.h 2001/07/24 11:34:49 1.3 *************** *** 67,70 **** --- 67,71 ---- virtual ViewManipulator* addManipulator(SelectableView *view); + virtual void removeManipulator(ViewManipulator *m); /** Index: Editor.h =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/editors/Editor.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** Editor.h 2001/07/22 23:21:38 1.2 --- Editor.h 2001/07/24 11:34:49 1.3 *************** *** 64,67 **** --- 64,68 ---- virtual ViewManipulator* addManipulator(SelectableView *view) = 0; + virtual void removeManipulator(ViewManipulator *m) = 0; virtual ManipulationLayer *getManipulationLayer() = 0; Index: SelectionLayer.cpp =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/editors/SelectionLayer.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -r1.2 -r1.3 *** SelectionLayer.cpp 2001/07/20 15:57:29 1.2 --- SelectionLayer.cpp 2001/07/24 11:34:49 1.3 *************** *** 19,22 **** --- 19,25 ---- #include "SelectionLayer.h" #include "LayerVisitor.h" + #include "ige/common/editors/Viewer.h" + #include "ige/common/views/SelectableView.h" + #include "ige/common/editors/DataLayer.h" bool SelectionLayer::isAbove (Layer *other) { *************** *** 30,33 **** } SelectionLayer::SelectionLayer(Viewer* v) : AbstractLayer(v) { ! qDebug("SelectionLayer created"); } --- 33,49 ---- } SelectionLayer::SelectionLayer(Viewer* v) : AbstractLayer(v) { ! qDebug("SelectionLayer created"); ! } ! void SelectionLayer::selectViewsInsideRect(const QRect& rect) { ! DataLayer *dl = getViewer()->getDataLayer(); ! vector<View*>::iterator iter = dl->getDataIterator(); ! SelectableView *view = 0; ! ! while (iter != dl->getDataIteratorEnd()) { ! view = (SelectableView*)*iter; ! if(rect.contains(view->bounds())) { ! view->select(); ! } ! ++iter; ! } } Index: SelectionLayer.h =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/editors/SelectionLayer.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** SelectionLayer.h 2001/07/22 23:21:38 1.3 --- SelectionLayer.h 2001/07/24 11:34:49 1.4 *************** *** 47,52 **** virtual void removeAllHandles() = 0; ! virtual bool isAbove(Layer *other); }; --- 47,53 ---- virtual void removeAllHandles() = 0; ! virtual void selectViewsInsideRect(const QRect& rect); + virtual bool isAbove(Layer *other); }; Index: StandardManipulationLayer.cpp =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/editors/StandardManipulationLayer.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** StandardManipulationLayer.cpp 2001/07/22 23:21:38 1.3 --- StandardManipulationLayer.cpp 2001/07/24 11:34:49 1.4 *************** *** 27,32 **** while ( iter != manipulators.end()) { ! if(*iter == m) manipulators.erase(iter); ++iter; } --- 27,34 ---- while ( iter != manipulators.end()) { ! if(*iter == m) { manipulators.erase(iter); + return; + } ++iter; } *************** *** 63,65 **** --- 65,70 ---- ManipulatorVectorIter StandardManipulationLayer::getManipulatorIterator() { return manipulators.begin(); + } + ManipulatorVectorIter StandardManipulationLayer::getManipulatorIteratorEnd() { + return manipulators.end(); } Index: StandardManipulationLayer.h =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/editors/StandardManipulationLayer.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** StandardManipulationLayer.h 2001/07/22 23:21:38 1.3 --- StandardManipulationLayer.h 2001/07/24 11:34:49 1.4 *************** *** 31,34 **** --- 31,35 ---- ManipulatorVectorIter getManipulatorIterator(); + ManipulatorVectorIter getManipulatorIteratorEnd(); virtual void paintContents(QPainter * p); Index: StandardSelectionLayer.cpp =================================================================== RCS file: /cvsroot/kuml/kuml/kuml_gui/src/ige/common/editors/StandardSelectionLayer.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** StandardSelectionLayer.cpp 2001/07/22 23:21:38 1.3 --- StandardSelectionLayer.cpp 2001/07/24 11:34:49 1.4 *************** *** 21,24 **** --- 21,25 ---- #include "StandardSelectionLayer.h" #include "ige/common/views/SelectionHandle.h" + #include "ige/common/editors/Viewer.h" void StandardSelectionLayer::addHandle(SelectionHandle *h) { *************** *** 29,34 **** while ( iter != handles.end()) { ! if(*iter == h) handles.erase(iter); ++iter; } --- 30,37 ---- while ( iter != handles.end()) { ! if(*iter == h) { handles.erase(iter); + return; + } ++iter; } *************** *** 59,76 **** } } - - /* if(multiSelection) - p->drawRect(startPoint.x(), startPoint.y(), endPoint.x(), endPoint.y()); - else { - vector<SelectionHandle*>::iterator iter = handles.begin(); ! while ( iter != handles.end()) { ! (*iter)->paint(p); ! ++iter; ! } ! }*/ } void StandardSelectionLayer::endMultiSelection(){ multiSelection = false; } bool StandardSelectionLayer::isMultiSelection(){ --- 62,83 ---- } } ! if(multiSelection) { ! /* QRect rect(startPoint, endPoint); ! rect = rect.normalize(); ! p->drawWinFocusRect(rect);*/ ! p->drawWinFocusRect(QRect(startPoint, endPoint)); ! } } void StandardSelectionLayer::endMultiSelection(){ multiSelection = false; + QRect damagedArea(startPoint, endPoint); + damagedArea = damagedArea.normalize(); + + getViewer()->refresh(damagedArea); + + QRect normRect(startPoint, endPoint); + normRect = normRect.normalize(); + selectViewsInsideRect(normRect); } bool StandardSelectionLayer::isMultiSelection(){ *************** *** 87,92 **** --- 94,107 ---- } void StandardSelectionLayer::continueMultiSelection(int x, int y){ + QRect damagedArea(startPoint, endPoint); + damagedArea = damagedArea.normalize(); + endPoint.setX(x); endPoint.setY(y); + + damagedArea = damagedArea.unite(QRect(startPoint, endPoint)); + + // getViewer()->refreshAll(); + getViewer()->refresh(damagedArea); } void StandardSelectionLayer::startMultiSelection(int x, int y){ |