📄 interfacehandler.cpp
字号:
/** interfacehandler.cpp*/#include "defines.h"#include "interfacehandler.h"#include "board.h"#include "textedit_gui.h"#include "normaltools_gui.h"#include "scoretools_gui.h"#include "mainwidget.h"#include "icons.h"#include "move.h"#include <qaction.h>#include <qpushbutton.h>#include <qlabel.h>#include <qtextedit.h>#include <qbuttongroup.h>#include <qlineedit.h>#include <qslider.h>#include <qtabwidget.h>//#ifdef USE_XPM#include ICON_NODE_BLACK#include ICON_NODE_WHITE//#endifstruct ButtonState{ bool navPrevVar, navNextVar, navBackward, navForward, navFirst, navStartVar, navMainBranch, navLast, navNextBranch, navPrevComment, navNextComment, navIntersection, editPaste, editPasteBrother; // SL added eb 11};InterfaceHandler::InterfaceHandler(){ buttonState = new ButtonState; scored_flag = false;}InterfaceHandler::~InterfaceHandler(){ delete buttonState;}GameMode InterfaceHandler::toggleMode(){ GameMode mode = board->getGameMode(); switch (mode) { case modeEdit: board->setMode(modeNormal);// modeButton->setEnabled(true); mainWidget->setToolsTabWidget(tabEdit, tabEnable); mainWidget->setToolsTabWidget(tabTeachGameTree, tabDisable); scoreButton->setEnabled(true); scoreButton->setText(QObject::tr("Score", "button label")); passButton->setEnabled(true); undoButton->setDisabled(true); // for later: undo button -> one step back resignButton->setDisabled(true); adjournButton->setDisabled(true); refreshButton->setDisabled(true); commentEdit->setReadOnly(false); //commentEdit2->setReadOnly(true); commentEdit2->setDisabled(true); statusMode->setText(" " + QObject::tr("N", "Board status line: normal mode") + " "); statusMark->setText(" - "); return modeNormal; case modeNormal: board->setMode(modeEdit);// modeButton->setEnabled(true); mainWidget->setToolsTabWidget(tabEdit, tabEnable); mainWidget->setToolsTabWidget(tabTeachGameTree, tabDisable); scoreButton->setDisabled(true); scoreButton->setText(QObject::tr("Score", "button label")); passButton->setDisabled(true); undoButton->setDisabled(true); resignButton->setDisabled(true); adjournButton->setDisabled(true); refreshButton->setDisabled(true); commentEdit->setReadOnly(false); //commentEdit2->setReadOnly(true); commentEdit2->setDisabled(true); statusMode->setText(" " + QObject::tr("E", "Board status line: edit mode") + " "); statusMark->setText(getStatusMarkText(board->getMarkType())); return modeEdit; case modeObserve: board->setMode(modeObserve);// modeButton->setDisabled(true); mainWidget->setToolsTabWidget(tabEdit, tabDisable); mainWidget->setToolsTabWidget(tabTeachGameTree, tabDisable); scoreButton->setEnabled(true); scoreButton->setText(QObject::tr("Edit", "button label")); passButton->setDisabled(true); undoButton->setDisabled(true); resignButton->setDisabled(true); adjournButton->setDisabled(true); refreshButton->setEnabled(true); commentEdit->setReadOnly(true); commentEdit2->setReadOnly(false); commentEdit2->setDisabled(false); editCut->setEnabled(false); editDelete->setEnabled(false); fileNew->setEnabled(false); fileNewBoard->setEnabled(false); fileOpen->setEnabled(false); statusMode->setText(" " + QObject::tr("O", "Board status line: observe mode") + " "); statusMark->setText(getStatusMarkText(board->getMarkType())); return modeObserve; case modeMatch : board->setMode(modeMatch);// modeButton->setDisabled(true); mainWidget->setToolsTabWidget(tabEdit, tabDisable); mainWidget->setToolsTabWidget(tabTeachGameTree, tabDisable); scoreButton->setEnabled(true); scoreButton->setText(QObject::tr("Edit", "button label")); passButton->setEnabled(true); passButton->setText(QObject::tr("Pass", "button label")); undoButton->setEnabled(true); resignButton->setEnabled(true); adjournButton->setEnabled(true); refreshButton->setEnabled(true); commentEdit->setReadOnly(true); commentEdit2->setReadOnly(false); commentEdit2->setDisabled(false); fileNew->setEnabled(false); fileNewBoard->setEnabled(false); fileOpen->setEnabled(false); statusMode->setText(" " + QObject::tr("P", "Board status line: play mode") + " "); statusMark->setText(getStatusMarkText(board->getMarkType())); return modeMatch; case modeComputer : // added eb 12 board->setMode(modeComputer);// modeButton->setDisabled(true); mainWidget->setToolsTabWidget(tabEdit, tabDisable); mainWidget->setToolsTabWidget(tabTeachGameTree, tabDisable); scoreButton->setEnabled(true); scoreButton->setText(QObject::tr("Edit", "button label")); passButton->setEnabled(true); passButton->setText(QObject::tr("Pass", "button label")); undoButton->setEnabled(true); resignButton->setEnabled(true); adjournButton->setEnabled(false); refreshButton->setEnabled(false); commentEdit->setReadOnly(true); commentEdit2->setReadOnly(false); commentEdit2->setDisabled(false); fileNew->setEnabled(false); fileNewBoard->setEnabled(false); fileOpen->setEnabled(false); statusMode->setText(" " + QObject::tr("P", "Board status line: play mode") + " "); statusMark->setText(getStatusMarkText(board->getMarkType())); return modeComputer; //end add eb 12 case modeTeach: board->setMode(modeTeach);// modeButton->setDisabled(true); mainWidget->setToolsTabWidget(tabEdit, tabDisable); mainWidget->setToolsTabWidget(tabTeachGameTree, tabEnable); scoreButton->setEnabled(true); scoreButton->setText(QObject::tr("Edit", "button label")); passButton->setEnabled(true); passButton->setText(QObject::tr("Pass", "button label")); undoButton->setEnabled(true); resignButton->setEnabled(true); adjournButton->setEnabled(true); refreshButton->setEnabled(true); commentEdit->setReadOnly(true); commentEdit2->setReadOnly(false); commentEdit2->setDisabled(false); fileNew->setEnabled(false); fileNewBoard->setEnabled(false); fileOpen->setEnabled(false); statusMode->setText(" " + QObject::tr("T", "Board status line: teach mode") + " "); statusMark->setText(getStatusMarkText(board->getMarkType())); return modeTeach; case modeScore:// modeButton->setDisabled(true); mainWidget->setToolsTabWidget(tabEdit, tabDisable);// mainWidget->setToolsTabWidget(tabNormalScore); scoreButton->setEnabled(true); scoreButton->setText(QObject::tr("Score", "button label")); passButton->setDisabled(true); undoButton->setEnabled(true); resignButton->setDisabled(true); adjournButton->setEnabled(true); refreshButton->setEnabled(true); commentEdit->setReadOnly(true); //commentEdit2->setReadOnly(true); commentEdit2->setDisabled(true); statusMode->setText(" " + QObject::tr("S", "Board status line: score mode") + " "); statusMark->setText(getStatusMarkText(board->getMarkType())); return modeScore; default: return modeNormal; }}void InterfaceHandler::setEditMode(){// modeButton->setOn(true); mainWidget->setToolsTabWidget(tabEdit);// normalTools->hide();// editTools->show(); board->setMode(modeEdit); statusMode->setText(" " + QObject::tr("E", "Board status line: edit mode") + " "); statusMark->setText(getStatusMarkText(board->getMarkType()));}void InterfaceHandler::setMoveData(int n, bool black, int brothers, int sons, bool hasParent, bool hasPrev, bool hasNext, int lastX, int lastY){ QString s(QObject::tr("Move") + " "); s.append(QString::number(n)); if (lastX >= 1 && lastX <= board->getBoardSize() && lastY >= 1 && lastY <= board->getBoardSize()) { s.append(" ("); s.append(black ? QObject::tr("W")+" " : QObject::tr("B")+" "); s.append(QString(QChar(static_cast<const char>('A' + (lastX<9?lastX:lastX+1) - 1))) + QString::number(board->getBoardSize()-lastY+1) + ")"); } else if (lastX == 20 && lastY == 20) // Pass { s.append(" ("); s.append(black ? QObject::tr("W")+" " : QObject::tr("B")+" "); s.append(" " + QObject::tr("Pass") + ")"); } moveNumLabel->setText(s); statusTurn->setText(" " + s.right(s.length() - 5) + " "); // Without 'Move ' statusNav->setText(" " + QString::number(brothers) + "/" + QString::number(sons)); s = black ? QObject::tr("Black to play") : QObject::tr("White to play"); turnLabel->setText(s); s = ""; s.append(QString::number(brothers)); if (brothers == 1) s.append(" " + QObject::tr("brother") + "\n"); else s.append(" " + QObject::tr("brothers") + "\n"); s.append(QString::number(sons)); if (sons == 1) s.append(" " + QObject::tr("son")); else s.append(" " + QObject::tr("sons")); varLabel->setText(s); if (board->getGameMode() == modeNormal || board->getGameMode() == modeEdit) { // Update the toolbar buttons navPrevVar->setEnabled(hasPrev); navNextVar->setEnabled(hasNext); navBackward->setEnabled(hasParent); navForward->setEnabled(sons); navFirst->setEnabled(hasParent); navStartVar->setEnabled(hasParent); navMainBranch->setEnabled(hasParent); navLast->setEnabled(sons); navNextBranch->setEnabled(sons); navSwapVariations->setEnabled(hasPrev); navPrevComment->setEnabled(hasParent); navNextComment->setEnabled(sons); navIntersection->setEnabled(true); //SL added eb 11 slider->setEnabled(true); } else if (board->getGameMode() == modeObserve) // add eb 8 { // Update the toolbar buttons navBackward->setEnabled(hasParent); navForward->setEnabled(sons); navFirst->setEnabled(hasParent); navLast->setEnabled(sons); navPrevComment->setEnabled(hasParent); navNextComment->setEnabled(sons); navIntersection->setEnabled(true); //SL added eb 11 slider->setEnabled(true); board->getBoardHandler()->display_incoming_move = !bool(sons); //SL added eb 9 - This is used to know whether we are browsing through a game or at the last move } else //end add eb 8 slider->setDisabled(true); // Update slider mainWidget->toggleSliderSignal(false); int mv = slider->maxValue(); // add eb 8 int v = slider->value(); if (slider->maxValue() < n) setSliderMax(n); // we need to be carefull with the slider if (board->getGameMode() != modeObserve || // normal case, slider is moved (board->getGameMode() == modeObserve && mv >= n) || // observing, but browsing (no incoming move) (board->getGameMode() == modeObserve && mv < n && v==n-1))// observing, but at the last move, and an incoming move occurs slider->setValue(n); // end add eb 8 mainWidget->toggleSliderSignal(true);}// clear the big field (offline)void InterfaceHandler::clearComment(){ commentEdit->clear();}// display textvoid InterfaceHandler::displayComment(const QString &c){ if (board->get_isLocalGame()) { if (c.isEmpty()) commentEdit->clear(); else commentEdit->setText(c); } else if (!c.isEmpty()) commentEdit->append(c);}// get the comment of commentEdit - the multiline fieldQString InterfaceHandler::getComment(){ return commentEdit->text();}// get the comment of commentEdit2 - the single lineQString InterfaceHandler::getComment2(){ QString text = commentEdit2->text(); // clear entry commentEdit2->setText(""); // don't show short text if (text.length() < 1) return 0; return text;}void InterfaceHandler::setMarkType(int m){ MarkType t; QString txt; switch(m) { case 0: t = markNone; break; case 1: t = markSquare; break; case 2: t = markCircle; break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -