コード例 #1
0
ファイル: map.cpp プロジェクト: jjermann/freecnc_redalert
/** @TODO Map loading goes here.
 */
void CnCMap::loadMap(const char* mapname, LoadingScreen* lscreen) {
    char* buff;
    loading = true;
    missionData.mapname = mapname;
    /* Load the ini part of the map */
    asprintf(&buff,"Reading %s.INI",missionData.mapname);
    lscreen->setCurrentTask(buff);
    free(buff);
    loadIni();

    /* Load the bin part of the map (the tiles) */
    asprintf(&buff,"Loading %s.BIN",missionData.mapname);
    lscreen->setCurrentTask(buff);
    free(buff);
    if (maptype == GAME_TD)
        loadBin();

    //   Path::setMapSize(width, height);
    p::ppool->setAlliances();
    if (gamemode == 2) {
        Sint32 len = strlen("ready\n");
        Sint32 result = pc::conn->send((const Uint8 *)"ready\n", len);
        if (result < len) {
            logger->error("error occurred when sending to server.\n");
            throw LoadMapError();
        }
    }

    loading = false;
    loaded = true;
}
コード例 #2
0
 void sm::BoostPropertyTree::load(const boost::filesystem::path& fileName) {
   switch(getFileFormatAndThrowIfUnknown(fileName)){
     case XML:
       loadXml(fileName);
       break;
     case INI:
       loadIni(fileName);
       break;
     case JSON:
       loadJson(fileName);
       break;
     case INFO:
       loadInfo(fileName);
       break;
   }
 }
コード例 #3
0
BurstSearchWidget::BurstSearchWidget(QWidget *parent, AlexData *data) :
    QWidget(parent),
    ui(new Ui::BurstSearchWidget)
{
    ui->setupUi(this);
    if(data==NULL) qFatal("data not initialized");
    ad=data;

    connect(ui->pushButtonStart,SIGNAL(clicked()),this,SLOT(runBurstSearch()));

    ui->lineEditIni->addButton(edt=new JKStyledButton(JKStyledButton::SelectFile, ui->lineEditIni, ui->lineEditIni));
    edt->setFilter(tr("AlexEval ini files(*.ini);;All Files (*.*)"));
    edt->setInitPath(ad->currentDir);
    ui->groupBoxMoreOptions->setVisible(false);
    ui->frame->setVisible(false);

    connect(ui->lineEditIni,SIGNAL(editingFinished()),SLOT(loadIni()));
//    connect(ui->comboBoxMethod,SIGNAL(currentIndexChanged(int)),this,SLOT(setMethodSingle(int)));
    connect(ui->comboBoxMethod,SIGNAL(currentIndexChanged(int)),this,SLOT(setMethod()));
    connect(ui->comboBoxMethodDual,SIGNAL(currentIndexChanged(int)),this,SLOT(setMethodDual(int)));
    ui->comboBoxMethodDual->addItem("DCBS Extended");
//    JKQtPlotter* plot = NULL;
    setParameters();
}
コード例 #4
0
ファイル: mainwindow.cpp プロジェクト: kubanecxxx/StMaster
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),
    client(new KelnetClient(this)),
    Map(NULL)
{
    ui->setupUi(this);
    connect(client,SIGNAL(Connected()),this,SLOT(Connected()));
    connect(client,SIGNAL(Disconnected()),this,SLOT(Disconnected()));
    connect(client,SIGNAL(CoreStatus(QString&)),this,SLOT(NewCoreStatus(QString&)));

    CoreStatus = new QLabel(this);
    statusBar()->addPermanentWidget(CoreStatus);

    Led = new HLed(this);
    Led->turnOff();
    statusBar()->addPermanentWidget(Led);

    Timer = new QTimer(this);
    Timer->setInterval(500);
    connect(this,SIGNAL(TimerStart()),Timer,SLOT(start()));
    connect(this,SIGNAL(TimerStop()),Timer,SLOT(stop()));
    connect(Timer,SIGNAL(timeout()),this,SLOT(Timeout()));

    MapFile = new QLabel(this);
    MapFile->setText("No map file");
    ui->mainToolBar->addSeparator();
    ui->mainToolBar->addWidget(MapFile);


    QStringList header;
    header << "Name" << "Type" << "Address" << "Period" << "Value" << "Float"  << "Modify";
    ui->Table->setHorizontalHeaderLabels(header);
    connect(ui->Table,SIGNAL(AddNewRow()),this,SLOT(AddNewRow()));
    connect(ui->Table,SIGNAL(EditRow(int)),this,SLOT(EditRow(int)));
    connect(ui->Table,SIGNAL(DeleteRow(int)),this,SLOT(RemoveRow(int)));
    connect(ui->Table,SIGNAL(cellDoubleClicked(int,int)),this,SLOT(CellDoubleClicked(int,int)));
    connect(ui->Table,SIGNAL(cellChanged(int,int)),this,SLOT(CellActivated(int,int)));

    MapFilePath = "/home/kubanec/workspace/ARMCM4-STM32F407-DISCOVERY/build/test.map";
    Map = new MapFileClass(MapFilePath, variables,this);

    //upper part with plots
    GraphSplitter = new QSplitter();
    ui->verticalLayout_2->addWidget(GraphSplitter);
    GraphSplitter->setOrientation(Qt::Vertical);
    GraphSplitter->setContextMenuPolicy(Qt::ActionsContextMenu);
    GraphSplitter->addAction(ui->actionAdd_new_plot);
    plotMenu = new QMenu(this);
    plotMenu->addAction(ui->actionAdd_new_plot);
    plotMenu->addSeparator();
    plotMenu->addAction(ui->actionEdit_plot);
    plotMenu->addAction(ui->actionRemove_plot);

    connect(ui->actionRefresh,SIGNAL(triggered()),Map,SLOT(FileChanged()));

    ui->mainToolBar->insertWidget(ui->actionConnect,ui->toolOpen);
    ui->mainToolBar->insertSeparator(ui->actionConnect);
    ui->mainToolBar->insertWidget(ui->actionRefresh,ui->toolMap);
    connect(ui->toolOpen,SIGNAL(clicked()),this,SLOT(on_actionOpen_triggered()));
    connect(ui->toolMap,SIGNAL(clicked()),this,SLOT(on_actionMapFile_triggered()));

    for (int i = 0 ; i < recentHistorySize; i++)
    {
        QAction * a = new QAction(ui->toolOpen);
        ui->toolOpen->addAction(a);
        connect(a,SIGNAL(triggered()),this,SLOT(action_openFile()));
        a->setVisible(false);

        a = new QAction(ui->toolMap);
        ui->toolMap->addAction(a);
        connect(a,SIGNAL(triggered()),this,SLOT(action_loadMapFile()));
        a->setVisible(false);
    }

    loadIni();
    clearWorkspace();
}
コード例 #5
0
ファイル: fontbuilder.cpp プロジェクト: chidean/fontbuilder
void FontBuilder::on_listView_activated(const QModelIndex &index)
{
    loadIni(m_model->data(index, Qt::EditRole).toString());
}
コード例 #6
0
ファイル: frmlog.cpp プロジェクト: hominlinx/cppbed
/*************************
 *
 *  frmLog类
 *
 *************************/
frmLog::frmLog(QWidget *parent)
	: QDialog(parent)
{
	ui.setupUi(this);
	this->setWindowFlags(windowFlags()  &~ Qt::WindowFullscreenButtonHint &~ Qt::WindowMinMaxButtonsHint);
	ui.tabWidget->setCurrentIndex(0);

	pFrmPlayLog = 0;

	onProtocolSelect(0);	// 手动发送类型默认为CAN

	fillComPorts();
    connect(&mSerial, SIGNAL(readyRead()), this, SLOT(onReadData()));

	QTimer *tmrLog = new QTimer();
	connect(tmrLog,SIGNAL(timeout()),this,SLOT(onTimerLog()));
	tmrLog->start(20);

	/* 编程相关 */
	txtProg = new CodeEditor(ui.tab_2);
	txtProg->setStyleSheet(SS_CSHELL);
    txtProg->setObjectName(QStringLiteral("txtProg"));
	QFile file(":/emuToolQt/sample_script.txt");
	if (file.open(QFile::ReadOnly | QFile::Text))
		txtProg->setPlainText(file.readAll());
	// Tab键的宽度
	txtProg->setTabStopWidth(txtProg->fontMetrics().width("ab", 2));

	QSplitter *splitter = new QSplitter(Qt::Vertical,0); 
	splitter->addWidget(txtProg);
	ctlConsole = new QTextEdit();
	ctlConsole->setReadOnly(true);
	splitter->addWidget(ctlConsole);

	// 分隔栏比例
	splitter->setHandleWidth(5);
	splitter->setStretchFactor(0, 80);
	splitter->setStretchFactor(1, 20);
    ui.verticalLayout_3->addWidget(splitter);
	mKeywords << "\\bchar\\b" << "\\bclass\\b" << "\\bconst\\b"
                    << "\\bdouble\\b" << "\\binline\\b" << "\\bint\\b"
                    << "\\blong\\b" << "\\bshort\\b"  << "\\bsigned\\b"
                    << "\\bstatic\\b" << "\\bstruct\\b" << "\\btypedef\\b" 
                    << "\\bunion\\b" << "\\bunsigned\\b" 
                    << "\\bvoid\\b" << "\\bvolatile\\b" << "\\bif\\b"
					<< "\\bfor\\b" << "\\bwhile\\b" << "\\bdo\\b" << "\\bgoto\\b"
					<< "\\bswitch\\b" << "\\bcase\\b" << "\\bbreak\\b" << "\\bdefault\\b" << "\\bcontinue\\b"
					<< "\\b#define\\b" << "\\b#ifdef\\b" << "\\b#else\\b" << "\\b#endif\\b"
					<< "\\b#if\\b" << "\\b#ifdef\\b" << "\\b#ifndef\\b" << "\\breturn\\b";
	hlt = new Highlighter(txtProg->document(), mKeywords);


	isRunning = false;
	tmrProg = new QTimer();
	connect(tmrProg,SIGNAL(timeout()),this,SLOT(onTimerProg()));
	tmrProg->start(this->SLEEP_INTERVAL);	// timer,用于自动发送

	gpFrmLog = this;
	connect(this,SIGNAL(sigMsgBox(QString)),this,SLOT(onMsgBox(QString)));
	connect(this,SIGNAL(sigCmdToLinux(QString)),this,SLOT(onCmdToLinux(QString)));

	sMonitorLine = "";
	sLastLine = "";
	sReadLinePattern = "";
	sMonitorPattern = "";

    ui.txtComInfo->setStyleSheet(SS_MONITOR);
	// 事件过滤器,获取按键事件,这么做可以不要重新封装一个QTextEdit的派生类
	ui.txtComInfo->installEventFilter(this);

	loadIni();
}
コード例 #7
0
ファイル: dlgcd.c プロジェクト: OS2World/MM-SOUND-CD2MP3PM
MRESULT EXPENTRY wpCD(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
{
	switch (msg)
	{
		case WM_INITDLG:
		{
			ULONG rc, i;
			HFILE CDDevice;
			ULONG action;
			ULONG len;
			struct
			{
				USHORT CountCD;
				USHORT FirstCD;
			} CDInfo;
			FIELDINFO *firstFieldInfo, *posFieldInfo, *splitFieldInfo;
			FIELDINFOINSERT fieldInfoInsert;
			CNRINFO cnrInfo;
			cnrInfo.cb = sizeof(cnrInfo);

			firstFieldInfo = posFieldInfo = allocaFieldInfo(hwnd, CT_TRACK, NUM_FIELDS);
			posFieldInfo->flData = CFA_BITMAPORICON | CFA_HORZSEPARATOR | CFA_SEPARATOR;
			posFieldInfo->flTitle = CFA_CENTER;
			posFieldInfo->pTitleData = "Icon";
			posFieldInfo->offStruct = FIELDOFFSET(RECORDCORE,hptrIcon);
			fieldInfo[0] = posFieldInfo;

			posFieldInfo = posFieldInfo->pNextFieldInfo;
			posFieldInfo->flData = CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR;
			posFieldInfo->flTitle = CFA_CENTER;
			posFieldInfo->pTitleData = "Filename";
			posFieldInfo->offStruct = FIELDOFFSET(RECORDCORE,pszIcon);
			fieldInfo[1] = posFieldInfo;

			cnrInfo.pFieldInfoLast = posFieldInfo;

			posFieldInfo = posFieldInfo->pNextFieldInfo;
			posFieldInfo->flData = CFA_ULONG | CFA_HORZSEPARATOR | CFA_SEPARATOR;
			posFieldInfo->flTitle = CFA_CENTER;
			posFieldInfo->pTitleData = "Track #";
			posFieldInfo->offStruct = FIELDOFFSET(CDTRACKRECORD,track);
			fieldInfo[2] = posFieldInfo;

			posFieldInfo = posFieldInfo->pNextFieldInfo;
			posFieldInfo->flData = CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR | CFA_FIREADONLY;
			posFieldInfo->flTitle = CFA_CENTER;
			posFieldInfo->pTitleData = "Type";
			posFieldInfo->offStruct = FIELDOFFSET(CDTRACKRECORD,typepointer);
			fieldInfo[3] = posFieldInfo;

			posFieldInfo = posFieldInfo->pNextFieldInfo;
			posFieldInfo->flData = CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR | CFA_FIREADONLY;
			posFieldInfo->flTitle = CFA_CENTER;
			posFieldInfo->pTitleData = "Time";
			posFieldInfo->offStruct = FIELDOFFSET(CDTRACKRECORD,timepointer);
			fieldInfo[4] = posFieldInfo;

			posFieldInfo = posFieldInfo->pNextFieldInfo;
			posFieldInfo->flData = CFA_ULONG | CFA_HORZSEPARATOR | CFA_SEPARATOR;
			posFieldInfo->flTitle = CFA_CENTER;
			posFieldInfo->pTitleData = "Size";
			posFieldInfo->offStruct = FIELDOFFSET(CDTRACKRECORD,size);
			fieldInfo[5] = posFieldInfo;

			posFieldInfo = posFieldInfo->pNextFieldInfo;
			posFieldInfo->flData = CFA_ULONG | CFA_HORZSEPARATOR | CFA_SEPARATOR;
			posFieldInfo->flTitle = CFA_CENTER;
			posFieldInfo->pTitleData = "MP3 Size";
			posFieldInfo->offStruct = FIELDOFFSET(CDTRACKRECORD,mp3size);
			fieldInfo[6] = posFieldInfo;

			posFieldInfo = posFieldInfo->pNextFieldInfo;
			posFieldInfo->flData = CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR;
			posFieldInfo->flTitle = CFA_CENTER;
			posFieldInfo->pTitleData = "Title";
			posFieldInfo->offStruct = FIELDOFFSET(CDTRACKRECORD,titleptr);
			fieldInfo[7] = posFieldInfo;

			posFieldInfo = posFieldInfo->pNextFieldInfo;
			posFieldInfo->flData = CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR;
			posFieldInfo->flTitle = CFA_CENTER;
			posFieldInfo->pTitleData = "Artist";
			posFieldInfo->offStruct = FIELDOFFSET(CDTRACKRECORD,artistptr);
			fieldInfo[8] = posFieldInfo;

			posFieldInfo = posFieldInfo->pNextFieldInfo;
			posFieldInfo->flData = CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR;
			posFieldInfo->flTitle = CFA_CENTER;
			posFieldInfo->pTitleData = "Album";
			posFieldInfo->offStruct = FIELDOFFSET(CDTRACKRECORD,albumptr);
			fieldInfo[9] = posFieldInfo;

			posFieldInfo = posFieldInfo->pNextFieldInfo;
			posFieldInfo->flData = CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR;
			posFieldInfo->flTitle = CFA_CENTER;
			posFieldInfo->pTitleData = "Year";
			posFieldInfo->offStruct = FIELDOFFSET(CDTRACKRECORD,yearptr);
			fieldInfo[10] = posFieldInfo;

			posFieldInfo = posFieldInfo->pNextFieldInfo;
			posFieldInfo->flData = CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR;
			posFieldInfo->flTitle = CFA_CENTER;
			posFieldInfo->pTitleData = "Genre";
			posFieldInfo->offStruct = FIELDOFFSET(CDTRACKRECORD,genreptr);
			fieldInfo[11] = posFieldInfo;

			posFieldInfo = posFieldInfo->pNextFieldInfo;
			posFieldInfo->flData = CFA_STRING | CFA_HORZSEPARATOR | CFA_SEPARATOR;
			posFieldInfo->flTitle = CFA_CENTER;
			posFieldInfo->pTitleData = "Comment";
			posFieldInfo->offStruct = FIELDOFFSET(CDTRACKRECORD,commentptr);
			fieldInfo[12] = posFieldInfo;

			fieldInfoInsert.cb = sizeof(fieldInfoInsert);
			fieldInfoInsert.pFieldInfoOrder = (FIELDINFO *) CMA_FIRST;
			fieldInfoInsert.fInvalidateFieldInfo = TRUE;
			fieldInfoInsert.cFieldInfoInsert = NUM_FIELDS;

			insertFieldInfo(hwnd, CT_TRACK, firstFieldInfo, &fieldInfoInsert);

			cnrInfo.xVertSplitbar = 100;
			cnrInfo.flWindowAttr = CV_DETAIL | CA_DETAILSVIEWTITLES;
			WinSendDlgItemMsg(hwnd,CT_TRACK,CM_SETCNRINFO, MPFROMP(&cnrInfo),
				MPFROMLONG(CMA_PFIELDINFOLAST | CMA_XVERTSPLITBAR | CMA_FLWINDOWATTR));


			loadConfig(CFGFILE, &grabbers, &countGrabbers);
			for(i = 0; i < countGrabbers; i++)
				insertItemText(hwnd,CB_GRABBER,LIT_END,grabbers[i].id);
			selectItem(hwnd,CB_GRABBER,0);

			setText(hwnd, EF_TITLE, "Title");

			/* wohw, this is too powerful, need cooling */

			len = sizeof(CDInfo);
			if(!DosOpen("\\DEV\\CD-ROM2$", &CDDevice, &action, 0,
							FILE_NORMAL, OPEN_ACTION_OPEN_IF_EXISTS,
							OPEN_SHARE_DENYNONE | OPEN_ACCESS_READONLY, NULL))
			{
				if(!DosDevIOCtl(CDDevice, 0x82, 0x60, NULL, 0, NULL, &CDInfo, len, &len))
				{
					for(i = 0; i < CDInfo.CountCD; i++)
					{
						char driveLetter[3] = { (char) ('A' + CDInfo.FirstCD + i), ':', 0};
						insertItemText(hwnd,CB_DRIVE,LIT_END,driveLetter);
					}
				}
				DosClose(CDDevice);
			}

			selectItem(hwnd,CB_DRIVE,0);

			wpCT = WinSubclassWindow(WinWindowFromID(hwnd,CT_TRACK),wpCTTrack);

			dataIco = WinLoadPointer(HWND_DESKTOP, NULLHANDLE, ICO_DATA);
			trackIco = WinLoadPointer(HWND_DESKTOP, NULLHANDLE, ICO_TRACK);
			loadIni(hwnd);
			return 0;
		}
		case WM_COMMAND:
			return processCommand(hwnd,mp1,mp2);
		case WM_CONTROL:
			return processControl(hwnd,mp1,mp2);
		case WM_ADJUSTFRAMEPOS:
		{
			SWP *pos = (SWP*) PVOIDFROMMP(mp1);
			static int bitRateCheck = 0;
			if(pos->fl & SWP_SIZE)
			{
				SWP ctpos;
				WinQueryWindowPos(WinWindowFromID(hwnd, CT_TRACK), &ctpos);
				WinSetWindowPos  (WinWindowFromID(hwnd, CT_TRACK), 0, 0, ctpos.y,
									  pos->cx, pos->cy - ctpos.y,
									  SWP_SIZE | SWP_SHOW | SWP_MOVE);
			}

			if((pos->fl & SWP_SHOW) && bitRateChanged != bitRateCheck)
			{
				bitRateCheck = bitRateChanged;
				refreshFieldInfo(hwnd, CT_TRACK);
			}
			break;
		}

		case WM_MENUEND:
			removeSourceEmphasis(HWNDFROMMP(mp2),&sourceEmphasisInfo);
			return 0;

		case WM_CLOSE:
		{
			WinDestroyPointer(dataIco);
			WinDestroyPointer(trackIco);
			free(grabbers);
			saveIni(hwnd);

			/* delete all current records */
			CDTRACKRECORD *record = (CDTRACKRECORD *) enumRecords(hwnd, CT_TRACK, NULL, CMA_FIRST);
			while(record && record != (CDTRACKRECORD *) -1)
			{
				free(record->record.pszIcon);
				record = (CDTRACKRECORD *) enumRecords(hwnd, CT_TRACK, (RECORDCORE *) record, CMA_NEXT);
			}

			removeRecords(hwnd, CT_TRACK, NULL, 0);

			removeFieldInfo(hwnd,CT_TRACK, NULL, 0);
			return 0;
		}

		case WM_CHAR:
			if(SHORT2FROMMP(mp2) == VK_ESC)
				return 0;
			else
				break;

		/* back from worker thread */
		case DLGCD_REFRESH:
			dlgcd_refresh2(mp1,mp2);
			return 0;

      case CDDB_FUZZYMATCH:
		{
			CDDBQUERY_DATA *matches = (CDDBQUERY_DATA *) mp1,
								*chosen	= (CDDBQUERY_DATA *) mp2;
         FUZZYMATCHCREATEPARAMS data = {matches,chosen};

			WinDlgBox(HWND_DESKTOP, hwnd, wpMatch, NULLHANDLE, DLG_MATCH, &data);
              
			return 0;
		}

	}

	return WinDefDlgProc( hwnd, msg, mp1, mp2 );
}
コード例 #8
0
ファイル: mainwindow.cpp プロジェクト: frl1317/UIEdit
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),
    copyView(NULL)
{
    ui->setupUi(this);

    //model.setFilter(QDir::AllDirs);
    model.setNameFilters( QStringList() << "*.xml");// << "*.lua"
    model.setNameFilterDisables(false);
    ui->fileTreeView->setModel(&model);
    ui->fileTreeView->setColumnHidden( 0, true);
    ui->fileTreeView->setColumnHidden( 1, true);
    ui->fileTreeView->setColumnHidden( 2, true);
    ui->fileTreeView->setColumnHidden( 3, true);
    connect(ui->fileTreeView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(treeViewClicked(const QModelIndex &)));
    connect(ui->fileTreeView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(treeViewContextMenu(QPoint)));

    loadIni();

    PropertyWidget *propertybrowser = PropertyWidget::getInstance();
    ui->dockWidget_2->setWidget(propertybrowser);
    connect( propertybrowser->variantManager, SIGNAL(valueChanged(QtProperty*,QVariant)), this, SLOT(propertyChanged(QtProperty*,QVariant)));
    connect( propertybrowser->variantManager, SIGNAL(attributeChanged(QtProperty *, const QString, const QVariant)), this, SLOT(attributeChanged(QtProperty *, const QString, const QVariant)));

    //控制台输出
    PrintfDockWidget *dockWidget = PrintfDockWidget::getInstance();
    addDockWidget(Qt::BottomDockWidgetArea, dockWidget);

    //初始化大纲
    QStringList header;
    header << "对象" << "类型";
    ui->treeWidget->setColumnCount(2);
    ui->treeWidget->setAlternatingRowColors(true);
    ui->treeWidget->setHeaderLabels(header);
    ui->treeWidget->setColumnWidth( 0, 200);
    connect( ui->treeWidget, SIGNAL(clicked(QModelIndex)), this, SLOT(clickedOutlineTreeItem(QModelIndex)));
    connect( ui->treeWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(treeWidgetContextMenu(QPoint)));
    connect(ui->treeWidget, SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(treeItemChanged(QTreeWidgetItem*, int)));

    ui->listWidget->setIconSize(QSize(60,60));
    ui->listWidget->setDragEnabled(true);
    QSetIterator<QtProperty *> itr(propertybrowser->group->properties());
    QStringList list;
    while(itr.hasNext()){
        QtProperty *pro = itr.next();
        list << pro->propertyName();
    }
    list.sort();
    for( int i = 0; i < list.count(); i++){
        QString str = list.at(i);
        QListWidgetItem *item = new QListWidgetItem();
        ui->listWidget->addItem(item);

        ControlsPaintWidget *widget = new ControlsPaintWidget(ui->listWidget, "", str, "描述");
        ui->listWidget->setItemWidget(item, widget);
        item->setSizeHint (QSize(widget->rect().width(),widget->rect().height()));
    }

    setWindowState(Qt::WindowMaximized);

    ui->tabWidget->clear();
    connect( ui->tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(tabCloseRequested(int)));
    connect( ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(currentChanged(int)));

    ui->actionShowPrint->setChecked(true);
    ui->actionShowPrint->setCheckable(true);
    connect( ui->actionShowPrint, SIGNAL(triggered(bool)), this, SLOT(showPrint(bool)));

    ui->actionShowProperty->setChecked(true);
    ui->actionShowProperty->setCheckable(true);
    connect( ui->actionShowProperty, SIGNAL(triggered(bool)), this, SLOT(showProperty(bool)));

    ui->actionShowControls->setChecked(true);
    ui->actionShowControls->setCheckable(true);
    connect( ui->actionShowControls, SIGNAL(triggered(bool)), this, SLOT(showControls(bool)));

    setUnifiedTitleAndToolBarOnMac(true);
}