bool Buffer::find(const QString& findText, int flags, bool forward, bool wrap, bool *searchWrapped) { if (findText.isEmpty()) { return false; } if (searchWrapped) { *searchWrapped = false; } // Perform the search setSearchFlags(flags); setTargetStart(forward ? currentPos() : currentPos() - 1); setTargetEnd(forward ? length() : 0); QByteArray findArray = findText.toUtf8(); int findPos = searchInTarget(findArray.length(), findArray); // If the search should wrap, perform the search again. if (findPos == -1 && wrap) { setTargetStart(forward ? 0 : length()); setTargetEnd(forward ? currentPos() : currentPos() - 1); findPos = searchInTarget(findArray.length(), findArray); if (searchWrapped) { *searchWrapped = true; } } if (findPos != -1) { setSel(targetStart(), targetEnd()); scrollRange(targetStart(), targetEnd()); } return findPos != -1; }
void Editor::en_msgfilter( NMHDR *nmhdr,LRESULT *result ){ if( locked || fmtBusy ){ *result=1;return; } *result=0; getSel(); MSGFILTER *msg=(MSGFILTER*)nmhdr; if( msg->msg==WM_RBUTTONDOWN ){ CPoint p( LOWORD(msg->lParam),HIWORD(msg->lParam) ); ClientToScreen( &p ); CMenu *menu=blitzIDE.mainFrame->GetMenu(); CMenu *edit=menu->GetSubMenu(1); edit->TrackPopupMenu( TPM_LEFTALIGN,p.x,p.y,blitzIDE.mainFrame ); }else if( msg->msg==WM_CHAR ){ if( msg->wParam=='\t' ){ bool holding_shift=GetAsyncKeyState( VK_SHIFT )&0x80000000; int lineStart=editCtrl.LineFromChar( selStart ); int lineEnd=editCtrl.LineFromChar( selEnd-1 ); if( lineEnd<=lineStart && !holding_shift ) return; editCtrl.HideSelection( true,false ); if( holding_shift ){ char buff[4]; for( int line=lineStart;line<=lineEnd;++line ){ int n=editCtrl.LineIndex( line ); editCtrl.SetSel( n,n+1 );editCtrl.GetSelText( buff ); if( buff[0]=='\t' ) editCtrl.ReplaceSel( "",true ); } }else{ for( int line=lineStart;line<=lineEnd;++line ){ int n=editCtrl.LineIndex( line ); editCtrl.SetSel( n,n );editCtrl.ReplaceSel( "\t",true ); } } selStart=editCtrl.LineIndex( lineStart ); selEnd=editCtrl.LineIndex( lineEnd+1 )-1; setSel();*result=1; editCtrl.HideSelection( false,false ); }else if( msg->wParam==13 ){ if( selStart!=selEnd ) return; int k; int ln=editCtrl.LineFromChar( selStart )-1; int pos=selStart-editCtrl.LineIndex( ln ); string line=getLine( ln );if( pos>line.size() ) return; for( k=0;k<pos && line[k]=='\t';++k ){} line=line.substr( 0,k )+'\0'; editCtrl.ReplaceSel( line.data(),true ); *result=1; } } caret(); }
void Editor::fixFmt( bool fmt ){ if( lineToFmt<0 || fmtBusy ) return; fmtBusy=true; editCtrl.HideSelection( true,false );getSel(); long start=selStart;if( fmt ) selStart=-1; formatLine( lineToFmt ); selStart=start;setSel();editCtrl.HideSelection( false,false ); fmtBusy=false; }
void GLObject::computeSel(float rx, float ry, float rw, float rh){/* MyGL::ObjectMatrix mat, p; //scene.render().getModeViewlMatrix(mat); //scene.render().getProjectionMatrix(p); //mat.mul(p); scene.render().getTransformMatrix( mat ); float x,y,z,w; mat.project( object.x(), object.y(), object.z(), 1, x, y, z, w); x/=w; y/=w; //x = x*0.5+0.5; //y = 1.0- (y*0.5+0.5); screenCoord[0] = x; screenCoord[1] = y; selected = (rx <= x && x<= rx+rw)&&(ry <=y && y<=ry+rh ); */ GLdouble mvMatrix[16], ProjMatrix[16]; { MyGL::Float getM[16]; scene.render().getModeViewlMatrix(getM); for(int i=0; i<16; ++i){ mvMatrix[i] = getM[i]; } scene.render().getProjectionMatrix(getM); for(int i=0; i<16; ++i){ ProjMatrix[i] = getM[i]; } } GLint view[] = {0,0, 1,1}; GLdouble x,y,z; gluProject(object.x(), object.y(), object.z(), mvMatrix, ProjMatrix, view, &x, &y, &z); y = 1.0- y; screenCoord[0] = x; screenCoord[1] = y; setSel( (rx <= x && x<= rw)&&(ry <=y && y<=rh ) ); }
void Editor::en_change(){ if( fmtBusy ) return; fmtBusy=true; editCtrl.HideSelection( true,false ); getSel(); int begin=editCtrl.LineFromChar( selStart ); int end=begin+1; int lineCount=editCtrl.GetLineCount(); int delta=lineCount-fmtLineCount; if( delta>0 ){ begin-=delta; funcList.relocate( begin,delta ); typeList.relocate( begin,delta ); labsList.relocate( begin,delta ); funcList.remove( begin,end ); typeList.remove( begin,end ); labsList.remove( begin,end ); }else if( delta<0 ){ int t=end-delta; funcList.remove( begin,t ); typeList.remove( begin,t ); labsList.remove( begin,t ); funcList.relocate( t,delta ); typeList.relocate( t,delta ); labsList.relocate( t,delta ); }else{ funcList.remove( begin,end ); typeList.remove( begin,end ); labsList.remove( begin,end ); } for( int n=begin;n<end;++n ) formatLine( n ); setSel();editCtrl.HideSelection( false,false ); fmtBusy=false; cursorMoved(); }
void GLObject::computeSel(double x, double y){ setSel( canSel(x,y) ); }
bool AbrowserItem::mouse(int x, int y, int state, int event) { switch(event) { case mouseLDOWN: cursor(cursorHANDSEL); donedown=false; mouseCapture(true); test=true; if(!selected) donedown=setSel(state); return true; case mouseMOVE: if(indrag) { Awindow *w=getWindow(); if(w->NCdragdrop(w->mouseX, w->mouseY, dragdropFILE, dragdropOVER, NULL)) cursor(cursorCROSS); else cursor(cursorNO); } else if(test&&((x<0)||(y<0)||(x>pos.w)||(y>pos.h))) { if(selected) { test=false; donedown=false; father->father->notify(this, nyCOMMAND); indrag=true; } else cursor(cursorHANDSEL); } else { cursor(cursorHANDSEL); } return true; case mouseLUP: if(indrag) { Awindow *w=getWindow(); mouseCapture(false); indrag=false; w->NCdragdrop(w->mouseX, w->mouseY, dragdropFILE, dragdropDROP, dragFiles); free(dragFiles); dragFiles=NULL; } else if(test) { mouseCapture(false); if(!donedown) setSel(state); test=false; } return true; } return false; }