EditorMainWindow::EditorMainWindow(EditorApplication* app, QWidget* parent) : QMainWindow(parent) , mApplication(app) , mEntityTreeDock(NULL) , mSpawnersDock(NULL) , mPropertyEditorDock(NULL) { mUpdateTimer = new QTimer(this); connect(mUpdateTimer, SIGNAL(timeout()), this, SLOT(EmitQueuedMessages())); mUpdateTimer->start(100); // register local message pump to receive messages from game message pump dtEntity::MessageFunctor functor(&mMessagePump, &dtEntity::MessagePump::EnqueueMessage); dtEntity::EntityManager& em = mApplication->GetEntityManager(); em.RegisterForMessages(dtEntity::ToolsUpdatedMessage::TYPE, functor); em.RegisterForMessages(dtEntity::SceneLoadedMessage::TYPE, functor); em.RegisterForMessages(dtEntity::SceneUnloadedMessage::TYPE, functor); em.RegisterForMessages(dtEntity::MapLoadedMessage::TYPE, functor); em.RegisterForMessages(dtEntity::MapUnloadedMessage::TYPE, functor); mMessagePump.RegisterForMessages(dtEntity::ToolsUpdatedMessage::TYPE, dtEntity::MessageFunctor(this, &EditorMainWindow::OnToolsUpdated)); mMessagePump.RegisterForMessages(dtEntity::SceneLoadedMessage::TYPE, dtEntity::MessageFunctor(this, &EditorMainWindow::OnSceneLoaded)); mMessagePump.RegisterForMessages(dtEntity::SceneUnloadedMessage::TYPE, dtEntity::MessageFunctor(this, &EditorMainWindow::OnSceneUnloaded)); mMessagePump.RegisterForMessages(dtEntity::MapLoadedMessage::TYPE, dtEntity::MessageFunctor(this, &EditorMainWindow::OnMapLoaded)); mMessagePump.RegisterForMessages(dtEntity::MapUnloadedMessage::TYPE, dtEntity::MessageFunctor(this, &EditorMainWindow::OnMapUnloaded)); setMinimumSize(800, 600); layout()->setContentsMargins(0, 0, 0, 0); setDockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowTabbedDocks | QMainWindow::VerticalTabs); setWindowTitle("dtEntity Editor"); createActions(); createMenus(); createToolBars(); CreateDockWidgets(); connect(this, SIGNAL(LoadScene(const QString&)), app, SLOT(LoadScene(const QString&))); connect(this, SIGNAL(NewScene()), app, SLOT(NewScene())); connect(this, SIGNAL(SaveScene(QString)), app, SLOT(SaveScene(QString))); }
HoIModDesigner::HoIModDesigner(QWidget *parent) : QMainWindow(parent), m_DockWidgetNationList(nullptr), m_DockWidgetNationDetails(nullptr), m_Parser(nullptr) { ui.setupUi(this); QIcon recycle(":HoIModDesigner/images/exit.ico"); QList<QSize> sizes = recycle.availableSizes(); m_ExitAction = new QAction(recycle,tr("E&xit"), this); m_ExitAction->setShortcuts(QKeySequence::Quit); m_ExitAction->setStatusTip(tr("Quit Scenediagram example")); connect(m_ExitAction, SIGNAL(triggered()), this, SLOT(close())); m_LoadMapAction = new QAction(QIcon(":HoIModDesigner/images/folder_document.ico"),tr("Load"),this ); m_LoadMapAction->setStatusTip(tr("Load HoI3 map")); connect(m_LoadMapAction, SIGNAL(triggered()), this, SLOT(LoadMap())); m_SaveChangesAction = new QAction(QIcon(":HoIModDesigner/images/floppy_disk.ico"),tr("Save"),this ); m_SaveChangesAction->setStatusTip(tr("Save changes")); connect(m_SaveChangesAction, SIGNAL(triggered()), this, SLOT(SaveChanges())); m_FileConfigurationAction = new QAction(QIcon(":HoIModDesigner/images/gear.ico"),tr("Configuration..."),this ); m_FileConfigurationAction->setStatusTip(tr("Open configuration dialog")); connect(m_FileConfigurationAction, SIGNAL(triggered()), this, SLOT(OpenConfigurationDialog())); m_AboutAction = new QAction(QIcon(":HoIModDesigner/images/about.ico"),tr("About..."),this ); m_AboutAction->setStatusTip(tr("Show about dialog")); // connect(m_AboutAction, SIGNAL(triggered()), this, SLOT(About())); m_FileMenu = menuBar()->addMenu(tr("&File")); m_FileMenu->addAction( m_LoadMapAction ); m_FileMenu->addAction( m_SaveChangesAction ); m_FileMenu->addSeparator(); m_FileMenu->addAction( m_FileConfigurationAction ); m_FileMenu->addSeparator(); m_FileMenu->addAction( m_ExitAction ); m_DockWidgetsMenu = menuBar()->addMenu("Windows"); m_HilfeMenu = menuBar()->addMenu(tr("Help")); m_HilfeMenu->addAction( m_AboutAction ); m_FileToolBar = addToolBar(tr("Edit")); m_FileToolBar->addAction(m_ExitAction); m_FileToolBar->addAction(m_LoadMapAction); m_FileToolBar->addAction(m_SaveChangesAction); m_ShowOriginalMap = new QAction(QIcon("images/test.png"),tr("Original"), this); m_ShowOriginalMap->setStatusTip(tr("Shows original map")); connect(m_ShowOriginalMap, SIGNAL(triggered()), this, SLOT(ShowOriginalMap())); m_ShowNationColorMap = new QAction(QIcon(":HoIModDesigner/images/mapmode_political.ico"),tr("Nations"), this); m_ShowNationColorMap->setStatusTip(tr("Shows map by country colors")); connect(m_ShowNationColorMap, SIGNAL(triggered()), this, SLOT(ShowNationColorMap())); m_ShowMetalProvinces = new FilterAction(QIcon(":HoIModDesigner/images/resource_metal.ico"),tr("Metal"), new TimeLineDataCriteriaMetal(), this); m_ShowMetalProvinces->setStatusTip(tr("Shows only provinces with metal")); m_ShowOilProvinces = new FilterAction(QIcon(":HoIModDesigner/images/resource_oil.ico"),tr("Crude oil"), new TimeLineDataCriteriaCrudeOil(), this); m_ShowOilProvinces->setStatusTip(tr("Shows only provinces with crude oil")); m_ShowEnergyProvinces = new FilterAction(QIcon(":HoIModDesigner/images/resource_energy.ico"),tr("Energy"), new TimeLineDataCriteriaEnergy(), this); m_ShowEnergyProvinces->setStatusTip(tr("Shows only provinces with energy")); m_ShowRareProvinces = new FilterAction(QIcon(":HoIModDesigner/images/resource_raremat.ico"),tr("Rare material"), new TimeLineDataCriteriaRareMaterial(), this); m_ShowRareProvinces->setStatusTip(tr("Shows only provinces with rare material")); m_ShowIndustryProvinces = new FilterAction(QIcon(":HoIModDesigner/images/icon_build_factory.ico"),tr("Industry"), new TimeLineDataCriteriaIndustry(), this); m_ShowIndustryProvinces->setStatusTip(tr("Shows only provinces with industry")); m_ShowAAProvinces = new FilterAction(QIcon(":HoIModDesigner/images/icon_build_aa.ico"),tr("Antiair"), new TimeLineDataCriteriaAntiair(), this); m_ShowAAProvinces->setStatusTip(tr("Shows only provinces with antiair")); m_ShowAirbaseProvinces = new FilterAction(QIcon(":HoIModDesigner/images/icon_build_airbase.ico"),tr("Airbase"), new TimeLineDataCriteriaAirbase(), this); m_ShowAirbaseProvinces->setStatusTip(tr("Shows only provinces with airbase")); m_ShowCoastalfortProvinces = new FilterAction(QIcon(":HoIModDesigner/images/icon_build_coastalfort.ico"),tr("Coastalfort"), new TimeLineDataCriteriaCoastalfort(), this); m_ShowCoastalfortProvinces->setStatusTip(tr("Shows only provinces with coastalfort")); m_ShowInfraProvinces = new FilterAction(QIcon(":HoIModDesigner/images/icon_build_infra.ico"),tr("Infrastructure"), new TimeLineDataCriteriaInfrastructure(), this); m_ShowInfraProvinces->setStatusTip(tr("Shows only provinces with infrastructure")); m_ShowLandfortProvinces = new FilterAction(QIcon(":HoIModDesigner/images/icon_build_landfort.ico"),tr("Landfort"), new TimeLineDataCriteriaLandfort(), this); m_ShowLandfortProvinces->setStatusTip(tr("Shows only provinces with landfort")); m_ShowNavalbaseProvinces = new FilterAction(QIcon(":HoIModDesigner/images/icon_build_navalbase.ico"),tr("Navalbase"), new TimeLineDataCriteriaNavalbase(), this); m_ShowNavalbaseProvinces->setStatusTip(tr("Shows only provinces with navalbase")); m_ShowNuclearProvinces = new FilterAction(QIcon(":HoIModDesigner/images/icon_build_nuclear.ico"),tr("Nuclear"), new TimeLineDataCriteriaNuclear(), this); m_ShowNuclearProvinces->setStatusTip(tr("Shows only provinces with nuclear")); m_ShowRadarProvinces = new FilterAction(QIcon(":HoIModDesigner/images/icon_build_radar.ico"),tr("Radar"), new TimeLineDataCriteriaRadar(), this); m_ShowRadarProvinces->setStatusTip(tr("Shows only provinces with radar")); m_ShowRocketProvinces = new FilterAction(QIcon(":HoIModDesigner/images/icon_build_rocket.ico"),tr("Rocket"), new TimeLineDataCriteriaRocket(), this); m_ShowRocketProvinces->setStatusTip(tr("Shows only provinces with rocket")); m_MapFilterToolBar = addToolBar(tr("Map filter")); m_MapFilterToolBar->addAction(m_ShowOriginalMap); m_MapFilterToolBar->addAction(m_ShowNationColorMap); m_MapFilterToolBar->addAction(m_ShowEnergyProvinces); m_MapFilterToolBar->addAction(m_ShowMetalProvinces); m_MapFilterToolBar->addAction(m_ShowRareProvinces); m_MapFilterToolBar->addAction(m_ShowOilProvinces); m_MapFilterToolBar->addAction(m_ShowIndustryProvinces); m_MapFilterToolBar->addAction(m_ShowAAProvinces); m_MapFilterToolBar->addAction(m_ShowAirbaseProvinces); m_MapFilterToolBar->addAction(m_ShowCoastalfortProvinces); m_MapFilterToolBar->addAction(m_ShowInfraProvinces); m_MapFilterToolBar->addAction(m_ShowLandfortProvinces); m_MapFilterToolBar->addAction(m_ShowNavalbaseProvinces); m_MapFilterToolBar->addAction(m_ShowNuclearProvinces); m_MapFilterToolBar->addAction(m_ShowRadarProvinces); m_MapFilterToolBar->addAction(m_ShowRocketProvinces); QToolButton *button2 = new QToolButton; button2->setText("Testicon2"); button2->setIcon(QIcon(":HoIModDesigner/images/add2.ico")); button2->setIconSize(QSize(48, 48)); button2->setCheckable(true); connect(button2,SIGNAL(clicked()),this,SLOT(DisplayContourMap())); QToolButton *button5 = new QToolButton; button5->setText("Testicon3"); button5->setIcon(QIcon(":HoIModDesigner/images/add2.ico")); button5->setIconSize(QSize(48, 48)); button5->setCheckable(true); QGridLayout *layout = new QGridLayout; layout->addWidget(button2, 0, 0, Qt::AlignHCenter); layout->addWidget(button5, 1, 0, Qt::AlignHCenter); QWidget *widget = new QWidget; widget->setLayout(layout); QGridLayout *backgroundLayout = new QGridLayout; backgroundLayout->addWidget(widget, 0, 0); QButtonGroup *paintEvents = new QButtonGroup(this); paintEvents->setExclusive(true); QVBoxLayout *layoutPaintEvents = new QVBoxLayout; int buttonID = 0; m_PainterWidgets.append(CreatePaintButton( tr("Owner"), "D:/Spiele/HoI3/gfx/interface/mapmode_political.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Energy"), "D:/Spiele/HoI3/tfh/gfx/mapitems/resource_energy.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Metal"), "D:/Spiele/HoI3/tfh/gfx/mapitems/resource_metal.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Rare materials"), "D:/Spiele/HoI3/tfh/gfx/mapitems/resource_raremat.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Crude oil"), "D:/Spiele/HoI3/tfh/gfx/mapitems/resource_oil.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Industry"), "D:/Spiele/HoI3/gfx/interface/prov_build_factory.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Infrastructure"), "D:/Spiele/HoI3/gfx/interface/prov_build_infra.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Anti air"), "D:/Spiele/HoI3/gfx/interface/prov_build_aa.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Airfield"), "D:/Spiele/HoI3/gfx/interface/prov_build_airfield.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Landfort"), "D:/Spiele/HoI3/gfx/interface/prov_build_landfort.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Coastfort"), "D:/Spiele/HoI3/gfx/interface/prov_build_coastfort.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Naval base"), "D:/Spiele/HoI3/gfx/interface/prov_build_navalbase.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Nuclear"), "D:/Spiele/HoI3/gfx/interface/prov_build_nuclear.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Radar"), "D:/Spiele/HoI3/gfx/interface/prov_build_radar.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Rocket"), "D:/Spiele/HoI3/gfx/interface/prov_build_rocket.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Leadership"), "D:/Spiele/HoI3/gfx/interface/icon_leadership.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Manpower"), "D:/Spiele/HoI3/gfx/interface/icon_manpower.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Points"), "D:/Spiele/HoI3/gfx/interface/mapmode_vp.dds", paintEvents, buttonID++ )); m_PainterWidgets.append(CreatePaintButton( tr("Controller"), "D:/Spiele/HoI3/gfx/interface/mapmode_political.dds", paintEvents, buttonID++ )); for( int i=0; i < m_PainterWidgets.size();i++ ) { layoutPaintEvents->addWidget( m_PainterWidgets.at(i) ); } connect(paintEvents,SIGNAL(buttonClicked(int)),this,SLOT(SetFactoryForExtendedScene(int))); QWidget *itemWidget = new QWidget; itemWidget->setLayout(layoutPaintEvents); m_ToolBox = new QToolBox; m_ToolBox->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Ignored)); m_ToolBox->setMinimumWidth(itemWidget->sizeHint().width()); m_ToolBox->addItem(widget, tr("Test group")); m_ToolBox->addItem(itemWidget, tr("Painters")); QHBoxLayout *layoutMain = new QHBoxLayout; layoutMain->addWidget(m_ToolBox); m_View = new ExtendedGraphicsView(this); m_View->setMouseTracking(true); m_View->setInteractive(true); m_View->setOptimizationFlags(QGraphicsView::DontClipPainter); m_View->setOptimizationFlags(QGraphicsView::DontSavePainterState); m_View->setOptimizationFlags(QGraphicsView::DontAdjustForAntialiasing); m_View->setCacheMode(QGraphicsView::CacheBackground); layoutMain->addWidget(m_View); QWidget *widgetMain = new QWidget; widgetMain->setLayout(layoutMain); CreateDockWidgets(); setCentralWidget(widgetMain); setWindowState(windowState() | Qt::WindowMaximized); connect(m_View->m_Scene, SIGNAL(SignalProvinceEntered(ProvinceItem*)),m_View->m_Scene, SLOT(SlotProvinceEntered(ProvinceItem*))); connect(m_View->m_Scene, SIGNAL(SignalProvinceMouseReleased(ProvinceItem*)),this, SLOT(SlotProvinceMouseReleased(ProvinceItem*))); jha::LogInterface().Init(); jha::GetLog()->RegisterLogger( new jha::LoggerFile("d:/temp/Logfile.log") ); jha::GetLog()->RegisterLogger( new jha::LoggerTableWidget(m_DockWidgetLogging) ); jha::GetLog()->Start(); }