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;
}
Esempio n. 2
0
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();
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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 ) );
    }
Esempio n. 5
0
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();
}
Esempio n. 6
0
void GLObject::computeSel(double x, double y){
    setSel( canSel(x,y) );
    }
Esempio n. 7
0
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;
}