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

📄 editor.cpp

📁 四川麻将程序代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include <stdlib.h> #include <kapp.h>#include <qdir.h>#include <qpixmap.h>#include <qimage.h>#include <qlayout.h>#include <qfiledlg.h>#include <qpainter.h>#include "Editor.h"#include "Editor.moc"#include "Preferences.h"#include <kmessagebox.h>#include<kglobal.h>#include<kconfig.h>     // Needed to use KConfig#include<klocale.h>     // Needed to use KLocale#include<kiconloader.h> //#include <ktoolbarradiogroup.h>#define ID_TOOL_NEW  100#define ID_TOOL_LOAD 101#define ID_TOOL_SAVE 102#define ID_TOOL_ADD 103#define ID_TOOL_DEL 104#define ID_TOOL_MOVE 105#define ID_TOOL_SELECT 106#define ID_TOOL_CUT 107#define ID_TOOL_COPY 108#define ID_TOOL_PASTE 109#define ID_TOOL_LEFT 110#define ID_TOOL_RIGHT 111#define ID_TOOL_UP 112#define ID_TOOL_DOWN 113#define ID_TOOL_STATUS 199 #define ID_META_EXIT 201// When we assign a tile to draw in a slot we do it in order from te following// table, wrapping on the tile number. It makes the tile layout look more// random.Editor::Editor(	QWidget* parent,	const char* name)    :    QDialog( parent, name, TRUE, 0 ), tiles(false){    int sWidth = (BoardLayout::width+2)*(tiles.qWidth());    int sHeight =( BoardLayout::height+2)*tiles.qHeight();    sWidth += 4*tiles.shadowSize();    drawFrame = new FrameImage( this, "drawFrame" );     drawFrame->setGeometry( 10, 40 ,sWidth ,sHeight);    drawFrame->setMinimumSize( 0, 0 );    drawFrame->setMaximumSize( 32767, 32767 );    drawFrame->setFocusPolicy( QWidget::NoFocus );    drawFrame->setBackgroundMode( QWidget::PaletteBackground );    drawFrame->setFontPropagation( QWidget::NoChildren );    drawFrame->setPalettePropagation( QWidget::NoChildren );    drawFrame->setFrameStyle( 49 );    drawFrame->setMouseTracking(true);   // setup the tool bar   setupToolbar();   QVBoxLayout *layout = new QVBoxLayout(this);   layout->addWidget(topToolbar,0);   layout->addWidget(drawFrame,1);   layout->activate();    resize( sWidth+60, sHeight+60);    setMinimumSize( sWidth+60, sHeight+60);    setMaximumSize( sWidth+60, sHeight+60);      // load in the tile set   tiles.loadTileset(preferences.tileset());   // tell the user what we do   setCaption(kapp->makeStdCaption(i18n("Edit board layout")));   connect( drawFrame, SIGNAL(mousePressed(QMouseEvent *) ),		SLOT(drawFrameMousePressEvent(QMouseEvent *)));    connect( drawFrame, SIGNAL(mouseMoved(QMouseEvent *) ),		SLOT(drawFrameMouseMovedEvent(QMouseEvent *)));    clean= true;   mode = insert;   numTiles=0;   statusChanged();}Editor::~Editor(){}// ---------------------------------------------------------void Editor::setupToolbar(){    KIconLoader *loader = KGlobal::iconLoader();    topToolbar = new KToolBar( this, "editToolBar" );    KToolBarRadioGroup *radio = new KToolBarRadioGroup(topToolbar);    // new game    topToolbar->insertButton(loader->loadIcon("filenew", KIcon::Toolbar),            ID_TOOL_NEW, TRUE, i18n("New board."));    // open game    topToolbar->insertButton(loader->loadIcon("fileopen", KIcon::Toolbar),            ID_TOOL_LOAD, TRUE, i18n("Open board."));    // save game    topToolbar->insertButton(loader->loadIcon("filesave", KIcon::Toolbar),            ID_TOOL_SAVE, TRUE, i18n(" Save board."));#ifdef FUTURE_OPTIONS    // Select     topToolbar->insertSeparator();    topToolbar->insertButton(loader->loadIcon("rectangle_select", KIcon::Toolbar),            ID_TOOL_SELECT, TRUE, i18n("Select."));    topToolbar->insertButton(loader->loadIcon("editcut", KIcon::Toolbar),            ID_TOOL_CUT, TRUE, i18n("Cut."));    topToolbar->insertButton(loader->loadIcon("editcopy", KIcon::Toolbar),            ID_TOOL_COPY, TRUE, i18n("Copy."));    topToolbar->insertButton(loader->loadIcon("editpaste", KIcon::Toolbar),            ID_TOOL_PASTE, TRUE, i18n("Paste."));    topToolbar->insertSeparator();    topToolbar->insertButton(loader->loadIcon("move", KIcon::Toolbar),            ID_TOOL_MOVE, TRUE, i18n("Move tiles."));#endif    topToolbar->insertButton(loader->loadIcon("pencil", KIcon::Toolbar),            ID_TOOL_ADD, TRUE, i18n("Add tiles."));    topToolbar->insertButton(loader->loadIcon("editdelete", KIcon::Toolbar),            ID_TOOL_DEL, TRUE, i18n("Remove tiles."));    topToolbar->setToggle(ID_TOOL_ADD);    topToolbar->setToggle(ID_TOOL_MOVE);    topToolbar->setToggle(ID_TOOL_DEL);    topToolbar->toggleButton(ID_TOOL_ADD);    radio->addButton(ID_TOOL_ADD);#ifdef FUTURE_OPTIONS    radio->addButton(ID_TOOL_MOVE);#endif        radio->addButton(ID_TOOL_DEL);    // board shift    topToolbar->insertSeparator();    topToolbar->insertButton(loader->loadIcon("back", KIcon::Toolbar),            ID_TOOL_LEFT, TRUE, i18n("Shift left."));    topToolbar->insertButton(loader->loadIcon("up", KIcon::Toolbar),            ID_TOOL_UP, TRUE, i18n("Shift up."));    topToolbar->insertButton(loader->loadIcon("down", KIcon::Toolbar),            ID_TOOL_DOWN, TRUE, i18n("Shift down."));    topToolbar->insertButton(loader->loadIcon("forward", KIcon::Toolbar),            ID_TOOL_RIGHT, TRUE, i18n("Shift right."));    topToolbar->insertSeparator();    topToolbar->insertButton(loader->loadIcon("exit", KIcon::Toolbar),            ID_META_EXIT, TRUE, i18n("Exit."));    // status in the toolbar for now (ick)    theLabel = new QLabel(statusText(), topToolbar);    int lWidth = theLabel->sizeHint().width();    topToolbar->insertWidget(ID_TOOL_STATUS,lWidth, theLabel );     topToolbar->alignItemRight( ID_TOOL_STATUS, true );     //addToolBar(topToolbar);   connect( topToolbar,  SIGNAL(clicked(int) ), SLOT( topToolbarOption(int) ) );    topToolbar->updateRects(0);     topToolbar->setFullSize(true);    topToolbar->setBarPos(KToolBar::Top);//    topToolbar->enableMoving(false);    topToolbar->adjustSize();    setMinimumWidth(topToolbar->width());}                   void Editor::statusChanged(void) {	bool canSave = ((numTiles !=0) && ((numTiles & 1) == 0));	theLabel->setText(statusText()); 	topToolbar->setItemEnabled( ID_TOOL_SAVE, canSave); }void Editor::topToolbarOption(int option) {    switch(option) {	case ID_TOOL_NEW:		newBoard();				break;	case ID_TOOL_LOAD:		loadBoard();		break;	case ID_TOOL_SAVE:		saveBoard();		break;	case ID_TOOL_LEFT:		theBoard.shiftLeft();		repaint(false);	        break;	case ID_TOOL_RIGHT:		theBoard.shiftRight();		repaint(false);	        break;	case ID_TOOL_UP:		theBoard.shiftUp();		repaint(false);	        break;	case ID_TOOL_DOWN:		theBoard.shiftDown();		repaint(false);	        break;	case ID_TOOL_DEL:			mode=remove;			break;	case ID_TOOL_MOVE:			mode=move;			break;	case ID_TOOL_ADD:			mode = insert;		break;	case ID_META_EXIT:			close();		break;	default:	break;    }}QString Editor::statusText(void) {	QString buf;	int x=currPos.x;	int y=currPos.y;	int z= currPos.e;		if (z == 100)		z = 0;	else		z=z+1;	if (x >=BoardLayout::width || x <0 || y >=BoardLayout::height || y <0)		x = y = z = 0;	buf = QString::fromUtf8(QCString().sprintf(i18n("Tiles: %3.3d Pos: %2.2d,%2.2d,%2.2d").utf8().data(), numTiles,		x,y,z) );	return buf;}void Editor::loadBoard(void) {    if ( !testSave() )	return;    KURL url = KFileDialog::getOpenURL( 				NULL, 				"*.layout|Board layout (*.layout)\n"				"*.*|All files (*.*)", 				this, 				i18n("Open board layout." ));   if ( url.isEmpty() )        return;    theBoard.loadBoardLayout( url.path() );    repaint(false);}// Clear out the contents of the board. Repaint the screen// set values to their defaults.void Editor::newBoard(void) {    if (!testSave())	return;    theBoard.clearBoardLayout();    clean=true;    numTiles=0;    statusChanged();    repaint(false);}bool Editor::saveBoard(void) {    // get a save file name    KURL url = KFileDialog::getSaveURL( 				NULL, 				"*.layout|Board layout (*.layout)\n"				"*.*|All files (*.*)", 				this, 				i18n("Save board layout." ));   if( !url.isLocalFile() )   {      KMessageBox::sorry( this, i18n( "Only saving to local files currently supported." ) );      return false;   }    if ( url.isEmpty() )       return false;    QFileInfo f( url.path() );    if ( f.exists() ) {	// if it already exists, querie the user for replacement	int res=KMessageBox::warningYesNo(this, 			i18n("A file with that name "					   "already exists, do you "					   "wish to overwrite it?"),

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -