void MapBox::createMenus() { QAction * menuItem; QMenu * subMenuItem; m_popupMenu = new QMenu(this); m_popupMenuMapObject = new QMenu(this); //************************************************************** // MapObject-specific context menu. The map object is in m_lastClickedMapObject. subMenuItem = m_popupMenuMapObject->addMenu(tr("MapObject")); menuItem = subMenuItem->addAction(tr("Remove")); connect(menuItem, SIGNAL(triggered()), this, SLOT(removeMapObject())); //************************************************************** /* // These are gread for testing, but not really what we want in // an example application. // We should probably creating a testing branch which tracks // the master branch and has various "test enabled" versions // of the examples at some point anyhow. subMenuItem = m_popupMenuMapObject->addMenu(tr("Spawn stuff")); m_popupMenu->addMenu(subMenuItem); menuItem = subMenuItem->addAction(tr("Items near the dateline")); connect(menuItem, SIGNAL(triggered()), this, SLOT(demo1())); menuItem = subMenuItem->addAction(tr("Regular grid of items")); connect(menuItem, SIGNAL(triggered()), this, SLOT(demo2())); menuItem = subMenuItem->addAction(tr("Clusters")); connect(menuItem, SIGNAL(triggered()), this, SLOT(demo3())); */ //************************************************************** subMenuItem = m_popupMenuMapObject->addMenu(tr("Marker")); m_popupMenu->addMenu(subMenuItem); menuItem = subMenuItem->addAction(tr("Set marker")); connect(menuItem, SIGNAL(triggered()), this, SLOT(drawPixmap())); menuItem = subMenuItem->addAction(tr("Remove markers")); connect(menuItem, SIGNAL(triggered()), this, SLOT(removePixmaps())); menuItem = subMenuItem->addAction(tr("Select objects")); connect(menuItem, SIGNAL(triggered()), this, SLOT(selectObjects())); //************************************************************** subMenuItem = m_popupMenu->addMenu(tr("Draw")); m_popupMenu->addMenu(subMenuItem); menuItem = subMenuItem->addAction(tr("Rectangle")); connect(menuItem, SIGNAL(triggered()), this, SLOT(drawRect())); menuItem = subMenuItem->addAction(tr("Polyline")); connect(menuItem, SIGNAL(triggered()), this, SLOT(drawPolyline())); menuItem = subMenuItem->addAction(tr("Polygon")); connect(menuItem, SIGNAL(triggered()), this, SLOT(drawPolygon())); menuItem = subMenuItem->addAction(tr("Circle")); connect(menuItem, SIGNAL(triggered()), this, SLOT(drawCircle())); menuItem = subMenuItem->addAction(tr("Text")); connect(menuItem, SIGNAL(triggered()), this, SLOT(drawText())); //************************************************************** subMenuItem = m_popupMenuMapObject->addMenu(tr("Route")); m_popupMenu->addMenu(subMenuItem); menuItem = subMenuItem->addAction(tr("Calculate route")); connect(menuItem, SIGNAL(triggered()), this, SLOT(calcRoute())); //************************************************************** subMenuItem = m_popupMenuMapObject->addMenu(tr("Coordinates")); m_popupMenu->addMenu(subMenuItem); menuItem = subMenuItem->addAction(tr("Capture")); connect(menuItem, SIGNAL(triggered()), this, SLOT(captureCoordinates())); connect(menuItem, SIGNAL(triggered()), m_coordControlDialog, SLOT(show())); menuItem = subMenuItem->addAction(tr("Go to")); connect(menuItem, SIGNAL(triggered()), m_coordControlDialog, SLOT(show())); //************************************************************** subMenuItem = m_popupMenuMapObject->addMenu(tr("Tests")); m_popupMenu->addMenu(subMenuItem); menuItem = subMenuItem->addAction(tr("Dateline")); connect(menuItem, SIGNAL(triggered()), this, SLOT(testDateline())); }
MapEditor::MapEditor(QWidget* par, const QString& map, const QString& ressourceList):QMainWindow(par) { m_mapWidget = NULL; m_currentItemIndex=0; pgrdia=new QProgressDialog(tr("Chargement en cours..."), tr("Veuillez patienter.."), 0, 100, this); pgrdia->setWindowModality(Qt::WindowModal); pgrdia->setMinimumDuration(100); pgrdia->hide(); setTabPosition(Qt::AllDockWidgetAreas, QTabWidget::North); setDockNestingEnabled(true); m_rsRegExp.setPatternSyntax(QRegExp::Wildcard); setWindowTitle(tr("Éditeur de carte")); { ///MAP PROPERTIES DOCK QDockWidget* dw_mapProperties = new QDockWidget(tr("Propriétés de la carte"), this); dw_mapProperties->setWhatsThis(tr("Un dock regroupant quelques propriétés de la carte")); dw_mapProperties->setFeatures(QDockWidget::NoDockWidgetFeatures); dw_mapProperties->setFeatures(QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable); QWidget *w_mapProperties = new QWidget(dw_mapProperties); dw_mapProperties->setWidget(w_mapProperties); addDockWidget(Qt::TopDockWidgetArea, dw_mapProperties); QVBoxLayout *l_mapProperties = new QVBoxLayout(w_mapProperties); w_mapProperties->setLayout(l_mapProperties); { QHBoxLayout *lay=new QHBoxLayout(); l_mapProperties->addLayout(lay); m_mapSizeX = new QSpinBox(this); m_mapSizeX->setRange(0,MAP_MAX_SIZE); m_mapSizeX->setEnabled(false); lay->addWidget(m_mapSizeX); m_mapSizeY = new QSpinBox(this); m_mapSizeY->setRange(0,MAP_MAX_SIZE); m_mapSizeY->setEnabled(false); lay->addWidget(m_mapSizeY); } { m_mapNameLabel=new QLabel(this); l_mapProperties->addWidget(m_mapNameLabel); m_sendingBtn=new QPushButton(tr("(MJ) Envoyer la carte au serveur"), this); l_mapProperties->addWidget(m_sendingBtn); setSendingButtonEnabled(false); connect(m_sendingBtn, SIGNAL(pressed()), this, SLOT(btnMapSend())); } } { ///CASE PROPERTIES DOCK QDockWidget* dw_caseProperties = new QDockWidget(tr("Propriétés de la case"), this); dw_caseProperties->setWhatsThis(tr("Un dock regroupant quelques propriétés de la case sélectionnée")); dw_caseProperties->setFeatures(QDockWidget::NoDockWidgetFeatures); dw_caseProperties->setFeatures(QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable); QWidget *w_caseProperties = new QWidget(dw_caseProperties); dw_caseProperties->setWidget(w_caseProperties); addDockWidget(Qt::RightDockWidgetArea, dw_caseProperties); QVBoxLayout *l_caseProperties = new QVBoxLayout(w_caseProperties); w_caseProperties->setLayout(l_caseProperties); { m_selectedCaseLabel = new QLabel(this); l_caseProperties->addWidget(m_selectedCaseLabel); m_selectedCaseRSID = new QSpinBox(this); m_selectedCaseRSID->setRange(0,MAX_LOADED_RESSOURCES); m_selectedCaseRSID->setEnabled(false); l_caseProperties->addWidget(m_selectedCaseRSID); connect(m_selectedCaseRSID, SIGNAL(valueChanged(int)), this, SLOT(changeCurrentCaseRSID(int))); { QGroupBox* gb = new QGroupBox(tr("Objets sur la case :"), this); m_mapCaseItemList = new QListWidget(this); connect(m_mapCaseItemList, SIGNAL(clicked(const QModelIndex&)), this, SLOT(selectMapItem(const QModelIndex&))); m_addItem = new QPushButton(tr("Ajouter un objet"), this); m_addItem->setEnabled(false); connect(m_addItem, SIGNAL(pressed()), this, SLOT(addMapObject())); QVBoxLayout* lyt = new QVBoxLayout(); gb->setLayout(lyt); lyt->addWidget(m_mapCaseItemList); lyt->addWidget(m_addItem); l_caseProperties->addWidget(gb); } } } { ///MAPITEMS DOCK QDockWidget* dw_mapItems = new QDockWidget(tr("Objets de la carte"), this); dw_mapItems->setWhatsThis(tr("Un dock permettant la gestion des objets de la carte")); dw_mapItems->setFeatures(QDockWidget::NoDockWidgetFeatures); dw_mapItems->setFeatures(QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable); QWidget *w_mapItems = new QWidget(dw_mapItems); dw_mapItems->setWidget(w_mapItems); addDockWidget(Qt::RightDockWidgetArea, dw_mapItems); QVBoxLayout *l_mapItems = new QVBoxLayout(w_mapItems); w_mapItems->setLayout(l_mapItems); { m_mapItemList = new QListWidget(this); connect(m_mapItemList, SIGNAL(clicked(const QModelIndex&)), this, SLOT(selectMapItem(const QModelIndex&))); l_mapItems->addWidget(m_mapItemList); m_mapItemName = new QLabel(this); l_mapItems->addWidget(m_mapItemName); m_mapItemRSID = new QSpinBox(this); m_mapItemRSID->setRange(0,MAX_LOADED_RESSOURCES); m_mapItemRSID->setPrefix(tr("RSID : ")); m_mapItemRSID->setEnabled(false); l_mapItems->addWidget(m_mapItemRSID); m_mapItemPos = new QLabel(this); l_mapItems->addWidget(m_mapItemPos); l_mapItems->addWidget(new QLabel(tr("Teinte :"), this)); m_mapItemColorViewer = new QColorViewer(this); l_mapItems->addWidget(m_mapItemColorViewer); m_removeItem = new QPushButton(tr("Supprimer l'objet"), this); l_mapItems->addWidget(m_removeItem); connect(m_removeItem, SIGNAL(pressed()), this, SLOT(removeMapObject())); } } { ///RSSMNGR PROPERTIES DOCK QDockWidget* dw_rssMngrProperties = new QDockWidget(tr("Gestionnaire de ressources"), this); dw_rssMngrProperties->setWhatsThis(tr("Un dock regroupant les différentes ressources chargées dans l'éditeur")); dw_rssMngrProperties->setFeatures(QDockWidget::NoDockWidgetFeatures); dw_rssMngrProperties->setFeatures(QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable); QWidget *w_rssMngrProperties = new QWidget(dw_rssMngrProperties); dw_rssMngrProperties->setWidget(w_rssMngrProperties); addDockWidget(Qt::RightDockWidgetArea, dw_rssMngrProperties); QVBoxLayout *l_rssMngrProperties = new QVBoxLayout(w_rssMngrProperties); w_rssMngrProperties->setLayout(l_rssMngrProperties); { m_rsMngrFilter = new QLineEdit(this); m_rsMngrFilter->setPlaceholderText(tr("Filtre...")); connect(m_rsMngrFilter, SIGNAL(textEdited(const QString&)),this, SLOT(changeRsMngrFilter(const QString&))); l_rssMngrProperties->addWidget(m_rsMngrFilter); m_rsMngrWidget = new QTableWidget(0,2, this); m_rsMngrWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); m_rsMngrWidget->setSelectionMode(QAbstractItemView::SingleSelection); m_rsMngrWidget->setSelectionBehavior(QAbstractItemView::SelectRows); m_rsMngrWidget->setSortingEnabled(true); m_rsMngrWidget->verticalHeader()->hide(); l_rssMngrProperties->addWidget(m_rsMngrWidget); m_rsMngrEdit = new QPushButton(tr("Modifier..."), this); m_rsMngrEdit->setEnabled(false); l_rssMngrProperties->addWidget(m_rsMngrEdit); connect(m_rsMngrEdit, SIGNAL(pressed()), this, SLOT(modifyRssMngr())); m_rsMngrAdd = new QPushButton(tr("Ajouter..."), this); m_rsMngrAdd->setEnabled(false); l_rssMngrProperties->addWidget(m_rsMngrAdd); connect(m_rsMngrAdd, SIGNAL(pressed()), this, SLOT(addRssMngr())); } } QMenu *fileMenu = menuBar()->addMenu(tr("&Fichier")); QAction *ac_new= fileMenu->addAction(tr("&Nouvelle carte...")); connect(ac_new, SIGNAL(triggered()), this, SLOT(newMap())); QAction *ac_open= fileMenu->addAction(tr("&Charger une carte...")); connect(ac_open, SIGNAL(triggered()), this, SLOT(loadMap())); QAction *ac_save = fileMenu->addAction(tr("Sauvegarder &la carte...")); connect(ac_save, SIGNAL(triggered()), this, SLOT(saveMap())); QAction *ac_saveAs = fileMenu->addAction(tr("Sa&uvegarder la carte sous...")); connect(ac_saveAs, SIGNAL(triggered()), this, SLOT(saveMapAs())); QAction *ac_quit = fileMenu->addAction(tr("&Quitter...")); connect(ac_quit, SIGNAL(triggered()), this, SLOT(close())); QMenu *toolMenu = menuBar()->addMenu(tr("&Outils")); QAction *ac_replace= toolMenu->addAction(tr("&Remplacer...")); connect(ac_replace, SIGNAL(triggered()), this, SLOT(replaceRSID())); QAction *ac_copy= toolMenu->addAction(tr("Copier...")); ac_copy->setShortcut(QKeySequence::Copy); connect(ac_copy, SIGNAL(triggered()), this, SLOT(copy())); QAction *ac_paste= toolMenu->addAction(tr("Coller...")); ac_paste->setShortcut(QKeySequence::Paste); connect(ac_paste, SIGNAL(triggered()), this, SLOT(paste())); QMenu *exportMenu = menuBar()->addMenu(tr("&Export")); QAction *ac_ex_rss= exportMenu->addAction(tr("... la liste de ressources")); connect(ac_ex_rss,SIGNAL(triggered()),this,SLOT(exportRss())); QAction *ac_ex_map= exportMenu->addAction(tr("... la matrice de la carte")); connect(ac_ex_map,SIGNAL(triggered()),this,SLOT(exportMap())); m_hoveredCaseLabel = new QLabel(this); statusBar()->addWidget(m_hoveredCaseLabel); m_mapName=map; m_ressourcePackName=ressourceList; if(!map.isEmpty()) { loadMap(map,m_ressourcePackName); } enableMapSystem(false); }