void Outline::selectRoots() //------------------------- { OutlineRootSelect sel( this, _sentinel ); if( sel.process() ) { scrollToSelected(); resetCache(); reset(); } }
bool WHotSpotList::mouseMove( int x, int y, WMouseKeyFlags ) //--------------------------------------------------------- { if( _leftDown ) { int row = getRow( WPoint( x, y ) ); int oldSel = _selected; if( row < 0 ) row = 0; if( row > getRows() - 1 ) { row = getRows() - 1; } row += _topIndex; if( _hs != NULL && _hotPressIdx >= 0 ) { WPoint hotSize; _hs->hotSpotSize( getHotSpot( _hotPressIdx, FALSE ), hotSize ); int hotOffset = getHotOffset( _hotPressIdx ); if( row == _hotPressIdx && x >= hotOffset && x <= hotOffset + hotSize.x() ) { if( !_inHotZone ) { _inHotZone = TRUE; invalidateRow( _hotPressIdx - _topIndex ); } } else { if( _inHotZone ) { _inHotZone = FALSE; invalidateRow( _hotPressIdx - _topIndex ); } } } else { if( row >= count() ) { row = count() - 1; } if( _selected != row ) { _selected = row; invalidateRow( oldSel - _topIndex ); invalidateRow( _selected - _topIndex ); scrollToSelected(); } } return TRUE; } else { return FALSE; } }
void Outline::findNext() //---------------------- { BusyNotice busy( "Searching..." ); OutlineElement * elm; int i; elm = _findStack->removeLast(); while( elm != NULL ) { _findStack->append( elm ); if( elm->_child ) { elm = elm->_child; } else { elm = _findStack->removeLast(); // remove self from stack -- done while( elm->_lastSib ) { // remove finished parents elm = _findStack->removeLast(); } elm = elm->_sibling; } if( elm && _findFilter->matches( elm->symbol() ) ) { _findStack->append( elm ); break; } } if( !elm ) { errMessage( "Not Found" ); // FIXME -- not an error, don't use errMessage _findStack->clear(); menuManager()->enableMenu( MIMenuID(MMLocate,LMFindNext), false ); } else { // expand all the parent nodes of this one (they are stored // in the find stack), but don't expand this node itself for( i = _findStack->entries() - 1; i > 0; i -= 1 ) { (*_findStack)[ i - 1 ]->expand( false ); } for( i = 0; i < count(); i += 1 ) { if( elm == element( i ) ) { select( i ); } } resetCache(); reset(); scrollToSelected(); menuManager()->enableMenu( MIMenuID(MMLocate,LMFindNext), true ); } }
void GlobalViewList::menuSelected( const MIMenuID & id ) //------------------------------------------------------ { switch( id.mainID() ) { case MMDetail: if( selected() >= 0 ) { Symbol * sym = getSymbol( selected() ); switch( id.subID() ) { case DMDetail: popDetail( sym ); break; case DMDefinition: browseTop->showSource( sym ); break; case DMReferences: viewManager()->showDetailView( sym, DetailView::ViewSourceRefs ); break; case DMUsers: viewManager()->showDetailView( sym, DetailView::ViewSymbolRefs ); break; } } break; case MMLocate: switch( id.subID() ) { case LMFind: findFirst(); break; case LMFindNext: findNext(); break; case LMFindSelected: scrollToSelected(); break; } break; } }
bool WHotSpotList::keyDown( WKeyCode key, WKeyState state ) //--------------------------------------------------------- { int nRows = getRows(); int oldSel = _selected; if( state == WKeyStateNone ) { switch( key ) { case WKeyPageup: _selected -= nRows - 1; if( _selected < 0 ) _selected = 0; if( oldSel != _selected ) { invalidateRow( oldSel - _topIndex ); invalidateRow( _selected - _topIndex ); } scrollToSelected(); changed(); return TRUE; case WKeyPagedown: _selected += nRows - 1; if( _selected >= count() ) { _selected = count() - 1; } if( oldSel != _selected ) { invalidateRow( oldSel - _topIndex ); invalidateRow( _selected - _topIndex ); } scrollToSelected(); changed(); return TRUE; case WKeyUp: _selected -= 1; if( _selected < 0 ) _selected = 0; if( oldSel != _selected ) { invalidateRow( oldSel - _topIndex ); invalidateRow( _selected - _topIndex ); } scrollToSelected(); changed(); return TRUE; case WKeyDown: _selected += 1; if( _selected >= count() ) { _selected = count() - 1; } if( oldSel != _selected ) { invalidateRow( oldSel - _topIndex ); invalidateRow( _selected - _topIndex ); } scrollToSelected(); changed(); return TRUE; case WKeyEnter: if( count() != 0 && _dblClickClient && _dblClick ) { (_dblClickClient->*_dblClick)( this ); invalidateRow( _selected - _topIndex ); } return TRUE; case WKeySpace: if( _hotPressClient && _hotPress ) { (_hotPressClient->*_hotPress)( this ); return TRUE; } break; case WKeyLeft: { int col; col = getScrollTextPos( WScrollBarHorizontal ); if( col > 0 ) { setScrollTextPos( WScrollBarHorizontal, col - 1 ); } } break; case WKeyRight: { int col; col = getScrollTextPos( WScrollBarHorizontal ); setScrollTextPos( WScrollBarHorizontal, col + 1 ); } break; } } return FALSE; }
void Outline::treeViewEvent( TreeViewEvent event ) //------------------------------------------------ { OutlineElement * elm; elm = element( selected() ); switch( event ) { case ShowDetail: if( elm && elm->_symbol ) { popDetail( elm->_symbol ); } break; case ShowDefinition: if( elm && elm->_symbol ) { browseTop->showSource( elm->_symbol ); } break; case ShowReferences: if( elm && elm->_symbol ) { viewManager()->showDetailView( elm->_symbol, DetailView::ViewSourceRefs ); } break; case ShowUsers: if( elm && elm->_symbol ) { viewManager()->showDetailView( elm->_symbol, DetailView::ViewSymbolRefs ); } break; case ScrollToSelected: scrollToSelected(); break; case SelectRoots: selectRoots(); break; case ExpandOne: elm->expand( false ); resetCache(); reset(); // paranoia break; case ExpandBranch: elm->expand( true ); resetCache(); reset(); // paranoia break; case ExpandAll: for( elm = _sentinel->next(); elm != NULL; elm = elm->visibleSib() ) { elm->expand( true ); } resetCache(); reset(); // paranoia break; case CollapseBranch: if( elm->state() == OutlineElement::ESExpanded ) { elm->collapse( false ); resetCache(); reset(); // paranoia } break; case CollapseAll: for( elm = _sentinel->next(); elm != NULL; elm = elm->visibleSib() ) { elm->collapse( true ); } resetCache(); reset(); // paranoia break; default: NODEFAULT; } }