// ////////////////////////////////////////////////////////////// void MainWindow::on_actionAnimation_triggered(bool checked) { GlobalSettings::LvlOpts.animationEnabled = checked; if (activeChildWindow()==1) { activeLvlEditWin()->scene->opts.animationEnabled = GlobalSettings::LvlOpts.animationEnabled; if(GlobalSettings::LvlOpts.animationEnabled) { activeLvlEditWin()->scene->startAnimation(); } else activeLvlEditWin()->scene->stopAnimation(); } else if (activeChildWindow()==3) { activeWldEditWin()->scene->opts.animationEnabled = GlobalSettings::LvlOpts.animationEnabled; if(GlobalSettings::LvlOpts.animationEnabled) { activeWldEditWin()->scene->startAnimation(); } else activeWldEditWin()->scene->stopAnimation(); } }
//Reload opened file data void MainWindow::on_actionReload_triggered() { LevelData FileData; QString filePath; QRect wnGeom; if (activeChildWindow()==1) { filePath = activeLvlEditWin()->curFile; QFile fileIn(filePath); if (!fileIn.open(QIODevice::ReadOnly)) { QMessageBox::critical(this, tr("File open error"), tr("Can't open the file."), QMessageBox::Ok); return; } FileData = FileFormats::ReadLevelFile(fileIn); //function in file_formats.cpp if( !FileData.ReadFileValid ){ statusBar()->showMessage(tr("Reloading error"), 2000); return;} FileData.filename = QFileInfo(filePath).baseName(); FileData.path = QFileInfo(filePath).absoluteDir().absolutePath(); FileData.playmusic = GlobalSettings::autoPlayMusic; activeLvlEditWin()->LvlData.modified = false; activeLvlEditWin()->close(); wnGeom = ui->centralWidget->activeSubWindow()->geometry(); ui->centralWidget->activeSubWindow()->close(); leveledit *child = createLvlChild(); if ((bool) (child->loadFile(filePath, FileData, configs, GlobalSettings::LvlOpts))) { statusBar()->showMessage(tr("Level file reloaded"), 2000); child->show(); ui->centralWidget->activeSubWindow()->setGeometry(wnGeom); updateMenus(true); SetCurrentLevelSection(0); if(GlobalSettings::autoPlayMusic) ui->actionPlayMusic->setChecked(true); LvlMusPlay::musicForceReset=true; //reset musics on_actionPlayMusic_triggered(ui->actionPlayMusic->isChecked()); } else { WriteToLog(QtDebugMsg, ">>File loading aborted"); child->show(); WriteToLog(QtDebugMsg, ">>Window showed"); if(activeChildWindow()==1) activeLvlEditWin()->LvlData.modified = false; WriteToLog(QtDebugMsg, ">>Option set"); ui->centralWidget->activeSubWindow()->close(); WriteToLog(QtDebugMsg, ">>Windows closed"); } } clearFilter(); }
//Paste void MainWindow::on_actionPaste_triggered() { if (activeChildWindow()==1) { LevelData tmp; QString raw=QApplication::clipboard()->text(); if( FileFormats::ReadExtendedLvlFileRaw(raw, "<clipboard>", tmp) ) { LvlBuffer = tmp; } if ( //if buffer is empty (LvlBuffer.blocks.size()==0)&& (LvlBuffer.bgo.size()==0)&& (LvlBuffer.npc.size()==0)&& (LvlBuffer.physez.size()==0) ) return; } else if (activeChildWindow()==3) { WorldData tmp; QString raw = QApplication::clipboard()->text(); if( FileFormats::ReadExtendedWldFileRaw(raw, "<clipboard>", tmp) ) { WldBuffer = tmp; } if ( //if buffer is empty (WldBuffer.tiles.size()==0)&& (WldBuffer.scenery.size()==0)&& (WldBuffer.paths.size()==0)&& (WldBuffer.levels.size()==0)&& (WldBuffer.music.size()==0) ) return; } resetEditmodeButtons(); ui->actionSelect->setChecked(1); if (activeChildWindow()==1) { activeLvlEditWin()->scene->SwitchEditingMode(LvlScene::MODE_PasteFromClip); activeLvlEditWin()->scene->m_dataBuffer = LvlBuffer; } else if (activeChildWindow()==3) { activeWldEditWin()->scene->SwitchEditingMode(LvlScene::MODE_PasteFromClip); activeWldEditWin()->scene->WldBuffer = WldBuffer; } }
// //History Manager void MainWindow::on_actionUndo_triggered() { ui->ItemProperties->hide(); if (activeChildWindow()==1) { //Here must be call activeLvlEditWin()->scene->historyBack(); ui->actionUndo->setEnabled( activeLvlEditWin()->scene->canUndo() ); ui->actionRedo->setEnabled( activeLvlEditWin()->scene->canRedo() ); } }
//Open Level Properties void MainWindow::on_actionLevelProp_triggered() { if(activeChildWindow()==1) { LevelProps LevProps(activeLvlEditWin()->LvlData); if(LevProps.exec()==QDialog::Accepted) { activeLvlEditWin()->LvlData.LevelName = LevProps.LevelTitle; } } }
void MainWindow::on_actionRotateRight_triggered() { if(activeChildWindow()==1) { activeLvlEditWin()->scene->rotateGroup( activeLvlEditWin()->scene->selectedItems(), true ); } else if(activeChildWindow()==3) { activeWldEditWin()->scene->rotateGroup( activeWldEditWin()->scene->selectedItems(), true ); } }
void MainWindow::on_actionFlipVertical_triggered() { if(activeChildWindow()==1) { activeLvlEditWin()->scene->flipGroup( activeLvlEditWin()->scene->selectedItems(), true ); } else if(activeChildWindow()==3) { activeWldEditWin()->scene->flipGroup( activeWldEditWin()->scene->selectedItems(), true ); } }
void MainWindow::on_actionGridEn_triggered(bool checked) { if (activeChildWindow()==1) { activeLvlEditWin()->scene->grid = checked; } }
void MainWindow::on_actionNewLevel_triggered() { //Check if data configs are valid if( configs.check() ) { WriteToLog(QtCriticalMsg, QString("Error! *.INI configs not loaded")); QMessageBox::warning(this, tr("Configuration is loaded with errors"), tr("Cannot create level file:\nConfiguration package loaded with errors.").arg(ConfStatus::configPath)); //Show configuration status window on_actionCurConfig_triggered(); return; } LevelEdit *child = createLvlChild(); if(child->newFile(configs, GlobalSettings::LvlOpts)) { child->show(); child->updateGeometry(); child->ResetPosition(); updateMenus(true); SetCurrentLevelSection(0); on_actionSelect_triggered(); dock_LvlWarpProps->init(); dock_LvlLayers->setLayersBox(); if(GlobalSettings::autoPlayMusic) ui->actionPlayMusic->setChecked(true); LvlMusPlay::musicForceReset=true; //reset musics on_actionPlayMusic_triggered(ui->actionPlayMusic->isChecked()); } else { child->show(); if(activeChildWindow()==1) activeLvlEditWin()->LvlData.modified = false; ui->centralWidget->activeSubWindow()->close(); } }
void MainWindow::on_actionReset_position_triggered() { if (activeChildWindow()==1) { activeLvlEditWin()->ResetPosition(); } }
void MainWindow::on_actionExport_to_image_triggered() { if(activeChildWindow()==1) { activeLvlEditWin()->ExportToImage_fn(); } }
void MainWindow::on_actionLockDoors_triggered(bool checked) { if (activeChildWindow()==1) { activeLvlEditWin()->scene->setLocked(5, checked); } }
// ////////////////////////////////////////////////////////////// void MainWindow::on_actionAnimation_triggered(bool checked) { GlobalSettings::LvlOpts.animationEnabled = checked; if(activeChildWindow() == WND_Level) { LevelEdit *e=activeLvlEditWin(); if(!e) return; LvlScene *s=e->scene; if(!s) return; if(GlobalSettings::LvlOpts.animationEnabled) s->startAnimation(); else s->stopAnimation(); s->m_opts.animationEnabled = GlobalSettings::LvlOpts.animationEnabled; } else if(activeChildWindow() == WND_World) { activeWldEditWin()->scene->m_opts.animationEnabled = GlobalSettings::LvlOpts.animationEnabled; if(GlobalSettings::LvlOpts.animationEnabled) { activeWldEditWin()->scene->startAnimation(); } else activeWldEditWin()->scene->stopAnimation(); } }
void MainWindow::on_actionAlign_selected_triggered() { if(activeChildWindow()==1) { activeLvlEditWin()->scene->applyGridToEach( activeLvlEditWin()->scene->selectedItems() ); } else if(activeChildWindow()==3) { activeWldEditWin()->scene->applyGridToEach( activeWldEditWin()->scene->selectedItems() ); } }
//Cut void MainWindow::on_actionCut_triggered() { int q1=0, q2=0, q3=0, q4=0, q5=0; if (activeChildWindow()==1) //if active window is a levelEditor { LvlBuffer=activeLvlEditWin()->scene->copy(true); q1 += LvlBuffer.blocks.size(); q2 += LvlBuffer.bgo.size(); q3 += LvlBuffer.npc.size(); q4 += LvlBuffer.physez.size(); statusBar()->showMessage(tr("%1 blocks, %2 BGO, %3 NPC, %4 Water items have been moved to clipboard").arg(q1).arg(q2).arg(q3).arg(q4), 2000); QString raw; FileFormats::WriteExtendedLvlFileRaw(LvlBuffer, raw); QApplication::clipboard()->setText(raw); } else if (activeChildWindow()==3) //if active window is a worldEditor { WldBuffer=activeWldEditWin()->scene->copy(true); q1 += WldBuffer.tiles.size(); q2 += WldBuffer.scenery.size(); q3 += WldBuffer.paths.size(); q4 += WldBuffer.levels.size(); q5 += WldBuffer.music.size(); statusBar()->showMessage(tr("%1 tiles, %2 sceneries, %3 paths, %4 levels, %5 music boxes items have been moved to clipboard").arg(q1).arg(q2).arg(q3).arg(q4).arg(q5), 2000); QString raw; FileFormats::WriteExtendedWldFileRaw(WldBuffer, raw); QApplication::clipboard()->setText(raw); } }
void MainWindow::on_actionZoomReset_triggered() { if(activeChildWindow()==1) activeLvlEditWin()->ResetZoom(); else if(activeChildWindow()==3) activeWldEditWin()->ResetZoom(); }
void MainWindow::on_actionCollisions_triggered(bool checked) { GlobalSettings::LvlOpts.collisionsEnabled = checked; if (activeChildWindow()==1) { activeLvlEditWin()->scene->opts.collisionsEnabled = GlobalSettings::LvlOpts.collisionsEnabled; } }
void MainWindow::on_actionDrawSand_triggered() { resetEditmodeButtons(); ui->actionDrawSand->setChecked(1); ui->ItemProperties->hide(); if((activeChildWindow()==1)) { activeLvlEditWin()->scene->setItemPlacer( 3, 1 ); } }
void MainWindow::SetCurrentLevelSection(int SctId, int open) { dock_LvlSectionProps->lockSctSettingsProps=true; int SectionId = SctId; int WinType = activeChildWindow(); LevelEdit *e=NULL; if(WinType==1) e=activeLvlEditWin(); LogDebug("Set Current Section"); if ((open==1)&&(e!=NULL)) // Only Set Checked section number without section select { LogDebug("get Current Section"); SectionId = e->LvlData.CurSection; } LogDebug("Set checkbox to"); ui->actionSection_1->setChecked( (SectionId==0) ); ui->actionSection_2->setChecked( (SectionId==1) ); ui->actionSection_3->setChecked( (SectionId==2) ); ui->actionSection_4->setChecked( (SectionId==3) ); ui->actionSection_5->setChecked( (SectionId==4) ); ui->actionSection_6->setChecked( (SectionId==5) ); ui->actionSection_7->setChecked( (SectionId==6) ); ui->actionSection_8->setChecked( (SectionId==7) ); ui->actionSection_9->setChecked( (SectionId==8) ); ui->actionSection_10->setChecked( (SectionId==9) ); ui->actionSection_11->setChecked( (SectionId==10) ); ui->actionSection_12->setChecked( (SectionId==11) ); ui->actionSection_13->setChecked( (SectionId==12) ); ui->actionSection_14->setChecked( (SectionId==13) ); ui->actionSection_15->setChecked( (SectionId==14) ); ui->actionSection_16->setChecked( (SectionId==15) ); ui->actionSection_17->setChecked( (SectionId==16) ); ui->actionSection_18->setChecked( (SectionId==17) ); ui->actionSection_19->setChecked( (SectionId==18) ); ui->actionSection_20->setChecked( (SectionId==19) ); ui->actionSection_21->setChecked( (SectionId==20) ); ui->actionSectionMore->setChecked( (SectionId>20) ); if ((e!=NULL) && (open==0)) { LogDebug("Call to setCurrentSection()"); e->setCurrentSection(SectionId); } if(e!=NULL) { dock_LvlSectionProps->refreshFileData(); } dock_LvlSectionProps->lockSctSettingsProps=false; }
void MainWindow::on_actionSetFirstPlayer_triggered() { resetEditmodeButtons(); ui->actionSetFirstPlayer->setChecked(1); ui->ItemProperties->hide(); if((activeChildWindow()==1)) { activeLvlEditWin()->scene->setItemPlacer( 5, 0 ); } }
void MainWindow::on_actionResizeCancel_triggered() { if (activeChildWindow()==1) { activeLvlEditWin()->scene->resetResizers();; } else if (activeChildWindow()==3) { activeWldEditWin()->scene->resetResizers(); } ui->ResizingToolbar->setVisible(false); }
void MainWindow::on_actionCollisions_triggered(bool checked) { GlobalSettings::LvlOpts.collisionsEnabled = checked; if(activeChildWindow() == WND_Level) { activeLvlEditWin()->scene->m_opts.collisionsEnabled = GlobalSettings::LvlOpts.collisionsEnabled; } else if(activeChildWindow() == WND_World) { activeWldEditWin()->scene->m_opts.collisionsEnabled = GlobalSettings::LvlOpts.collisionsEnabled; } }
void MainWindow::applyTextZoom() { bool ok = false; int zoomPercent = 100; zoomPercent = zoom->text().toInt(&ok); if(!ok) return; if(activeChildWindow()==1){ activeLvlEditWin()->setZoom(zoomPercent); }else if(activeChildWindow()==3){ activeWldEditWin()->setZoom(zoomPercent); } }
void MainWindow::on_actionGotoLeftTop_triggered() { qApp->setActiveWindow(this); int WinType = activeChildWindow(); if(WinType==1) { LevelEdit* edit = activeLvlEditWin(); if(!edit) return; int SectionId = edit->LvlData.CurSection; int xb = edit->LvlData.sections[SectionId].size_left; int yb = edit->LvlData.sections[SectionId].size_top; edit->goTo(xb, yb, false, QPoint(-10, -10)); } }
void MainWindow::on_actionGotoTopRight_triggered() { qApp->setActiveWindow(this); int WinType = activeChildWindow(); if(WinType==1) { LevelEdit* edit = activeLvlEditWin(); if(!edit) return; int SectionId = edit->LvlData.CurSection; int xb = edit->LvlData.sections[SectionId].size_right - edit->scene->_viewPort->viewport()->width() + 10; int yb = edit->LvlData.sections[SectionId].size_top; edit->goTo(xb, yb, false, QPoint(10, -10)); } }
// ////////////////////////////////////////////////////////////// void MainWindow::on_actionGridEn_triggered(bool checked) { if(activeChildWindow() == WND_Level) { LevelEdit *e = activeLvlEditWin(); assert(e); e->scene->m_opts.grid_snap = checked; } else if(activeChildWindow() == WND_World) { WorldEdit *e = activeWldEditWin(); assert(e); e->scene->m_opts.grid_snap = checked; } }
void MainWindow::on_actionSelectOnly_triggered() { resetEditmodeButtons(); ui->actionSelectOnly->setChecked(1); ui->ItemProperties->hide(); if ((activeChildWindow()==1) && (ui->actionSelectOnly->isChecked())) { activeLvlEditWin()->scene->SwitchEditingMode(LvlScene::MODE_SelectingOnly); } else if ((activeChildWindow()==3) && (ui->actionSelectOnly->isChecked())) { activeWldEditWin()->scene->SwitchEditingMode(WldScene::MODE_SelectingOnly); } }
void MainWindow::on_actionTileset_groups_editor_triggered() { TilesetGroupEditor * groupDialog; if(activeChildWindow()==1) groupDialog = new TilesetGroupEditor(activeLvlEditWin()->scene, this); else if(activeChildWindow()==3) groupDialog = new TilesetGroupEditor(activeWldEditWin()->scene, this); else groupDialog = new TilesetGroupEditor(NULL, this); util::DialogToCenter(groupDialog); groupDialog->exec(); delete groupDialog; configs.loadTilesets(); setTileSetBox(); }
void MainWindow::on_actionSectionMore_triggered() { if(activeChildWindow() != 1) return; LevelEdit* edit = activeLvlEditWin(); QMenu section; for(int i=21; i<edit->LvlData.sections.size(); i++) { QAction *item=section.addAction(tr("Section %1").arg(i+1)); if(edit->LvlData.CurSection==i) { item->setCheckable(true); item->setChecked(true); } item->setData(i); } QAction *newSection = section.addAction(tr("Initialize section %1...").arg(edit->LvlData.sections.size()+1)); newSection->setData(edit->LvlData.sections.size()); QAction *answer = section.exec(QCursor::pos()); if(!answer) return; SetCurrentLevelSection(answer->data().toInt()); }
void MainWindow::on_actionGotoLeftBottom_triggered() { if (activeChildWindow()==1) { LevelEdit* edit = activeLvlEditWin(); if(!edit) return; int SectionId = edit->LvlData.CurSection; int xb = edit->LvlData.sections[SectionId].size_left; int yb = edit->LvlData.sections[SectionId].size_bottom - edit->scene->_viewPort->viewport()->height() + 10; edit->goTo(xb, yb, false, QPoint(-10, 10)); } else if (activeChildWindow()==3) { WorldEdit *e=activeWldEditWin(); if(e) e->ResetPosition(); } }