void QMultiLineEdit::end( bool mark )
{
    moveCursor( MoveLineEnd, mark );
}
Esempio n. 2
0
	void Editable::insertAtCursor(const string &str) {
		deleteSelection();
		_str.insert(_cursor,str);
		makeDirty(true);
		moveCursor(str.length());
	}
const Cursor& middlePanningCursor()
{
    return moveCursor();
}
Esempio n. 4
0
void appl::TextViewer::mouseEventTriple() {
	//m_selectMode = false;
	moveCursor(m_buffer->getEndLine(m_buffer->cursor()));
	m_buffer->setSelectionPos(m_buffer->getStartLine(m_buffer->cursor()));
}
static int updateMenu( int key, void ** paramPtr )
{
    int moved = 0;

    union {
        struct {
            unsigned int
                selectionUp   : 1,
                selectionDown : 1,
                scrollUp      : 1,
                scrollDown    : 1;
        } f;
        unsigned int w;
    } draw = {{0}};

    if ( gMenuItems == NULL )
		return 0;

	if( bootArgs->Video.v_display != VGA_TEXT_MODE )
	{
		int res;
		
		// set navigation keys for horizontal layout as defaults
		int previous	= 0x4B00;		// left arrow
		int subsequent	= 0x4D00;		// right arrow
		int menu		= 0x5000;		// down arrow
		
		if ( gui.layout == VerticalLayout )
		{
			// set navigation keys for vertical layout
			previous	= 0x4800;		// up arrow
			subsequent	= 0x5000;		// down arrow
			menu		= 0x4B00;		// right arrow
		} 

		if ( key == previous )
		{
			if ( gMenuSelection > gMenuTop )
				draw.f.selectionUp = 1;
			else if ( gMenuTop > 0 )
				draw.f.scrollDown = 1;
			
		}
		
		else if ( key ==  subsequent )
		{
			if ( gMenuSelection != gMenuBottom)
				draw.f.selectionDown = 1;
			else if ( gMenuBottom < ( gMenuItemCount - 1 ) )
				draw.f.scrollUp = 1;
		}
		
		else if ( key == menu )
		{
			if ( gui.menu.draw )
				updateInfoMenu(key);
			else
				drawInfoMenu();
		}

		else if ( gui.menu.draw )
		{
			res = updateInfoMenu(key);

			if ( res == CLOSE_INFO_MENU )
				gui.menu.draw = false;
			else
			{
				shouldboot = ( res != DO_NOT_BOOT );
				
				if ( shouldboot )
					gui.menu.draw = false;

				switch (res)
				{
					case BOOT_NORMAL:
						gVerboseMode = false;
						gBootMode = kBootModeNormal;
                        shouldAddBootUuid = true;
                        break;
						
					case BOOT_VERBOSE:
						gVerboseMode = true;
						gBootMode = kBootModeNormal;
						addBootArg(kVerboseModeFlag);
                        shouldAddBootUuid = true;
						break;
						
					case BOOT_NO_BOOT_UUID:
						gVerboseMode = true;
						gBootMode = kBootModeNormal;
						addBootArg(kVerboseModeFlag);
                        shouldAddBootUuid = false;
						break;
						
					case BOOT_RESERVED:
						gVerboseMode = false;
						gBootMode = kBootModeNormal;
//						addBootArg(kSingleUserModeFlag);
                        shouldAddBootUuid = false;
						break;
				}
			}
			
		}	
			
	} else {
		switch ( key )
		{
        	case 0x4800:  // Up Arrow
				if ( gMenuSelection != gMenuTop )
					draw.f.selectionUp = 1;
				else if ( gMenuTop > 0 )
					draw.f.scrollDown = 1;
				break;

			case 0x5000:  // Down Arrow
				if ( gMenuSelection != gMenuBottom )
					draw.f.selectionDown = 1;
				else if ( gMenuBottom < (gMenuItemCount - 1) ) 
					draw.f.scrollUp = 1;
				break;
		}
	}

    if ( draw.w )
    {
        if ( draw.f.scrollUp )
        {
            scollPage(0, gMenuRow, 40, gMenuRow + gMenuHeight - 1, 0x07, 1, 1);
            gMenuTop++; gMenuBottom++;
			gMenuStart++; gMenuEnd++;
            draw.f.selectionDown = 1;
        }

        if ( draw.f.scrollDown )
        {
            scollPage(0, gMenuRow, 40, gMenuRow + gMenuHeight - 1, 0x07, 1, -1);
            gMenuTop--; gMenuBottom--;
            gMenuStart--; gMenuEnd--;
            draw.f.selectionUp = 1;
        }

        if ( draw.f.selectionUp || draw.f.selectionDown )
        {

			CursorState cursorState;

			// Set cursor at current position, and clear inverse video.
	
			if( bootArgs->Video.v_display == VGA_TEXT_MODE )
			{
				changeCursor( 0, gMenuRow + gMenuSelection - gMenuTop, kCursorTypeHidden, &cursorState );
				printMenuItem( &gMenuItems[gMenuSelection], 0 );
			}

			if ( draw.f.selectionUp )
			{
				gMenuSelection--;
				if(( gMenuSelection - gMenuStart) == -1 )
				{
					gMenuStart--;
					gMenuEnd--;
				}
				
			} else {
			gMenuSelection++;
			if(( gMenuSelection - ( gui.maxdevices - 1) - gMenuStart) > 0 )
			{
				gMenuStart++;
				gMenuEnd++;
			}
	    }

		if( bootArgs->Video.v_display == VGA_TEXT_MODE )
	    {
			moveCursor( 0, gMenuRow + gMenuSelection - gMenuTop );
			printMenuItem( &gMenuItems[gMenuSelection], 1 );
			restoreCursor( &cursorState );

	    } else

			drawDeviceList (gMenuStart, gMenuEnd, gMenuSelection);

	}

        *paramPtr = gMenuItems[gMenuSelection].param;        
        moved = 1;
    }

	return moved;
}
Esempio n. 6
0
void PacketList::goPreviousPacket(void) {
    setCurrentIndex(moveCursor(MoveUp, Qt::NoModifier));
}
Esempio n. 7
0
void PacketList::goLastPacket(void) {
    setCurrentIndex(moveCursor(MoveEnd, Qt::NoModifier));
}
Esempio n. 8
0
void RoomTableView::moveUp()
{
    setCurrentIndex(moveCursor(QAbstractItemView::MoveUp, Qt::NoModifier));
}
int main()
{
	srand(time(NULL));

	const int Number_of_Rects = 5;

	// initialization

	Rect userRect(7, 5, 10, 9); // Controlled Square Size

	Rect * rect = new Rect[Number_of_Rects]; // creates an array of 5 rectangles.

//	Rect * rect1 = new Rect; // (1, 6, 5, 15)
// rect1->setRandomByPointer(rect1);

	int userInput;

	for(int i = 0; i < Number_of_Rects; i++) // sets 5 rectanges to a random position
		{
		  setRandom(rect[i]); 
		}

	

	do
	{
		// draw
		for(int i = 0; i < Number_of_Rects; i++) // draw 5 rectangles that are numbered from 0 - 4
		{
			rect[i].draw('0'+i); 
		}
		
		//rect1->draw('1');
		moveCursor(0, 0);	// re-print instructions
		printf("move with 'w', 'a', 's', and 'd'");
		userRect.draw('#');

		moveCursor(40, 0);
		printf("No Collision");
		
		checkCollision(userRect, rect, Number_of_Rects); // collision detection. Prints "+" if player collides with other Rects
		
		
		/*for(int i = 0; i < Number_of_Rects; ++i) // old collision detector
		{
			if(userRect.isOverlapping( rect[i] ) )
			{
				
				userRect.draw('+');
				moveCursor(40, 0);
				printf("Collision");
			}
			else
			{
				moveCursor(40, 0);
				printf("No Collision");
			}
		}*/

		// user input
		userInput = _getch();
		
		// update
		Vec2 move;

		switch(userInput) // takes userInput to move controlled rectangle
		{
		case 'w':	move = Vec2( 0,-1);	break;
		case 'a':	move = Vec2(-1, 0);	break;
		case 's':	move = Vec2( 0,+1);	break;
		case 'd':	move = Vec2(+1, 0);	break;
		}
		userRect.draw(' ');	// un-draw before moving
		userRect.translate(move); // Draws square at new location
		
	}while(userInput != 27); // escape key
	delete [] rect; 
	return 0;
}
void QMultiLineEdit::cursorUp( bool mark )
{
    moveCursor( MoveUp, mark );
}
void QMultiLineEdit::cursorDown( bool mark )
{
    moveCursor( MoveDown, mark );
}
void QMultiLineEdit::cursorRight( bool mark, bool )
{
    moveCursor( MoveForward, mark );
}
void QMultiLineEdit::cursorLeft( bool mark, bool )
{
    moveCursor( MoveBackward, mark );
}
/*!  Moves the cursor one word to the left.  If \a mark is TRUE, the
  text is selected.

  \sa cursorWordForward()
*/
void QMultiLineEdit::cursorWordBackward( bool mark )
{
    moveCursor( MoveWordBackward, mark );
}
void CodeEditor::keyPressEvent(QKeyEvent *e){
    switch(e->key()) {
      case Qt::Key_Backspace:
        {
            if (placedDoubleCharacter) {
                moveCursor(QTextCursor::Right);
                QPlainTextEdit::keyPressEvent(e);
                QPlainTextEdit::keyPressEvent(e);
            } else {
                QPlainTextEdit::keyPressEvent(e);
            }
        }
        break;
      case Qt::Key_BraceRight:
      case Qt::Key_BracketRight:
      case Qt::Key_ParenRight:
      case Qt::Key_Greater:
        {
          if (!placedDoubleCharacter) {
                placedDoubleCharacter = false;
                QPlainTextEdit::keyPressEvent(e);
          } else {
                moveCursor(QTextCursor::Right);
          }
        }
        break;
      case Qt::Key_BraceLeft: //notices on keypress that an open brace has been entered and immediately puts a
                              //closing brace and moves the cursor inside
        {
            textCursor().beginEditBlock();
            placedDoubleCharacter = true;
            insertPlainText("{}");
            moveCursor(QTextCursor::Left);
            textCursor().endEditBlock();
        }
        break;
      case Qt::Key_ParenLeft://notices on keypress that an open paren has been entered and immediately puts a
        //closing paren and moves the cursor inside
        {
            textCursor().beginEditBlock();
            placedDoubleCharacter = true;
            insertPlainText("()");
            moveCursor(QTextCursor::Left);
            textCursor().endEditBlock();
        }
        break;
      case Qt::Key_BracketLeft://notices on keypress that an open paren has been entered and immediately puts a
        //closing paren and moves the cursor inside
        {
            textCursor().beginEditBlock();
            placedDoubleCharacter = true;
            insertPlainText("[]");
            moveCursor(QTextCursor::Left);
            textCursor().endEditBlock();
        }
        break;
      case Qt::Key_Less:
        {
            textCursor().beginEditBlock();
            placedDoubleCharacter = true;
            insertPlainText("<>");
            moveCursor(QTextCursor::Left);
            textCursor().endEditBlock();
        }
        break;
      case Qt::Key_Apostrophe://notices on keypress that an apostrophe has been entered and immediately puts a
        //closing apostrophe and moves the cursor inside

        {
            if (!placedDoubleCharacter) {
                textCursor().beginEditBlock();
                placedDoubleCharacter = true;
                insertPlainText("''");
                moveCursor(QTextCursor::Left);
                textCursor().endEditBlock();
            }
        }
        break;
      case Qt::Key_QuoteDbl:
        {
            if (!placedDoubleCharacter) {
                textCursor().beginEditBlock();
                placedDoubleCharacter = true;
                insertPlainText("\"\"");
                moveCursor(QTextCursor::Left);
                textCursor().endEditBlock();
            }
        }
        break;
      case Qt::Key_Return:
        {
            textCursor().beginEditBlock();
            QString indent = getLineIndent();
            QPlainTextEdit::keyPressEvent(e);
            insertPlainText(indent);
            if (placedDoubleCharacter) {
                insertPlainText("\t");
                QPlainTextEdit::keyPressEvent(e);
                insertPlainText(indent);
                moveCursor(QTextCursor::Up);
                moveCursor(QTextCursor::EndOfLine);
            }
            placedDoubleCharacter = false;
            textCursor().endEditBlock();
        }
        break;
      default:
        placedDoubleCharacter = false;
        QPlainTextEdit::keyPressEvent(e);
        break;
    }
}
void TextEdit::setText(const QString& text)
{
    KTextEdit::setPlainText(text);
    moveCursor(QTextCursor::End);
    setEnabled(true);
}
Esempio n. 17
0
void PacketList::goNextPacket(void) {
    setCurrentIndex(moveCursor(MoveDown, Qt::NoModifier));
}
void TasMouseEventGenerator::doMouseMove(const TasEventTarget& target, QPoint point, Qt::MouseButton button, uint pointerNumber )
{
    moveCursor(point);
    QMouseEvent* eventMove = new QMouseEvent(QEvent::MouseMove, target.mapFromGlobal(point), point, button, button, 0);
    sendMouseEvent(target, eventMove, pointerNumber);
}
Esempio n. 19
0
void PacketList::goFirstPacket(void) {
    setCurrentIndex(moveCursor(MoveHome, Qt::NoModifier));
}
Esempio n. 20
0
void j_console::drawTextBox (const std::string& caption, const std::string& message, int x, int y, int width, int height, j_consoleColors border,
                             j_consoleColors fill, j_consoleColors captionTextColor, j_consoleColors textColor, j_messageBox messageBoxType, const std::string& closingMessage)
{
    int messagePosition = 0;
    int linesWritten = 0;

    // Draw Box
    for (int i = 0; i < height; ++i)
    {
        for (int ii = 0; ii < width; ++ii)
        {
            if (i == 0 || i == (height-1) || ii == 0 || ii == (width-1))
                setBGColor (border);
            else
                setBGColor (fill);

            moveCursor (ii+x, i+y);
            out (" ");
        }
    }

    // Display Caption
    moveCursor (x,y);
    setBGColor (border);
    setFGColor (captionTextColor);
    out (caption);


    // Display main message
    if (height <= 3)
    {
        moveCursor (x+1, y+1);
        out (message);
    }
    else
    {
        moveCursor (x+(width-2)/2, y+1);

        setBGColor (fill);
        setFGColor (textColor);

        while (message.size () >= messagePosition)
        {
            moveCursor (x + 1, y + 1 + linesWritten);
            out (message.substr (messagePosition, (width-2)));
            messagePosition += width-2;
            linesWritten++;
        }


    }

    //  Display closing message
    if (messageBoxType == mboxEnter)
    {
        moveCursor (x, y+height-1);
        setBGColor (border);
        setFGColor (captionTextColor);
        out ("Press Enter");
    }
    else if (messageBoxType == mboxYesNo)
    {
        moveCursor (x, y+height-1);
        setBGColor (border);
        setFGColor (captionTextColor);
        out ("Yes(y)  No(n)");
    }
    else if (messageBoxType = mboxOther)
    {
        moveCursor (x, y+height-1);
        setBGColor (border);
        setFGColor (captionTextColor);
        out (closingMessage);
    }

    moveCursor (0, 0);
}
Esempio n. 21
0
bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) {
	if (   _event.getId() != 0
	    && _event.getStatus() == gale::key::status::down) {
		keepFocus();
	}
	//tic();
	if (m_buffer == nullptr) {
		return false;
	}
	// First call the scrolling widget :
	if (ewol::widget::WidgetScrolled::onEventInput(_event) == true) {
		markToRedraw();
		return true;
	}
	// Second call plugin
	if (m_pluginManager->onEventInput(*this, _event) == true) {
		markToRedraw();
		return true;
	}
	vec2 relativePos = relativePosition(_event.getPos());
	// offset for the lineNumber:
	relativePos -= vec2(m_lastOffsetDisplay, 0);
	// offset for the scrolling:
	relativePos += vec2(m_originScrooled.x(), -m_originScrooled.y());
	// invert for the buffer event ...
	relativePos.setY(m_size.y()-relativePos.y());
	if (relativePos.x()<0) {
		relativePos.setX(0);
	}
	if (    _event.getId() == 12
	     && _event.getStatus() == gale::key::status::pressSingle) {
		APPL_TODO("RAT5 SAVE button ==> TODO implement");
		// Rat5 save event
		//sendMultiCast(ednMsgGuiSave, "current");
		return true;
	}
	// just forward event  == > manage directly in the buffer
	if (_event.getId() == 1) {
		// mouse selection :
		//if (_event.getType() == gale::key::typeMouse) {
			if (_event.getStatus() == gale::key::status::down) {
				//if (_event.getSpecialKey().isSetShift() == false) {
					appl::Buffer::Iterator newPos = getMousePosition(relativePos);
					m_buffer->setSelectMode(false);
					moveCursor(newPos);
					m_buffer->setSelectMode(true);
					markToRedraw();
					return true;
				//}
			} else if (_event.getStatus() == gale::key::status::up) {
				appl::Buffer::Iterator newPos = getMousePosition(relativePos);
				moveCursor(newPos);
				m_buffer->setSelectMode(false);
				// Copy selection :
				std::string value;
				m_buffer->copy(value);
				if (value.size() != 0) {
					gale::context::clipBoard::set(gale::context::clipBoard::clipboardSelection, value);
				}
				markToRedraw();
				return true;
			}
		//}
		if (_event.getStatus() == gale::key::status::pressSingle) {
			if (    _event.getType() == gale::key::type::mouse
			     || _event.getType() == gale::key::type::finger) {
				appl::Buffer::Iterator newPos = getMousePosition(relativePos);
				moveCursor(newPos);
				markToRedraw();
				return true;
			}
		} else if (_event.getStatus() == gale::key::status::pressDouble) {
			mouseEventDouble();
			// Copy selection :
			std::string value;
			m_buffer->copy(value);
			if (value.size() != 0) {
				gale::context::clipBoard::set(gale::context::clipBoard::clipboardSelection, value);
			}
			markToRedraw();
			return true;
		} else if (_event.getStatus() == gale::key::status::pressTriple) {
			mouseEventTriple();
			// Copy selection :
			std::string value;
			m_buffer->copy(value);
			if (value.size() != 0) {
				gale::context::clipBoard::set(gale::context::clipBoard::clipboardSelection, value);
			}
			markToRedraw();
			return true;
		} else if (_event.getStatus() == gale::key::status::move) {
			if (m_buffer->getSelectMode() == true) {
				//int64_t timeStart = ewol::getTime();
				appl::Buffer::Iterator newPos = getMousePosition(relativePos);
				//int64_t timeMedium1 = ewol::getTime();
				moveCursor(newPos);
				//int64_t timeMedium2 = ewol::getTime();
				markToRedraw();
				/*
				int64_t timeStop = ewol::getTime();
				APPL_DEBUG("Display selection=" << (timeStop-timeStart)/1000.0f << " ms");
				APPL_DEBUG("                1=" << (timeMedium1-timeStart)/1000.0f << " ms");
				APPL_DEBUG("                2=" << (timeMedium2-timeMedium1)/1000.0f << " ms");
				*/
				return true;
			}
		}
	} else if (2 == _event.getId()) {
		if (gale::key::status::pressSingle == _event.getStatus()) {
			appl::Buffer::Iterator newPos = getMousePosition(relativePos);
			moveCursor(newPos);
			gale::context::clipBoard::request(gale::context::clipBoard::clipboardSelection);
			markToRedraw();
			return true;
		}
	}
	return false;
}
Esempio n. 22
0
 void show() {
   moveCursor(0);
   LCD.blinkCursor(true);
   LCD.moveCursor(1, cursorPos);
 }
Esempio n. 23
0
void EditorScreen::clearLines()
{
  _lines.clear();
  initTopLineIndex();
  moveCursor(0, 0);
}
Esempio n. 24
0
void TCommandLine::handleTabCompletion( bool direction )
{
    if( ( mTabCompletionCount < 0 ) || ( mUserKeptOnTyping ) )
    {
        mTabCompletionTyped = toPlainText();
        if( mTabCompletionTyped.size() == 0 ) return;
        mUserKeptOnTyping = false;
        mTabCompletionCount = -1;
    }
    int amount = mpHost->mpConsole->buffer.size();
    if( amount > 500 ) amount = 500;

    QStringList bufferList = mpHost->mpConsole->buffer.getEndLines( amount );
    QString buffer = bufferList.join(" ");

    buffer.replace(QChar( 0x21af ), "\n");
    buffer.replace(QChar('\n'), " " );

    QStringList wordList = buffer.split( QRegExp("\\b"), QString::SkipEmptyParts );
    if( direction )
    {
        mTabCompletionCount++;
    }
    else
    {
        mTabCompletionCount--;
    }
    if( wordList.size() > 0 )
    {
        if( mTabCompletionTyped.endsWith(" ") ) return;
        QString lastWord;
        QRegExp reg = QRegExp("\\b(\\w+)$");
        int typePosition = reg.indexIn( mTabCompletionTyped );
        if( reg.numCaptures() >= 1 )
            lastWord = reg.cap( 1 );
        else
            lastWord = "";
        QStringList filterList = wordList.filter( QRegExp( "^"+lastWord+"\\w+",Qt::CaseInsensitive  ) );
        if( filterList.size() < 1 ) return;
        int offset = 0;
        for( ; ; )
        {
            QString tmp = filterList.back();
            filterList.removeAll( tmp );
            filterList.insert( offset, tmp );
            ++offset;
            if( offset >= filterList.size() ) break;
        }

        if( filterList.size() > 0 )
        {
            if( mTabCompletionCount >= filterList.size() ) mTabCompletionCount = filterList.size()-1;
            if( mTabCompletionCount < 0 ) mTabCompletionCount = 0;
            QString proposal = filterList[mTabCompletionCount];
            QString userWords = mTabCompletionTyped.left( typePosition );
            setPlainText( QString( userWords + proposal ).trimmed() );
            moveCursor( QTextCursor::End, QTextCursor::MoveAnchor );
            mTabCompletionOld = toPlainText();
        }
    }
}
Esempio n. 25
0
static int countdown( const char * msg, int row, int timeout )
{
    unsigned long time;
    int ch  = 0;
    int col = strlen(msg) + 1;
	
    flushKeyboardBuffer();

	if( bootArgs->Video.v_display == VGA_TEXT_MODE )
	{
		moveCursor( 0, row );
		printf(msg);

	} else {

		position_t p = pos( gui.screen.width / 2 + 1 , ( gui.devicelist.pos.y + 3 ) + ( ( gui.devicelist.height - gui.devicelist.iconspacing ) / 2 ) );
	
		char dummy[80];
		getBootVolumeDescription( gBootVolume, dummy, sizeof(dummy) - 1, true );
		drawDeviceIcon( gBootVolume, gui.screen.pixmap, p, true );
		drawStrCenteredAt( (char *) msg, &font_small, gui.screen.pixmap, gui.countdown.pos );
		
		// make this screen the new background
		memcpy( gui.backbuffer->pixels, gui.screen.pixmap->pixels, gui.backbuffer->width * gui.backbuffer->height * 4 );
		
	}

	int multi_buff = 18 * (timeout);
    int multi = ++multi_buff;

    int lasttime=0;

    for ( time = time18(), timeout++; timeout > 0; )
    {
		if( time18() > lasttime)
		{
			multi--; 
			lasttime=time18();
		}		
  
        if (ch = readKeyboardStatus())
            break;

        // Count can be interrupted by holding down shift,
        // control or alt key
        if ( ( readKeyboardShiftFlags() & 0x0F ) != 0 )
		{
            ch = 1;
            break;
        }

        if ( time18() >= time )
        {
            time += 18;
            timeout--;

			if( bootArgs->Video.v_display == VGA_TEXT_MODE )
			{
				moveCursor( col, row );
				printf("(%d) ", timeout);
			}
        }
	
		if( bootArgs->Video.v_display != VGA_TEXT_MODE )
		{
			drawProgressBar( gui.screen.pixmap, 100, gui.progressbar.pos , ( multi * 100 / multi_buff ) );
			gui.redraw = true;
			updateVRAM();
		}

    }

    flushKeyboardBuffer();

    return ch;
}
Esempio n. 26
0
bool TCommandLine::event( QEvent * event )
{
    if( event->type() == QEvent::KeyPress )
    {
        QKeyEvent *ke = static_cast<QKeyEvent *>( event );
        //qDebug()<<"modifier="<<ke->modifiers()<<" key="<<ke->key();
        switch( ke->key() )
        {
            case Qt::Key_Space:
                mTabCompletionCount = -1;
                mAutoCompletionCount = -1;
                mTabCompletionTyped = "";
                mAutoCompletionTyped = "";
                if( mpHost->mAutoClearCommandLineAfterSend )
                    mHistoryBuffer = -1;
                else
                    mHistoryBuffer = 0;
                mLastCompletion = "";
                break;


        case Qt::Key_Backtab:
            if( ke->modifiers() & Qt::ControlModifier )
            {
                    int currentIndex = mudlet::self()->mpTabBar->currentIndex();
                    int count = mudlet::self()->mpTabBar->count();
                    if( currentIndex-1 < 0 )
                            mudlet::self()->mpTabBar->setCurrentIndex(count-1);
                    else
                            mudlet::self()->mpTabBar->setCurrentIndex(currentIndex-1);
            }
            else
            {
                    handleTabCompletion( false );
                    adjustHeight();
            }
            ke->accept();
            return true;
            break;

        case Qt::Key_Tab:
            if( ke->modifiers() & Qt::ControlModifier )
            {
                int currentIndex = mudlet::self()->mpTabBar->currentIndex();
                int count = mudlet::self()->mpTabBar->count();
                if( currentIndex+1 < count )
                    mudlet::self()->mpTabBar->setCurrentIndex(currentIndex+1);
                else
                    mudlet::self()->mpTabBar->setCurrentIndex(0);
            }
            else
                handleTabCompletion( true );
            ke->accept();
            return true;
            break;

//            case Qt::Key_Backtab:
//                handleTabCompletion( false );
//                ke->accept();
//                adjustHeight();
//                return true;
//                break;

//            case Qt::Key_Tab:
//                handleTabCompletion( true );
//                ke->accept();
//                return true;
//                break;

            case Qt::Key_unknown:
                qWarning()<<"ERROR: key unknown!";
                break;

            case Qt::Key_Backspace:
                if( mpHost->mAutoClearCommandLineAfterSend )
                    mHistoryBuffer = -1;
                else
                    mHistoryBuffer = 0;
                if( mTabCompletionTyped.size() >= 1 )
                {
                    mTabCompletionTyped.chop(1);
                    mAutoCompletionTyped.chop(1);
                    mTabCompletionCount = -1;
                    mAutoCompletionCount = -1;
                    mLastCompletion = "";
                }
                else
                {
                    mTabCompletionCount = -1;
                    mAutoCompletionCount = -1;
                    mLastCompletion = "";
                }
                QPlainTextEdit::event(event);

                adjustHeight();

                return true;

            case Qt::Key_Delete:
                if( mpHost->mAutoClearCommandLineAfterSend )
                    mHistoryBuffer = -1;
                else
                    mHistoryBuffer = 0;
                if( mTabCompletionTyped.size() >= 1 )
                {
                    mTabCompletionTyped.chop(1);
                    mAutoCompletionTyped.chop(1);
                    mTabCompletionCount = -1;
                    mAutoCompletionCount = -1;
                    mLastCompletion = "";
                }
                else
                {
                    mTabCompletionCount = -1;
                    mAutoCompletionCount = -1;
                    mLastCompletion = "";
                    mTabCompletionTyped = "";
                    mAutoCompletionTyped = "";
                    mUserKeptOnTyping = false;
                    mTabCompletionCount = -1;
                    mAutoCompletionCount = -1;
                }
                QPlainTextEdit::event(event);
                adjustHeight();
                return true;
                break;

            case Qt::Key_Return:
                if( ke->modifiers() & Qt::ControlModifier )
                {
                    mpConsole->console2->mCursorY = mpConsole->buffer.size();//
                    mpConsole->console2->hide();
                    mpConsole->buffer.mCursorY = mpConsole->buffer.size();
                    mpConsole->console->mCursorY = mpConsole->buffer.size();//
                    mpConsole->console->mIsTailMode = true;
                    mpConsole->console->updateScreenView();
                    mpConsole->console->forceUpdate();
                    ke->accept();
                    return true;
                }
                else if( ke->modifiers() & Qt::ShiftModifier )
                {
                    textCursor().insertBlock();
                    /*if( ! textCursor().movePosition(QTextCursor::Down, QTextCursor::KeepAnchor) )
                    {
                        textCursor().insertBlock();
                    }*/
                    ke->accept();
                    return true;
                }
                else
                {
                    enterCommand(ke);
                    mTabCompletionCount = -1;
                    mAutoCompletionCount = -1;
                    mLastCompletion = "";
                    mTabCompletionTyped = "";
                    mAutoCompletionTyped = "";
                    mUserKeptOnTyping = false;
                    mTabCompletionCount = -1;
                    mAutoCompletionCount = -1;
                    if( mpHost->mAutoClearCommandLineAfterSend )
                    {
                        clear();
                        mHistoryBuffer = -1;
                    }
                    else
                        mHistoryBuffer = 0;
                    adjustHeight();
                    ke->accept();
                    return true;
                }
                break;

            case Qt::Key_Enter:
                enterCommand(ke);
                mTabCompletionCount = -1;
                mAutoCompletionCount = -1;
                mLastCompletion = "";
                mTabCompletionTyped = "";
                mAutoCompletionTyped = "";
                mUserKeptOnTyping = false;
                mTabCompletionCount = -1;
                mAutoCompletionCount = -1;
                if( mpHost->mAutoClearCommandLineAfterSend )
                {
                    clear();
                    mHistoryBuffer = -1;
                }
                else
                    mHistoryBuffer = 0;
                adjustHeight();
                ke->accept();
                return true;
                break;

            case Qt::Key_Down:
                if( ke->modifiers() & Qt::ControlModifier )
                {
                    moveCursor(QTextCursor::Down, QTextCursor::MoveAnchor);
                    ke->accept();
                    return true;
                }
                else
                {
                    historyDown(ke);
                    ke->accept();
                    return true;
                }
                break;

            case Qt::Key_Up:
                if( ke->modifiers() & Qt::ControlModifier )
                {
                    moveCursor(QTextCursor::Up, QTextCursor::MoveAnchor );
                    ke->accept();
                    return true;
                }
                else
                {
                    historyUp(ke);
                    ke->accept();
                    return true;
                }
                break;

            case Qt::Key_Escape:

                selectAll();
                mAutoCompletion = false;
                mTabCompletion = false;
                mTabCompletionTyped = "";
                mAutoCompletionTyped = "";
                mUserKeptOnTyping = false;
                mTabCompletionCount = -1;
                mAutoCompletionCount = -1;
                setPalette( mRegularPalette );
                if( mpHost->mAutoClearCommandLineAfterSend )
                    mHistoryBuffer = -1;
                else
                    mHistoryBuffer = 0;
                ke->accept();
                return true;
                break;

            case Qt::Key_PageUp:
                mpConsole->scrollUp( mpHost->mScreenHeight );
                ke->accept();
                return true;
                break;

            case Qt::Key_PageDown:
                mpConsole->scrollDown( mpHost->mScreenHeight );
                ke->accept();
                return true;
                break;

            case Qt::Key_C:
                if( ke->modifiers() & Qt::ControlModifier )
                {
                     if( mpConsole->console->mSelectedRegion != QRegion( 0, 0, 0, 0 ) )
                     {
                         mpConsole->console->copySelectionToClipboard();
                         ke->accept();
                         return true;
                     }
                }
                break;

            default:

                if( mpKeyUnit->processDataStream( ke->key(), (int)ke->modifiers() ) )
                {
                    ke->accept();
                    return true;
                }
                else
                {
                    QPlainTextEdit::event( event );
                    adjustHeight();

                    if( mpHost->mAutoClearCommandLineAfterSend )
                        mHistoryBuffer = -1;
                    else
                        mHistoryBuffer = 0;
                    if( mTabCompletionOld != toPlainText() )//text() )
                    {
                        mUserKeptOnTyping = true;
                        mAutoCompletionCount = -1;
                    }
                    else
                    {
                        mUserKeptOnTyping = false;
                    }
                    spellCheck();
                    return false;
                }
        }

    }

    return QPlainTextEdit::event( event );
}
const Cursor& Cursor::fromType(Cursor::Type type)
{
    switch (type) {
    case Cursor::Pointer:
        return pointerCursor();
    case Cursor::Cross:
        return crossCursor();
    case Cursor::Hand:
        return handCursor();
    case Cursor::IBeam:
        return iBeamCursor();
    case Cursor::Wait:
        return waitCursor();
    case Cursor::Help:
        return helpCursor();
    case Cursor::EastResize:
        return eastResizeCursor();
    case Cursor::NorthResize:
        return northResizeCursor();
    case Cursor::NorthEastResize:
        return northEastResizeCursor();
    case Cursor::NorthWestResize:
        return northWestResizeCursor();
    case Cursor::SouthResize:
        return southResizeCursor();
    case Cursor::SouthEastResize:
        return southEastResizeCursor();
    case Cursor::SouthWestResize:
        return southWestResizeCursor();
    case Cursor::WestResize:
        return westResizeCursor();
    case Cursor::NorthSouthResize:
        return northSouthResizeCursor();
    case Cursor::EastWestResize:
        return eastWestResizeCursor();
    case Cursor::NorthEastSouthWestResize:
        return northEastSouthWestResizeCursor();
    case Cursor::NorthWestSouthEastResize:
        return northWestSouthEastResizeCursor();
    case Cursor::ColumnResize:
        return columnResizeCursor();
    case Cursor::RowResize:
        return rowResizeCursor();
    case Cursor::MiddlePanning:
        return middlePanningCursor();
    case Cursor::EastPanning:
        return eastPanningCursor();
    case Cursor::NorthPanning:
        return northPanningCursor();
    case Cursor::NorthEastPanning:
        return northEastPanningCursor();
    case Cursor::NorthWestPanning:
        return northWestPanningCursor();
    case Cursor::SouthPanning:
        return southPanningCursor();
    case Cursor::SouthEastPanning:
        return southEastPanningCursor();
    case Cursor::SouthWestPanning:
        return southWestPanningCursor();
    case Cursor::WestPanning:
        return westPanningCursor();
    case Cursor::Move:
        return moveCursor();
    case Cursor::VerticalText:
        return verticalTextCursor();
    case Cursor::Cell:
        return cellCursor();
    case Cursor::ContextMenu:
        return contextMenuCursor();
    case Cursor::Alias:
        return aliasCursor();
    case Cursor::Progress:
        return progressCursor();
    case Cursor::NoDrop:
        return noDropCursor();
    case Cursor::Copy:
        return copyCursor();
    case Cursor::None:
        return noneCursor();
    case Cursor::NotAllowed:
        return notAllowedCursor();
    case Cursor::ZoomIn:
        return zoomInCursor();
    case Cursor::ZoomOut:
        return zoomOutCursor();
    case Cursor::Grab:
        return grabCursor();
    case Cursor::Grabbing:
        return grabbingCursor();
    case Cursor::Custom:
        ASSERT_NOT_REACHED();
    }
    return pointerCursor();
}
Esempio n. 28
0
bool DrasculaEngine::runCurrentChapter() {
	int n;

	_rightMouseButton = 0;

	previousMusic = -1;

	if (currentChapter != 2) {
		int soc = 0;
		for (n = 0; n < 6; n++) {
			soc = soc + CHARACTER_WIDTH;
			_frameX[n] = soc;
		}
	}

	for (n = 1; n < ARRAYSIZE(inventoryObjects); n++)
		inventoryObjects[n] = 0;

	for (n = 0; n < NUM_FLAGS; n++)
		flags[n] = 0;

	if (currentChapter == 2) {
		flags[16] = 1;
		flags[17] = 1;
		flags[27] = 1;
	}

	for (n = 1; n < 7; n++)
		inventoryObjects[n] = n;

	if (currentChapter == 1) {
		pickObject(28);

		if (!_loadedDifferentChapter)
			animation_1_1();

		selectVerb(kVerbNone);
		loadPic("2aux62.alg", drawSurface2);
		trackProtagonist = 1;
		objExit = 104;
		if (_loadedDifferentChapter) {
			if (!loadGame(_currentSaveSlot)) {
				return true;
			}
		} else {
			enterRoom(62);
			curX = -20;
			curY = 56;
			gotoObject(65, 145);
		}

		// REMINDER: This is a good place to debug animations
	} else if (currentChapter == 2) {
		addObject(kItemPhone);
		trackProtagonist = 3;
		objExit = 162;
		if (!_loadedDifferentChapter)
			enterRoom(14);
		else {
			if (!loadGame(_currentSaveSlot)) {
				return true;
			}
		}
	} else if (currentChapter == 3) {
		addObject(kItemPhone);
		addObject(kItemEarplugs);
		addObject(kItemSickle);
		addObject(kItemHandbag);
		addObject(kItemCross);
		addObject(kItemReefer);
		addObject(kItemOneCoin);
		flags[1] = 1;
		trackProtagonist = 1;
		objExit = 99;
		if (!_loadedDifferentChapter)
			enterRoom(20);
		else {
			if (!loadGame(_currentSaveSlot)) {
				return true;
			}
		}
	// From here onwards the items have different IDs
	} else if (currentChapter == 4) {
		addObject(kItemPhone2);
		addObject(kItemCross2);
		addObject(kItemReefer2);
		addObject(kItemOneCoin2);
		objExit = 100;
		if (!_loadedDifferentChapter) {
			enterRoom(21);
			trackProtagonist = 0;
			curX = 235;
			curY = 164;
		} else {
			if (!loadGame(_currentSaveSlot)) {
				return true;
			}
		}
	} else if (currentChapter == 5) {
		addObject(28);
		addObject(7);
		addObject(9);
		addObject(11);
		addObject(13);
		addObject(14);
		addObject(15);
		addObject(17);
		addObject(20);
		trackProtagonist = 1;
		objExit = 100;
		if (!_loadedDifferentChapter) {
			enterRoom(45);
		} else {
			if (!loadGame(_currentSaveSlot)) {
				return true;
			}
		}
	} else if (currentChapter == 6) {
		addObject(28);
		addObject(9);

		trackProtagonist = 1;
		objExit = 104;
		if (!_loadedDifferentChapter) {
			enterRoom(58);
			animation_1_6();
		} else {
			if (!loadGame(_currentSaveSlot)) {
				return true;
			}
			loadPic("auxdr.alg", drawSurface2);
		}
	}

	showCursor();

	while (!shouldQuit()) {
		if (characterMoved == 0) {
			stepX = STEP_X;
			stepY = STEP_Y;
		}
		if (characterMoved == 0 && walkToObject == 1) {
			trackProtagonist = trackFinal;
			walkToObject = 0;
		}

		if (currentChapter == 2) {
			// NOTE: the checks for room number 14 below are a hack used in the original
			// game, and move the character to a place where his feet are not drawn above
			// the pianist's head. Originally, walkToObject was not updated properly, which
			// lead to an incorrect setting of the protagonist's tracking flag (above). This
			// made the character start walking off screen, as his actual position was
			// different than the displayed one
			if (_roomNumber == 3 && (curX == 279) && (curY + curHeight == 101)) {
				gotoObject(178, 121);
				gotoObject(169, 135);
			} else if (_roomNumber == 14 && (curX == 214) && (curY + curHeight == 121)) {
				walkToObject = 1;
				gotoObject(190, 130);
			} else if (_roomNumber == 14 && (curX == 246) && (curY + curHeight == 112)) {
				walkToObject = 1;
				gotoObject(190, 130);
			}
		}

		moveCursor();
		updateScreen();

		if (currentChapter == 2) {
			if (musicStatus() == 0 && roomMusic != 0)
				playMusic(roomMusic);
		} else {
			if (musicStatus() == 0)
				playMusic(roomMusic);
		}

		delay(25);
#ifndef _WIN32_WCE
		// FIXME
		// This and the following #ifndefs disable the excess updateEvents() calls *within* the game loop.
		// Events such as keypresses or mouse clicks are dropped on the ground with no processing
		// by these calls. They are properly handled by the implicit call through getScan() below.
		// It is not a good practice to not process events and indeed this created problems with synthesized
		// events in the wince port.
		updateEvents();
#endif

		if (!_menuScreen && takeObject == 1)
			checkObjects();

#ifdef _WIN32_WCE
		if (_rightMouseButton) {
			if (_menuScreen) {
#else
		if (_rightMouseButton == 1 && _menuScreen) {
#endif
			_rightMouseButton = 0;
			delay(100);
			if (currentChapter == 2) {
				loadPic(menuBackground, cursorSurface);
				loadPic(menuBackground, backSurface);
			} else {
				loadPic(99, cursorSurface);
				loadPic(99, backSurface);
			}
			setPalette((byte *)&gamePalette);
			_menuScreen = false;
#ifndef _WIN32_WCE
			// FIXME: This call here is in hope that it will catch the rightmouseup event so the
			// next if block won't be executed. This too is not a good coding practice. I've recoded it
			// with a mutual exclusive if block for the menu. I would commit this properly but I cannot test
			// for other (see Desktop) ports right now.
			updateEvents();
#endif
#ifdef _WIN32_WCE
			} else {
#else
		}

		// Do not show the inventory screen in chapter 5, if the right mouse button is clicked
		// while the plug (object 16) is held
		// Fixes bug #2059621 - "DRASCULA: Plug bug"
		if (_rightMouseButton == 1 && !_menuScreen &&
			!(currentChapter == 5 && pickedObject == 16)) {
#endif
			_rightMouseButton = 0;
			delay(100);
			characterMoved = 0;
			if (trackProtagonist == 2)
				trackProtagonist = 1;
			if (currentChapter == 4) {
				loadPic("icons2.alg", backSurface);
				loadPic("icons2.alg", cursorSurface);
			} else if (currentChapter == 5) {
				loadPic("icons3.alg", backSurface);
				loadPic("icons3.alg", cursorSurface);
			} else if (currentChapter == 6) {
				loadPic("iconsp.alg", backSurface);
				loadPic("iconsp.alg", cursorSurface);
			} else {
				loadPic("icons.alg", backSurface);
				loadPic("icons.alg", cursorSurface);
			}
			_menuScreen = true;
#ifndef _WIN32_WCE
			updateEvents();
#endif
			selectVerb(kVerbNone);
		}
#ifdef _WIN32_WCE
		}
#endif

		if (_leftMouseButton == 1 && _menuBar) {
			delay(100);
			selectVerbFromBar();
		} else if (_leftMouseButton == 1 && takeObject == 0) {
			delay(100);
			if (verify1())
				return true;
		} else if (_leftMouseButton == 1 && takeObject == 1) {
			if (verify2())
				return true;
		}

		_menuBar = (_mouseY < 24 && !_menuScreen) ? true : false;

		Common::KeyCode key = getScan();
		if (key == Common::KEYCODE_F1 && !_menuScreen) {
			selectVerb(kVerbLook);
		} else if (key == Common::KEYCODE_F2 && !_menuScreen) {
			selectVerb(kVerbPick);
		} else if (key == Common::KEYCODE_F3 && !_menuScreen) {
			selectVerb(kVerbOpen);
		} else if (key == Common::KEYCODE_F4 && !_menuScreen) {
			selectVerb(kVerbClose);
		} else if (key == Common::KEYCODE_F5 && !_menuScreen) {
			selectVerb(kVerbTalk);
		} else if (key == Common::KEYCODE_F6 && !_menuScreen) {
			selectVerb(kVerbMove);
		} else if (key == Common::KEYCODE_F7) {
			// ScummVM load screen
			if (!scummVMSaveLoadDialog(false))
				return true;
		} else if (key == Common::KEYCODE_F8) {
			selectVerb(kVerbNone);
		} else if (key == Common::KEYCODE_F9) {
			volumeControls();
		} else if (key == Common::KEYCODE_F10) {
			if (!ConfMan.getBool("originalsaveload")) {
				// ScummVM save screen
				scummVMSaveLoadDialog(true);
			} else {
				// Original save/load screen
				if (!saveLoadScreen())
					return true;
			}
		} else if (key == Common::KEYCODE_v) {
			_subtitlesDisabled = true;
			ConfMan.setBool("subtitles", !_subtitlesDisabled);

			print_abc(_textsys[2], 96, 86);
			updateScreen();
			delay(1410);
		} else if (key == Common::KEYCODE_t) {
			_subtitlesDisabled = false;
			ConfMan.setBool("subtitles", !_subtitlesDisabled);

			print_abc(_textsys[3], 94, 86);
			updateScreen();
			delay(1460);
		} else if (key == Common::KEYCODE_ESCAPE) {
			if (!confirmExit())
				return false;
		} else if (key == Common::KEYCODE_TILDE || key == Common::KEYCODE_BACKQUOTE) {
			_console->attach();
			_console->onFrame();
		} else if (currentChapter == 6 && key == Common::KEYCODE_0 && _roomNumber == 61) {
			loadPic("alcbar.alg", bgSurface, 255);
		}

		if (_leftMouseButton != 0 || _rightMouseButton != 0 || key != 0)
			framesWithoutAction = 0;

		if (framesWithoutAction == 15000) {
			screenSaver();
			framesWithoutAction = 0;
		}

		framesWithoutAction++;
	}

	return false;
}


bool DrasculaEngine::verify1() {
	int l;

	if (_menuScreen)
		removeObject();
	else {
		for (l = 0; l < numRoomObjs; l++) {
			if (_mouseX >= _objectX1[l] && _mouseY >= _objectY1[l]
					&& _mouseX <= _objectX2[l] && _mouseY <= _objectY2[l] && doBreak == 0) {
				if (exitRoom(l))
					return true;
				if (doBreak == 1)
					break;
			}
		}

		if (_mouseX > curX && _mouseY > curY
				&& _mouseX < curX + curWidth && _mouseY < curY + curHeight)
			doBreak = 1;

		for (l = 0; l < numRoomObjs; l++) {
			if (_mouseX > _objectX1[l] && _mouseY > _objectY1[l]
					&& _mouseX < _objectX2[l] && _mouseY < _objectY2[l] && doBreak == 0) {
				roomX = roomObjX[l];
				roomY = roomObjY[l];
				trackFinal = trackObj[l];
				doBreak = 1;
				walkToObject = 1;
				startWalking();
			}
		}

		if (doBreak == 0) {
			roomX = CLIP(_mouseX, floorX1, floorX2);
			roomY = CLIP(_mouseY, floorY1 + feetHeight, floorY2);
			startWalking();
		}
		doBreak = 0;
	}

	return false;
}
Esempio n. 29
0
int main(void){

    // initialize
    init();
    
    while(1) {
        // input & process
        if (Stylus.Released) {
            clearButton();
        }
        if (Pad.Released.L || Pad.Released.R) {
            pushed_trig = 0;
        }
        if (Pad.Released.Left || Pad.Released.Y) {
            pushed_left = 0;
        }
        if (Pad.Released.Right || Pad.Released.A) {
            pushed_right = 0;
        }
        if (Pad.Released.Up || Pad.Released.X) {
            pushed_up = 0;
        }
        if (Pad.Released.Down || Pad.Released.B) {
            pushed_down = 0;
        }

        if (Stylus.Held) {
            if (!pushed_stylus) {
                if (result_print == 2) {
                    insertString(inputValue, inputPos, " ", 100);
                    inputValue[inputPos] = getStylusValue();
                    if (actionStylus2(checkValue(inputValue[inputPos])))
                        goto LOOP_END;
//                    if (on_graph) {
//                    
//                    } else {
//                    
//                    }
                } else {
                    insertString(expr, exprPos, " ", 200);
                    expr[exprPos] = getStylusValue();
                    insertString(p_expr, printStrPos, " ", 340);
                    p_expr[printStrPos] = expr[exprPos];

                    if (actionStylus(checkValue(expr[exprPos])))
                        goto LOOP_END;
                }
            }
            pushed_stylus = 1;
        }
        
        if (Pad.Held.L || Pad.Held.R) {
            if (!pushed_trig) {
                stylus_page = stylus_page == 1 ? 2 : 1;
                changeLabel(stylus_page);
            }
            pushed_trig = 1;
        }
        
        if (Pad.Held.Left || Pad.Held.Y) {
            if (!pushed_left) {
                moveCursor(-1); // left move
            }
            pushed_left = 1;
        }
        if (Pad.Held.Right || Pad.Held.A) {
            if (!pushed_right) {
                moveCursor(1); // right move
            }
            pushed_right = 1;
        }
        if (Pad.Held.Up || Pad.Held.X) {
            if (!pushed_up) {
                overviewPrevExpr();
            }
            pushed_up = 1;
        }
        if (Pad.Held.Down || Pad.Held.B) {
            if (!pushed_down) {
                overviewNextExpr();
            }
            pushed_down = 1;
        }
        // teardown
        printExpr();
        //moveCursor(1);
        
    LOOP_END:
        PA_WaitForVBL(); // process interrupt
    }
    return 0;
}
void QMultiLineEdit::home( bool mark )
{
    moveCursor( MoveLineStart, mark );
}