⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainwindow.cpp

📁 qgo-1.5.4-r3.tar.gz linux下一个很好玩的游戏
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/** 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 + -