📄 mainwindow.cpp
字号:
/** mainwindow.cpp - qGo's main window*/#include "misc.h"#include "qgo.h"#include "mainwin.h"#include "mainwindow.h"#include "mainwidget.h"#include "board.h"#include "tip.h"#include "setting.h"#include "icons.h"#include "newgame_gui.h"#include "newlocalgame_gui.h"#include "gameinfo_gui.h"#include "interfacehandler.h"#include "komispinbox.h"#include "nthmove_gui.h"#include "normaltools_gui.h"#include "parserdefs.h"#include "config.h"#include "move.h"#include "qnewgamedlg.h"#include "qgo_interface.h"#include <qaccel.h>#include <qmenubar.h>#include <qtoolbar.h>#include <qstatusbar.h>#include <qmessagebox.h>#include <qapplication.h>#include <qlistbox.h>#include <qwhatsthis.h>#include <qplatinumstyle.h>#include <qmotifstyle.h>#include <qmotifplusstyle.h>#include <qcdestyle.h>#include <qsgistyle.h>#include <qfiledialog.h>#include <qcheckbox.h>#include <qsplitter.h>//#include <qmultilineedit.h>#include <qtextedit.h>#include <qpushbutton.h>#include <qradiobutton.h>#include <qcombobox.h>#include <qslider.h>#include <qlineedit.h>#include <qtimer.h>#include <qpalette.h>#include <qtabwidget.h>#include <qlayout.h>//#ifdef USE_XPM#include ICON_PREFS#include ICON_GAMEINFO#include ICON_EXIT#include ICON_FILENEWBOARD#include ICON_FILENEW#include ICON_FILEOPEN#include ICON_FILESAVE#include ICON_FILESAVEAS#include ICON_TRANSFORM#include ICON_CHARSET#include ICON_RIGHTARROW#include ICON_LEFTARROW#include ICON_RIGHTCOMMENT#include ICON_LEFTCOMMENT#include ICON_TWO_RIGHTARROW#include ICON_TWO_LEFTARROW#include ICON_NEXT_VAR#include ICON_PREV_VAR#include ICON_MAIN_BRANCH#include ICON_START_VAR#include ICON_NEXT_BRANCH#include ICON_AUTOPLAY#include ICON_CUT#include ICON_PASTE#include ICON_DELETE#include ICON_INCREASE_SIZE#include ICON_DECREASE_SIZE#include ICON_FULLSCREEN#include ICON_WHATSTHIS#include ICON_MANUAL#include ICON_NAV_INTERSECTION#include ICON_COMPUTER_PLAY#include ICON_COORDS#include ICON_SOUND_ON#include ICON_SOUND_OFF//#endifMainWindow::MainWindow(QWidget* parent, const char* name, WFlags f): QMainWindow(parent, name, f), Misc<QString>(){ // this is very dirty : we do this because there seem to be no clean way to backtrack to the ClientWindow, which has stored the style :-( style = setting->readEntry("DEFAULT_STYLE") ; setProperty("icon", setting->image0); parent_ = 0; isFullScreen = 0; setFocusPolicy(QWidget::StrongFocus); setIcon(setting->image0); initActions(); initMenuBar(); initToolBar(); initStatusBar(); bool bb=setting->readBoolEntry("FILEBAR"); bb=false; if (!setting->readBoolEntry("FILEBAR")) viewFileBar->setOn(false); if (!setting->readBoolEntry("TOOLBAR")) viewToolBar->setOn(false); if (!setting->readBoolEntry("EDITBAR")) viewEditBar->setOn(false); if (!setting->readBoolEntry("STATUSBAR")) viewStatusBar->setOn(false); //statusBar()->hide(); if (!setting->readBoolEntry("MENUBAR")) viewMenuBar->setOn(false); //menuBar()->hide(); interfaceHandler = 0; // VIEW_COMMENT: 0 = see BOARDVERTCOMMENT, 1 = hor, 2 = ver // BOARDVERCOMMENT: 0 = hor, 1 = ver, 2 = not shown if (setting->readIntEntry("VIEW_COMMENT") == 2 || setting->readIntEntry("VIEW_COMMENT") == 0 && setting->readIntEntry("BOARDVERTCOMMENT_0")) { // show vertical comment splitter = new QSplitter(Horizontal, this); mainWidget = new MainWidget(splitter, "MainWidget"); splitter_comment = new QSplitter(Vertical, splitter); } else { splitter = new QSplitter(Vertical, this); mainWidget = new MainWidget(splitter, "MainWidget"); splitter_comment = new QSplitter(Horizontal, splitter); } splitter->setOpaqueResize(false);// mainWidget = new MainWidget(splitter, "MainWidget"); mainWidgetGuiLayout = new QGridLayout(mainWidget, 1, 1, 0, 0); if (setting->readBoolEntry("SIDEBAR_LEFT")) { mainWidgetGuiLayout->addWidget(mainWidget->toolsFrame, 0, 0); mainWidgetGuiLayout->addWidget(mainWidget->boardFrame, 0, 1); } else { mainWidgetGuiLayout->addWidget(mainWidget->toolsFrame, 0, 1); mainWidgetGuiLayout->addWidget(mainWidget->boardFrame, 0, 0); } board = mainWidget->board; CHECK_PTR(board); // Connect the mouseMove event of the board with the status bar coords widget connect(board, SIGNAL(coordsChanged(int, int, int,bool)), statusTip, SLOT(slotStatusTipCoords(int, int, int,bool))); //commentEdit = new QTextEdit(splitter_comment, "comments"); QWidget *commentWidget = new QWidget(splitter_comment); QVBoxLayout *commentLayout = new QVBoxLayout(commentWidget, 0,0,"commentLayout"); commentEdit = new QTextEdit(commentWidget, "comments"); commentLayout->addWidget(commentEdit); commentEdit2 = new QLineEdit( commentWidget, "commentEdit2" ); commentLayout->addWidget(commentEdit2); ListView_observers = new QListView(splitter_comment, "observers"); splitter->setResizeMode(mainWidget, QSplitter::KeepSize); splitter_comment->setResizeMode(ListView_observers, QSplitter::KeepSize); ListView_observers->addColumn(tr("Observers") + " "); ListView_observers->setProperty("focusPolicy", (int)QListView::NoFocus ); ListView_observers->setProperty("resizePolicy", (int)QListView::AutoOneFit ); ListView_observers->addColumn(tr("Rk")); ListView_observers->setProperty("focusPolicy", (int)QListView::NoFocus ); ListView_observers->setProperty("resizePolicy", (int)QListView::AutoOneFit ); ListView_observers->setSorting(1); // disable sorting; else sort rank would sort by rank string (col 2) instead of rank key (col 3, invisible) ListView_observers->setSorting(-1); commentEdit->setWordWrap(QTextEdit::WidgetWidth); //commentEdit2 = mainWidget->commentEdit2; //commentEdit2 = new QLineEdit( boardFrame, "commentEdit2" ); // connect(commentEdit2, SIGNAL(returnPressed()), board, SLOT(modifiedComment())); connect(commentEdit, SIGNAL(textChanged()), board, SLOT(updateComment())); connect(commentEdit2, SIGNAL(returnPressed()), board, SLOT(updateComment2())); // Connect Ctrl-E with MainWidget 'Edit' button. We need this to control the button // even when the sidebar is hidden.// connect(toggleEdit, SIGNAL(activated()), mainWidget->modeButton, SLOT(animateClick())); setCentralWidget(splitter); interfaceHandler = mainWidget->interfaceHandler; CHECK_PTR(interfaceHandler); interfaceHandler->fileImportASCII = fileImportASCII; interfaceHandler->fileImportASCIIClipB = fileImportASCIIClipB; interfaceHandler->fileImportSgfClipB = fileImportSgfClipB; interfaceHandler->navForward = navForward; interfaceHandler->navBackward = navBackward; interfaceHandler->navFirst = navFirst; interfaceHandler->navLast = navLast; interfaceHandler->navNextVar = navNextVar; interfaceHandler->navPrevVar = navPrevVar; interfaceHandler->navStartVar = navStartVar; interfaceHandler->navMainBranch = navMainBranch; interfaceHandler->navNextBranch = navNextBranch; interfaceHandler->navPrevComment = navPrevComment; interfaceHandler->navNextComment = navNextComment; interfaceHandler->navIntersection = navIntersection; //SL added eb 11 interfaceHandler->editCut = editCut; interfaceHandler->editPaste = editPaste; interfaceHandler->editPasteBrother = editPasteBrother; interfaceHandler->editDelete = editDelete; interfaceHandler->navEmptyBranch = navEmptyBranch; interfaceHandler->navCloneNode = navCloneNode; interfaceHandler->navNthMove = navNthMove; interfaceHandler->navAutoplay = navAutoplay; interfaceHandler->navSwapVariations = navSwapVariations; interfaceHandler->commentEdit = commentEdit; interfaceHandler->commentEdit2 = commentEdit2; interfaceHandler->statusMode = statusMode; interfaceHandler->statusTurn = statusTurn; interfaceHandler->statusMark = statusMark; interfaceHandler->statusNav = statusNav; interfaceHandler->slider = mainWidget->slider; interfaceHandler->mainWidget = mainWidget; interfaceHandler->fileNew = fileNew; interfaceHandler->fileNewBoard = fileNewBoard ; interfaceHandler->fileOpen = fileOpen ; // Create a timer instance // timerInterval = 2; // 1000 msec timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(slotTimerForward())); timerIntervals[0] = (float) 0.1; timerIntervals[1] = 0.5; timerIntervals[2] = 1.0; timerIntervals[3] = 2.0; timerIntervals[4] = 3.0; timerIntervals[5] = 5.0; updateBoard(); // restore board window reStoreWindowSize("0", false); updateFont();}MainWindow::~MainWindow(){ delete timer; delete commentEdit; delete mainWidget; delete splitter; // status bar delete statusMark; delete statusMode; delete statusNav; delete statusTurn; delete statusTip; // tool bar; delete editBar; delete toolBar; delete fileBar; // menu bar delete helpMenu; delete viewMenu; delete settingsMenu; delete navMenu; delete editMenu; delete fileMenu; delete importExportMenu; // Actions delete escapeFocus; delete toggleEdit; delete toggleMarks; delete fileNewBoard; delete fileNew; delete fileOpen; delete fileSave; delete fileSaveAs; delete fileClose; delete fileImportASCII; delete fileImportASCIIClipB; delete fileExportASCII; delete fileImportSgfClipB; delete fileExportSgfClipB; delete fileExportPic; delete fileExportPicClipB; delete fileQuit; delete editCut; delete editPaste; delete editPasteBrother; delete editDelete; delete editHideStones; //QQQ delete editNumberMoves; delete editMarkBrothers; delete editMarkSons; delete navBackward; delete navForward; delete navFirst; delete navLast; delete navPrevVar; delete navNextVar; delete navMainBranch; delete navStartVar; delete navNextBranch; delete navPrevComment; delete navNextComment; delete navIntersection; //SL added eb 11 delete navNthMove; delete navAutoplay; delete navEmptyBranch; delete navCloneNode; delete navSwapVariations; delete setPreferences; delete setGameInfo; delete viewFileBar; delete viewToolBar; delete viewEditBar; delete viewMenuBar; delete viewStatusBar; delete viewCoords; delete viewSidebar; delete viewComment; delete viewVertComment; delete viewPinComment; delete viewIncreaseSize; delete viewDecreaseSize; delete viewSaveSize; delete viewFullscreen;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -