void TEditor::deleteRange( size_t startPtr, size_t endPtr, Boolean delSelect ) { if( hasSelection() == True && delSelect == True ) deleteSelect(); else { setSelect(curPtr, endPtr, True); deleteSelect(); setSelect(startPtr, curPtr, False); deleteSelect(); } }
Win_data::Win_data(QWidget *parent,Qt::WindowFlags flags ) :QWidget(parent,flags|Qt::WindowStaysOnTopHint|Qt::FramelessWindowHint) { QFont font; font.setFamily(("simsun")); QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8")); //set the font and encode view = new MyView(this); view->setGeometry(10,10,280,380); radioButton_allSelect = new QRadioButton(this); radioButton_noneSelect = new QRadioButton(this); radioButton_allSelect->setText(QObject::tr("全选")); radioButton_noneSelect->setText(QObject::tr("全不选")); radioButton_allSelect->setGeometry(300,10,80,30); radioButton_noneSelect->setGeometry(300,50,80,30); button_delete = new QPushButton(this); button_delete->setText(QObject::tr("删除")); button_delete->setGeometry(300,90,80,30); button_copy = new QPushButton(this); button_copy->setText(QObject::tr("导出")); button_copy->setGeometry(300,130,80,30); button_close = new QPushButton(this); button_close->setText(QObject::tr("退出")); button_close->setGeometry(300,170,80,30); msgLabel = new QLabel(this); msgLabel->setGeometry(10,150,300,80); msgLabel->setAlignment(Qt::AlignHCenter); QObject::connect(button_delete,SIGNAL(clicked()),this,SLOT(deleteSelect())); QObject::connect(button_copy,SIGNAL(clicked()),view,SLOT(copySelected())); QObject::connect(button_close,SIGNAL(clicked()),this,SLOT(close())); QObject::connect(radioButton_allSelect,SIGNAL(toggled(bool)),view,SLOT(AllSelect(bool))); QObject::connect(radioButton_noneSelect,SIGNAL(toggled(bool)),view,SLOT(NoneSelect(bool))); QObject::connect(view,SIGNAL(signalShow(QString,Qt::GlobalColor)),this,SLOT(slotShow(QString,Qt::GlobalColor))); QObject::connect(view,SIGNAL(signalClearShow()),this,SLOT(slotClearShow())); }
void TEditor::handleEvent( TEvent& event ) { TView::handleEvent( event ); convertEvent( event ); Boolean centerCursor = Boolean(!cursorVisible()); uchar selectMode = 0; if( selecting == True || (getShiftState() & 0x03) != 0 ) selectMode = smExtend; switch( event.what ) { case evMouseDown: if( event.mouse.doubleClick == True ) selectMode |= smDouble; do { lock(); if( event.what == evMouseAuto ) { TPoint mouse = makeLocal( event.mouse.where ); TPoint d = delta; if( mouse.x < 0 ) d.x--; if( mouse.x >= size.x ) d.x++; if( mouse.y < 0 ) d.y--; if( mouse.y >= size.y ) d.y++; scrollTo(d.x, d.y); } setCurPtr(getMousePtr(event.mouse.where), selectMode); selectMode |= smExtend; unlock(); } while( mouseEvent(event, evMouseMove + evMouseAuto) ); break; case evKeyDown: if( event.keyDown.charScan.charCode == 9 || ( event.keyDown.charScan.charCode >= 32 && event.keyDown.charScan.charCode < 255 ) ) { lock(); if( overwrite == True && hasSelection() == False ) if( curPtr != lineEnd(curPtr) ) selEnd = nextChar(curPtr); insertText( &event.keyDown.charScan.charCode, 1, False); trackCursor(centerCursor); unlock(); } else return; break; case evCommand: switch( event.message.command ) { case cmFind: find(); break; case cmReplace: replace(); break; case cmSearchAgain: doSearchReplace(); break; default: lock(); switch( event.message.command ) { case cmCut: clipCut(); break; case cmCopy: clipCopy(); // hideSelect(); // JS 12.4.94 break; case cmPaste: clipPaste(); break; case cmUndo: undo(); break; case cmClear: deleteSelect(); break; case cmCharLeft: setCurPtr(prevChar(curPtr), selectMode); break; case cmCharRight: setCurPtr(nextChar(curPtr), selectMode); break; case cmWordLeft: setCurPtr(prevWord(curPtr), selectMode); break; case cmWordRight: setCurPtr(nextWord(curPtr), selectMode); break; case cmLineStart: setCurPtr(lineStart(curPtr), selectMode); break; case cmLineEnd: setCurPtr(lineEnd(curPtr), selectMode); break; case cmLineUp: setCurPtr(lineMove(curPtr, -1), selectMode); break; case cmLineDown: setCurPtr(lineMove(curPtr, 1), selectMode); break; case cmPageUp: setCurPtr(lineMove(curPtr, -(size.y-1)), selectMode); break; case cmPageDown: setCurPtr(lineMove(curPtr, size.y-1), selectMode); break; case cmTextStart: setCurPtr(0, selectMode); break; case cmTextEnd: setCurPtr(bufLen, selectMode); break; case cmNewLine: newLine(); break; case cmBackSpace: deleteRange(prevChar(curPtr), curPtr, True); break; case cmDelChar: deleteRange(curPtr, nextChar(curPtr), True); break; case cmDelWord: deleteRange(curPtr, nextWord(curPtr), False); break; case cmDelStart: deleteRange(lineStart(curPtr), curPtr, False); break; case cmDelEnd: deleteRange(curPtr, lineEnd(curPtr), False); break; case cmDelLine: deleteRange(lineStart(curPtr), nextLine(curPtr), False); break; case cmInsMode: toggleInsMode(); break; case cmStartSelect: startSelect(); break; case cmHideSelect: hideSelect(); break; case cmIndentMode: autoIndent = Boolean(!autoIndent); break; default: unlock(); return; } trackCursor(centerCursor); unlock(); break; } case evBroadcast: switch( event.message.command ) { case cmScrollBarChanged: checkScrollBar( event, hScrollBar, delta.x ); checkScrollBar( event, vScrollBar, delta.y ); break; default: return; } } clearEvent(event); }
void TEditor::clipCut() { if( clipCopy() == True ) deleteSelect(); }
void gameClient(sf::RenderWindow & window,char * mapName){ int i,/*displacementX=0,displacementY=0,*/ menu=0; gameMap_t map; // int redrawMMAP = 1; cursor_t gCur; gCur.status = 0; gCur.cell = NULL; player_t players; players.resourcesPlayer1 = 400; players.resourcesPlayer2 = 400; // player_t player2; unsigned int currentPlayerTurn=0; selection_t select; select.status=0; select.cell=NULL; createMap(&map); /* Set textures. */ sf::Texture background, interface_image,menu1,menu2,grind,cursor,pCourse,endTurn1,endTurn2,sel,enemy,fpT,spT,cT1,cT2,cB1,cB2; sf::Sprite gameBackground,gameInterface,gameMenu,gameGrind,gameCursor,aCell,gameEndTurn,cSel,cEnemy,cpT,cTc,cBc; menu1.loadFromFile("gameInterface/menu.png"); fpT.loadFromFile("gameInterface/fpTurn.png"); spT.loadFromFile("gameInterface/spTurn.png"); enemy.loadFromFile("gameInterface/enemyCell.png"); sel.loadFromFile("gameInterface/selected.png"); menu2.loadFromFile("gameInterface/menuConfirmed.png"); grind.loadFromFile("maps/grind.png"); endTurn1.loadFromFile("gameInterface/endTurn.png"); endTurn2.loadFromFile("gameInterface/endTurnConfirmed.png"); cT1.loadFromFile("gameInterface/cTank.png"); cT2.loadFromFile("gameInterface/cTankC.png"); cB1.loadFromFile("gameInterface/cBuggy.png"); cB2.loadFromFile("gameInterface/cBuggyC.png"); //test addUnit(&map,window,0,TANK,15,0); addUnit(&map,window,0,BUGGY,12,0); addUnit(&map,window,0,TANK,9,0); addUnit(&map,window,1,TANK,27,18); addUnit(&map,window,1,BUGGY,30,18); addUnit(&map,window,1,TANK,33,18); addObject(&map,window,0,20,12); addObject(&map,window,0,10,10); addObject(&map,window,0,30,8); cpT.setPosition(130,0); cursor.loadFromFile("gameInterface/setCell.png"); pCourse.loadFromFile("gameInterface/availableCell.png"); background.loadFromFile(mapName); interface_image.loadFromFile("gameInterface/mainInterface.png"); gameBackground.setTexture(background); cSel.setTexture(sel); aCell.setTexture(pCourse); gameGrind.setTexture(grind); gameInterface.setTexture(interface_image); cEnemy.setTexture(enemy); gameCursor.setTexture(cursor); drawMinMap(window,currentPlayerTurn,&map); while (window.isOpen()){ cameraMouseMove(window,&map); mouseEvents(window,&map); menu=gameSelection(window,gameMenu,menu1,menu2,gameEndTurn,endTurn1,endTurn2,cTc,cT1,cT2,cBc,cB1,cB2); gameBackground.setPosition(map.displacementX,map.displacementY); gameInterface.setPosition(-1,-1); gameMenu.setPosition(1700,0); gameEndTurn.setPosition(1500,5); cTc.setPosition(1680,750); cBc.setPosition(1680,890); selectUnit(&map,window,cSel,&select,currentPlayerTurn); if(select.status==1){ cSel.setPosition(select.cell->X,select.cell->Y); } sf::Event event; if (sf::Mouse::isButtonPressed(sf::Mouse::Left)&&menu==1){ if(pauseMenu(window)==0){ break; } } if (sf::Mouse::isButtonPressed(sf::Mouse::Left)&&menu>=3){ createUnit(&map,&players,currentPlayerTurn,menu,window,&select,gameBackground,gameInterface,gameMenu,gameEndTurn,cTc,cBc); } if (sf::Mouse::isButtonPressed(sf::Mouse::Left)&&menu==2){ isEnd(&map,window,endFn); getOP(&map,&players); getResources(&map,currentPlayerTurn,&players); deleteSelect(&select); overmind(&map,window,&select,aCell,cEnemy,&gCur,gameBackground,gameInterface,gameMenu,gameEndTurn,currentPlayerTurn,cTc,&players,cBc); endTurn(&map); Sleep(500); } if (sf::Mouse::isButtonPressed(sf::Mouse::Right)){ deleteSelect(&select); } while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) { window.close(); } } window.clear(sf::Color::Black); window.draw(gameBackground); drawUnits(&map,window); if(cursorConfirm(window,&map,gameCursor,&gCur)==1){ window.draw(gameCursor); } if(select.status==1){ window.draw(cSel); findWay(&map,window,&select,aCell,cEnemy,&gCur,gameBackground,gameInterface,gameMenu,gameEndTurn,currentPlayerTurn,cTc,&players,cBc); } window.draw(gameInterface); if(select.status==1){ pData(window,&select); } window.draw(gameMenu); window.draw(gameEndTurn); drawMinMap(window,currentPlayerTurn,&map); drawPlayer(window,currentPlayerTurn,&players); window.draw(cTc); window.draw(cBc); window.display(); } }
void TInputLine::handleEvent( TEvent& event ) { TView::handleEvent(event); int delta, anchor, i; if( (state & sfSelected) != 0 ) switch( event.what ) { case evMouseDown: if( canScroll(delta = mouseDelta(event)) ) do { if( canScroll(delta) ) { firstPos += delta; drawView(); } } while( mouseEvent( event, evMouseAuto ) ); else if (event.mouse.doubleClick) selectAll(True); else { anchor = mousePos(event); do { if( event.what == evMouseAuto && canScroll( delta = mouseDelta(event) ) ) firstPos += delta; curPos = mousePos(event); if( curPos < anchor ) { selStart = curPos; selEnd = anchor; } else { selStart = anchor; selEnd = curPos; } drawView(); } while (mouseEvent(event, evMouseMove | evMouseAuto)); } clearEvent(event); break; case evKeyDown: switch( ctrlToArrow(event.keyDown.keyCode) ) { case kbLeft: if( curPos > 0 ) curPos--; break; case kbRight: if( curPos < strlen(data) ) curPos++; break; case kbHome: curPos = 0; break; case kbEnd: curPos = strlen(data); break; case kbBack: if( curPos > 0 ) { strcpy( data+curPos-1, data+curPos ); curPos--; if( firstPos > 0 ) firstPos--; } break; case kbDel: if( selStart == selEnd ) if( curPos < strlen(data) ) { selStart = curPos; selEnd = curPos + 1; } deleteSelect(); break; case kbIns: setState(sfCursorIns, Boolean(!(state & sfCursorIns))); break; default: if( event.keyDown.charScan.charCode >= ' ' ) { if( (state & sfCursorIns) != 0 ) strcpy( data + curPos, data + curPos + 1 ); else deleteSelect(); if( strlen(data) < maxLen ) { if( firstPos > curPos ) firstPos = curPos; memmove( data + curPos + 1, data + curPos, strlen(data+curPos)+1 ); data[curPos++] = event.keyDown.charScan.charCode; } } else if( event.keyDown.charScan.charCode == CONTROL_Y) { *data = EOS; curPos = 0; } else return; } selStart = 0; selEnd = 0; if( firstPos > curPos ) firstPos = curPos; i = curPos - size.x + 3; if( firstPos < i ) firstPos = i; drawView(); clearEvent( event ); break; } }