From db96e33ffd47da60bba918df32922ef9c07bf2be Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 13 Nov 2018 11:36:34 -0600 Subject: [PATCH 1/9] Begin event view overhaul --- forms/eventpropertiesframe.ui | 944 +++++++++++++++++++++++++++++++--- forms/mainwindow.ui | 389 +++++++++++--- src/mainwindow.cpp | 107 +++- 3 files changed, 1271 insertions(+), 169 deletions(-) diff --git a/forms/eventpropertiesframe.ui b/forms/eventpropertiesframe.ui index 5007d951..af691bcc 100644 --- a/forms/eventpropertiesframe.ui +++ b/forms/eventpropertiesframe.ui @@ -7,7 +7,7 @@ 0 0 284 - 146 + 1084 @@ -37,7 +37,7 @@ 1 - + @@ -200,63 +200,890 @@ - - - - 0 - 0 - - - - - 9 - - - 0 - - - 0 - - - - - Sprite - - - comboBox_sprite - - + + + + + + + + Sprite + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - + + + + + + Movement + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + Movement Radius X + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + Movement Radius Y + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + Script + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + Event Flag + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + Trainer + + + + + + + + 0 + 0 + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Sight Radius / Berry Tree ID + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + + + + + + + Destination Map + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + Destination Warp + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + + + + + + + Script + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + Var + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + Var Value + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + + + + + + + Weather + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + + + + + + + Player Facing Direction + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + Script + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + + + + + + + Item + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + Flag + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + + + + + + + + + + + + + + Secret Base ID + + + comboBox_sprite + + + + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + + + @@ -279,7 +1106,6 @@ spinBox_x spinBox_y spinBox_z - comboBox_sprite diff --git a/forms/mainwindow.ui b/forms/mainwindow.ui index eac8a866..5037faef 100644 --- a/forms/mainwindow.ui +++ b/forms/mainwindow.ui @@ -158,7 +158,7 @@ - 0 + 1 false @@ -1177,7 +1177,7 @@ - + true @@ -1340,89 +1340,6 @@ 3 - - - - Selected - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - QAbstractScrollArea::AdjustIgnored - - - true - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - 0 - 0 - 428 - 586 - - - - - 0 - 0 - - - - - - - - - - - @@ -1537,6 +1454,308 @@ + + + + 4 + + + + Objects + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + QAbstractScrollArea::AdjustIgnored + + + true + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + 0 + 0 + 432 + 584 + + + + + 0 + 0 + + + + + + + + + + Warps + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + QAbstractScrollArea::AdjustIgnored + + + true + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + 0 + 0 + 432 + 584 + + + + + 0 + 0 + + + + + + + + + + Triggers + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + QAbstractScrollArea::AdjustIgnored + + + true + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + 0 + 0 + 432 + 584 + + + + + 0 + 0 + + + + + + + + + + BGs + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + QAbstractScrollArea::AdjustIgnored + + + true + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + 0 + 0 + 432 + 584 + + + + + 0 + 0 + + + + + + + + + + Multiple + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + QAbstractScrollArea::AdjustIgnored + + + true + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + 0 + 0 + 432 + 565 + + + + + 0 + 0 + + + + + + + + + + + + + There are no events on the current map. + + + Qt::AlignCenter + + + diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index e1b4fdab..b34168a1 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -892,6 +892,7 @@ void MainWindow::updateSelectedObjects() { editor->selected_events->append(selectedEvent); editor->redrawObject(selectedEvent); events->append(selectedEvent); + } } @@ -938,7 +939,7 @@ void MainWindow::updateSelectedObjects() { frame->ui->label_spritePixmap->setPixmap(item->event->pixmap); connect(item, SIGNAL(spriteChanged(QPixmap)), frame->ui->label_spritePixmap, SLOT(setPixmap(QPixmap))); - frame->ui->sprite->setVisible(false); + /*frame->ui->sprite->setVisible(false); QMap field_labels; field_labels["script_label"] = "Script"; @@ -960,32 +961,45 @@ void MainWindow::updateSelectedObjects() { field_labels["flag"] = "Flag"; field_labels["secret_base_id"] = "Secret Base Id"; - QStringList fields; + QStringList fields;*/ + + for (QWidget *widget : frame->findChildren(QString(), Qt::FindDirectChildrenOnly)) + { + widget->hide(); + } if (event_type == EventType::Object) { - frame->ui->sprite->setVisible(true); + frame->ui->object->setVisible(true); frame->ui->comboBox_sprite->addItems(event_obj_gfx_constants.keys()); frame->ui->comboBox_sprite->setCurrentText(item->event->get("sprite")); connect(frame->ui->comboBox_sprite, SIGNAL(activated(QString)), item, SLOT(set_sprite(QString))); - /* - frame->ui->script->setVisible(true); - frame->ui->comboBox_script->addItem(item->event->get("script_label")); + frame->ui->comboBox_movement->setCurrentText(item->event->get("movement_type")); + item->bind(frame->ui->comboBox_movement, "movement_type"); + + frame->ui->comboBox_movementRadiusX->setCurrentText(item->event->get("radius_x")); + item->bind(frame->ui->comboBox_movementRadiusX, "radius_x"); + + frame->ui->comboBox_movementRadiusY->setCurrentText(item->event->get("radius_y")); + item->bind(frame->ui->comboBox_movementRadiusY, "radius_y"); + + //frame->ui->script->setVisible(true); + //frame->ui->comboBox_script->addItem(item->event->get("script_label")); frame->ui->comboBox_script->setCurrentText(item->event->get("script_label")); //item->bind(frame->ui->comboBox_script, "script_label"); - connect(frame->ui->comboBox_script, SIGNAL(activated(QString)), item, SLOT(set_script(QString))); + //connect(frame->ui->comboBox_script, SIGNAL(activated(QString)), item, SLOT(set_script(QString))); //connect(frame->ui->comboBox_script, static_cast(&QComboBox::activated), item, [item](QString script_label){ item->event->put("script_label", script_label); }); //connect(item, SIGNAL(scriptChanged(QString)), frame->ui->comboBox_script, SLOT(setValue(QString))); - */ + item->bind(frame->ui->comboBox_script, "script_label"); - fields << "movement_type"; + /*fields << "movement_type"; fields << "radius_x"; fields << "radius_y"; fields << "script_label"; fields << "event_flag"; fields << "is_trainer"; - fields << "sight_radius_tree_id"; + fields << "sight_radius_tree_id";*/ } else if (event_type == EventType::Warp) { fields << "destination_map_name"; @@ -1116,26 +1130,69 @@ void MainWindow::updateSelectedObjects() { //int scroll = ui->scrollArea_4->verticalScrollBar()->value(); - QWidget *target = ui->scrollAreaWidgetContents; + QWidget *target = ui->eventsMultiple_ScrollAreaContents; - if (target->children().length()) { - qDeleteAll(target->children()); + if (events->length() == 1) + { + QString event_type = (*events)[0]->event->get("event_type"); + + if (event_type == EventType::Object) { + target = ui->eventsObjects_ScrollAreaContents; + ui->tabWidget_EventType->setCurrentIndex(0); + } + else if (event_type == EventType::Warp) { + target = ui->eventsWarps_ScrollAreaContents; + ui->tabWidget_EventType->setCurrentIndex(1); + } + else if (event_type == EventType::CoordScript || event_type == EventType::CoordWeather) { + target = ui->eventsTriggers_ScrollAreaContents; + ui->tabWidget_EventType->setCurrentIndex(2); + } + else if (event_type == EventType::Sign || event_type == EventType::HiddenItem || event_type == EventType::SecretBase) { + target = ui->eventsBGs_ScrollAreaContents; + ui->tabWidget_EventType->setCurrentIndex(3); + } + ui->tabWidget_EventType->removeTab(ui->tabWidget_EventType->indexOf(ui->tab_Multiple)); + + if (target->children().length()) { + qDeleteAll(target->children()); + } + } + else if (events->length() > 1) + { + ui->tabWidget_EventType->addTab(ui->tab_Multiple, "Multiple"); + ui->tabWidget_EventType->setCurrentWidget(ui->tab_Multiple); } - QVBoxLayout *layout = new QVBoxLayout(target); - target->setLayout(layout); - ui->scrollArea_4->setWidgetResizable(true); - ui->scrollArea_4->setWidget(target); + if (events->length() != 0) + { + if (target->children().length()) { + qDeleteAll(target->children()); + } - for (EventPropertiesFrame *frame : frames) { - layout->addWidget(frame); + QVBoxLayout *layout = new QVBoxLayout(target); + target->setLayout(layout); + //ui->scrollArea_4->setWidgetResizable(true); + //ui->scrollArea_4->setWidget(target); + + for (EventPropertiesFrame *frame : frames) { + layout->addWidget(frame); + } + + layout->addStretch(1); + + // doesn't work + //QApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + //ui->scrollArea_4->ensureVisible(0, scroll); + + ui->label_NoEvents->hide(); + ui->tabWidget_EventType->show(); + } + else + { + ui->tabWidget_EventType->hide(); + ui->label_NoEvents->show(); } - - layout->addStretch(1); - - // doesn't work - //QApplication::processEvents(QEventLoop::ExcludeUserInputEvents); - //ui->scrollArea_4->ensureVisible(0, scroll); } void MainWindow::on_toolButton_deleteObject_clicked() From 4550f80dc40f52c1bad70ac068f8aecbbe6344d1 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 13 Nov 2018 13:32:36 -0600 Subject: [PATCH 2/9] Begin tabs properly --- forms/eventpropertiesframe.ui | 944 +++------------------------------- src/mainwindow.cpp | 42 +- 2 files changed, 73 insertions(+), 913 deletions(-) diff --git a/forms/eventpropertiesframe.ui b/forms/eventpropertiesframe.ui index af691bcc..5007d951 100644 --- a/forms/eventpropertiesframe.ui +++ b/forms/eventpropertiesframe.ui @@ -7,7 +7,7 @@ 0 0 284 - 1084 + 146 @@ -37,7 +37,7 @@ 1 - + @@ -200,890 +200,63 @@ - - - - - - - - Sprite - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - + + + + 0 + 0 + + + + + 9 + + + 0 + + + 0 + + + + + Sprite + + + comboBox_sprite + + - - - - - - Movement - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - Movement Radius X - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - Movement Radius Y - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - Script - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - Event Flag - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - Trainer - - - - - - - - 0 - 0 - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Sight Radius / Berry Tree ID - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - - - - - - - Destination Map - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - Destination Warp - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - - - - - - - Script - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - Var - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - Var Value - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - - - - - - - Weather - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - - - - - - - Player Facing Direction - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - Script - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - - - - - - - Item - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - Flag - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - - - - - - - - - - - - - - Secret Base ID - - - comboBox_sprite - - - - - - - true - - - - 0 - 0 - - - - Qt::StrongFocus - - - <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> - - - true - - - - - - 25 - - - QComboBox::AdjustToContentsOnFirstShow - - - - + + + + true + + + + 0 + 0 + + + + Qt::StrongFocus + + + <html><head/><body><p>The sprite graphics to use for this object.</p></body></html> + + + true + + + + + + 25 + + + QComboBox::AdjustToContentsOnFirstShow + + @@ -1106,6 +279,7 @@ spinBox_x spinBox_y spinBox_z + comboBox_sprite diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b34168a1..d203ae7b 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -892,7 +892,6 @@ void MainWindow::updateSelectedObjects() { editor->selected_events->append(selectedEvent); editor->redrawObject(selectedEvent); events->append(selectedEvent); - } } @@ -939,7 +938,7 @@ void MainWindow::updateSelectedObjects() { frame->ui->label_spritePixmap->setPixmap(item->event->pixmap); connect(item, SIGNAL(spriteChanged(QPixmap)), frame->ui->label_spritePixmap, SLOT(setPixmap(QPixmap))); - /*frame->ui->sprite->setVisible(false); + frame->ui->sprite->setVisible(false); QMap field_labels; field_labels["script_label"] = "Script"; @@ -961,45 +960,32 @@ void MainWindow::updateSelectedObjects() { field_labels["flag"] = "Flag"; field_labels["secret_base_id"] = "Secret Base Id"; - QStringList fields;*/ - - for (QWidget *widget : frame->findChildren(QString(), Qt::FindDirectChildrenOnly)) - { - widget->hide(); - } + QStringList fields; if (event_type == EventType::Object) { - frame->ui->object->setVisible(true); + frame->ui->sprite->setVisible(true); frame->ui->comboBox_sprite->addItems(event_obj_gfx_constants.keys()); frame->ui->comboBox_sprite->setCurrentText(item->event->get("sprite")); connect(frame->ui->comboBox_sprite, SIGNAL(activated(QString)), item, SLOT(set_sprite(QString))); - frame->ui->comboBox_movement->setCurrentText(item->event->get("movement_type")); - item->bind(frame->ui->comboBox_movement, "movement_type"); - - frame->ui->comboBox_movementRadiusX->setCurrentText(item->event->get("radius_x")); - item->bind(frame->ui->comboBox_movementRadiusX, "radius_x"); - - frame->ui->comboBox_movementRadiusY->setCurrentText(item->event->get("radius_y")); - item->bind(frame->ui->comboBox_movementRadiusY, "radius_y"); - - //frame->ui->script->setVisible(true); - //frame->ui->comboBox_script->addItem(item->event->get("script_label")); + /* + frame->ui->script->setVisible(true); + frame->ui->comboBox_script->addItem(item->event->get("script_label")); frame->ui->comboBox_script->setCurrentText(item->event->get("script_label")); //item->bind(frame->ui->comboBox_script, "script_label"); - //connect(frame->ui->comboBox_script, SIGNAL(activated(QString)), item, SLOT(set_script(QString))); + connect(frame->ui->comboBox_script, SIGNAL(activated(QString)), item, SLOT(set_script(QString))); //connect(frame->ui->comboBox_script, static_cast(&QComboBox::activated), item, [item](QString script_label){ item->event->put("script_label", script_label); }); //connect(item, SIGNAL(scriptChanged(QString)), frame->ui->comboBox_script, SLOT(setValue(QString))); - item->bind(frame->ui->comboBox_script, "script_label"); + */ - /*fields << "movement_type"; + fields << "movement_type"; fields << "radius_x"; fields << "radius_y"; fields << "script_label"; fields << "event_flag"; fields << "is_trainer"; - fields << "sight_radius_tree_id";*/ + fields << "sight_radius_tree_id"; } else if (event_type == EventType::Warp) { fields << "destination_map_name"; @@ -1138,19 +1124,19 @@ void MainWindow::updateSelectedObjects() { if (event_type == EventType::Object) { target = ui->eventsObjects_ScrollAreaContents; - ui->tabWidget_EventType->setCurrentIndex(0); + ui->tabWidget_EventType->setCurrentWidget(ui->tab_Objects); } else if (event_type == EventType::Warp) { target = ui->eventsWarps_ScrollAreaContents; - ui->tabWidget_EventType->setCurrentIndex(1); + ui->tabWidget_EventType->setCurrentWidget(ui->tab_Warps); } else if (event_type == EventType::CoordScript || event_type == EventType::CoordWeather) { target = ui->eventsTriggers_ScrollAreaContents; - ui->tabWidget_EventType->setCurrentIndex(2); + ui->tabWidget_EventType->setCurrentWidget(ui->tab_Triggers); } else if (event_type == EventType::Sign || event_type == EventType::HiddenItem || event_type == EventType::SecretBase) { target = ui->eventsBGs_ScrollAreaContents; - ui->tabWidget_EventType->setCurrentIndex(3); + ui->tabWidget_EventType->setCurrentWidget(ui->tab_BGs); } ui->tabWidget_EventType->removeTab(ui->tabWidget_EventType->indexOf(ui->tab_Multiple)); From f0b74ada9363ac10538e633bb5d25e7e22a38bd6 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 27 Nov 2018 19:39:57 -0600 Subject: [PATCH 3/9] Tabs working --- forms/mainwindow.ui | 219 +++++++++++++++---------------------------- include/mainwindow.h | 18 ++++ src/mainwindow.cpp | 206 +++++++++++++++++++++++++++++++++++++--- 3 files changed, 287 insertions(+), 156 deletions(-) diff --git a/forms/mainwindow.ui b/forms/mainwindow.ui index 5037faef..50968b41 100644 --- a/forms/mainwindow.ui +++ b/forms/mainwindow.ui @@ -1340,6 +1340,16 @@ 3 + + + + There are no events on the current map. + + + Qt::AlignCenter + + + @@ -1457,13 +1467,13 @@ - 4 + 0 Objects - + 0 @@ -1476,41 +1486,20 @@ 0 - - 0 - - - - - - 0 - 0 - - - - QAbstractScrollArea::AdjustIgnored - + + true - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - + 0 0 432 - 584 + 565 - - - 0 - 0 - - @@ -1520,7 +1509,7 @@ Warps - + 0 @@ -1533,41 +1522,20 @@ 0 - - 0 - - - - - - 0 - 0 - - - - QAbstractScrollArea::AdjustIgnored - + + true - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - + 0 0 432 - 584 + 565 - - - 0 - 0 - - @@ -1577,7 +1545,7 @@ Triggers - + 0 @@ -1590,41 +1558,20 @@ 0 - - 0 - - - - - - 0 - 0 - - - - QAbstractScrollArea::AdjustIgnored - + + true - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - + 0 0 432 - 584 + 565 - - - 0 - 0 - - @@ -1634,7 +1581,7 @@ BGs - + 0 @@ -1647,40 +1594,55 @@ 0 - - 0 - - - - - - 0 - 0 - - - - QAbstractScrollArea::AdjustIgnored - + + true - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - + 0 0 432 - 584 + 565 - - - 0 - 0 - + + + + + + + + Healspots + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + true + + + + + 0 + 0 + 432 + 565 + @@ -1691,7 +1653,7 @@ Multiple - + 0 @@ -1704,27 +1666,12 @@ 0 - - 0 - - - - - - 0 - 0 - - - - QAbstractScrollArea::AdjustIgnored - + + true - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - + 0 @@ -1733,12 +1680,6 @@ 565 - - - 0 - 0 - - @@ -1746,16 +1687,6 @@ - - - - There are no events on the current map. - - - Qt::AlignCenter - - - @@ -2646,6 +2577,11 @@ + + NoScrollComboBox + QComboBox +
noscrollcombobox.h
+
GraphicsView QGraphicsView @@ -2656,11 +2592,6 @@ QToolButton
neweventtoolbutton.h
- - NoScrollComboBox - QComboBox -
noscrollcombobox.h
-
diff --git a/include/mainwindow.h b/include/mainwindow.h index 62582552..3e998bb7 100644 --- a/include/mainwindow.h +++ b/include/mainwindow.h @@ -78,6 +78,7 @@ private slots: void addNewEvent(QString); void updateSelectedObjects(); + void updateObjects(); void on_toolButton_Paint_clicked(); @@ -133,6 +134,8 @@ private slots: void on_lineEdit_filterBox_textChanged(const QString &arg1); + void eventTabChanged(int index); + private: Ui::MainWindow *ui; TilesetEditor *tilesetEditor = nullptr; @@ -144,6 +147,21 @@ private: QIcon* mapIcon; QIcon* mapEditedIcon; + QWidget *eventTabObjectWidget; + QWidget *eventTabWarpWidget; + QWidget *eventTabTriggerWidget; + QWidget *eventTabBGWidget; + QWidget *eventTabHealspotWidget; + QWidget *eventTabMultipleWidget; + + DraggablePixmapItem *selectedObject; + DraggablePixmapItem *selectedWarp; + DraggablePixmapItem *selectedTrigger; + DraggablePixmapItem *selectedBG; + DraggablePixmapItem *selectedHealspot; + + bool isProgrammaticEventTabChange; + enum MapSortOrder { Group = 0, Name = 1, diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index d203ae7b..799e5bcf 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -28,7 +28,13 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), - ui(new Ui::MainWindow) + ui(new Ui::MainWindow), + selectedObject(nullptr), + selectedWarp(nullptr), + selectedTrigger(nullptr), + selectedBG(nullptr), + selectedHealspot(nullptr), + isProgrammaticEventTabChange(false) { QCoreApplication::setOrganizationName("pret"); QCoreApplication::setApplicationName("porymap"); @@ -67,11 +73,12 @@ void MainWindow::initCustomUI() { void MainWindow::initExtraSignals() { connect(ui->newEventToolButton, SIGNAL(newEventAdded(QString)), this, SLOT(addNewEvent(QString))); + connect(ui->tabWidget_EventType, &QTabWidget::currentChanged, this, &MainWindow::eventTabChanged); } void MainWindow::initEditor() { this->editor = new Editor(ui); - connect(this->editor, SIGNAL(objectsChanged()), this, SLOT(updateSelectedObjects())); + connect(this->editor, SIGNAL(objectsChanged()), this, SLOT(updateObjects())); connect(this->editor, SIGNAL(selectedObjectsChanged()), this, SLOT(updateSelectedObjects())); connect(this->editor, SIGNAL(loadMapRequested(QString, QString)), this, SLOT(onLoadMapRequested(QString, QString))); connect(this->editor, SIGNAL(tilesetChanged(QString)), this, SLOT(onTilesetChanged(QString))); @@ -97,6 +104,14 @@ void MainWindow::initMiscHeapObjects() { mapListProxyModel->setSourceModel(mapListModel); ui->mapList->setModel(mapListProxyModel); + + eventTabObjectWidget = ui->tab_Objects; + eventTabWarpWidget = ui->tab_Warps; + eventTabTriggerWidget = ui->tab_Triggers; + eventTabBGWidget = ui->tab_BGs; + eventTabHealspotWidget = ui->tab_Healspots; + eventTabMultipleWidget = ui->tab_Multiple; + ui->tabWidget_EventType->clear(); } void MainWindow::initMapSortOrder() { @@ -874,10 +889,73 @@ void MainWindow::addNewEvent(QString event_type) if (object) { editor->selectMapEvent(object, false); } - updateSelectedObjects(); + updateObjects(); } } +void MainWindow::updateObjects() { + ui->tabWidget_EventType->clear(); + selectedObject = nullptr; + selectedWarp = nullptr; + selectedTrigger = nullptr; + selectedBG = nullptr; + selectedHealspot = nullptr; + + bool hasObjects = false; + bool hasWarps = false; + bool hasTriggers = false; + bool hasBGs = false; + bool hasHealspots = false; + + for (DraggablePixmapItem *item : *editor->getObjects()) + { + QString event_type = item->event->get("event_type"); + + if (event_type == EventType::Object) { + hasObjects = true; + } + else if (event_type == EventType::Warp) { + hasWarps = true; + } + else if (event_type == EventType::CoordScript || event_type == EventType::CoordWeather) { + hasTriggers = true; + } + else if (event_type == EventType::Sign || event_type == EventType::HiddenItem || event_type == EventType::SecretBase) { + hasBGs = true; + } + else if (event_type == EventType::HealLocation) { + hasHealspots = true; + } + } + + if (hasObjects) + { + ui->tabWidget_EventType->addTab(eventTabObjectWidget, "Objects"); + } + + if (hasWarps) + { + ui->tabWidget_EventType->addTab(eventTabWarpWidget, "Warps"); + } + + if (hasTriggers) + { + ui->tabWidget_EventType->addTab(eventTabTriggerWidget, "Triggers"); + } + + if (hasBGs) + { + ui->tabWidget_EventType->addTab(eventTabBGWidget, "BGs"); + } + + if (hasHealspots) + { + ui->tabWidget_EventType->addTab(eventTabHealspotWidget, "Healspots"); + } + + updateSelectedObjects(); +} + // Should probably just pass layout and let the editor work it out void MainWindow::updateSelectedObjects() { QList *all_events = editor->getObjects(); @@ -1116,33 +1194,37 @@ void MainWindow::updateSelectedObjects() { //int scroll = ui->scrollArea_4->verticalScrollBar()->value(); - QWidget *target = ui->eventsMultiple_ScrollAreaContents; + QWidget *target = ui->scrollAreaWidgetContents_Multiple; if (events->length() == 1) { QString event_type = (*events)[0]->event->get("event_type"); + isProgrammaticEventTabChange = true; + if (event_type == EventType::Object) { - target = ui->eventsObjects_ScrollAreaContents; + target = ui->scrollAreaWidgetContents_Objects; ui->tabWidget_EventType->setCurrentWidget(ui->tab_Objects); } else if (event_type == EventType::Warp) { - target = ui->eventsWarps_ScrollAreaContents; + target = ui->scrollAreaWidgetContents_Warps; ui->tabWidget_EventType->setCurrentWidget(ui->tab_Warps); } else if (event_type == EventType::CoordScript || event_type == EventType::CoordWeather) { - target = ui->eventsTriggers_ScrollAreaContents; + target = ui->scrollAreaWidgetContents_Triggers; ui->tabWidget_EventType->setCurrentWidget(ui->tab_Triggers); } else if (event_type == EventType::Sign || event_type == EventType::HiddenItem || event_type == EventType::SecretBase) { - target = ui->eventsBGs_ScrollAreaContents; + target = ui->scrollAreaWidgetContents_BGs; ui->tabWidget_EventType->setCurrentWidget(ui->tab_BGs); } + else if (event_type == EventType::HealLocation) { + target = ui->scrollAreaWidgetContents_Healspots; + ui->tabWidget_EventType->setCurrentWidget(ui->tab_Healspots); + } ui->tabWidget_EventType->removeTab(ui->tabWidget_EventType->indexOf(ui->tab_Multiple)); - if (target->children().length()) { - qDeleteAll(target->children()); - } + isProgrammaticEventTabChange = false; } else if (events->length() > 1) { @@ -1181,6 +1263,106 @@ void MainWindow::updateSelectedObjects() { } } +void MainWindow::eventTabChanged(int index) +{ + if (!isProgrammaticEventTabChange && editor->map != nullptr) + { + QWidget *tab = ui->tabWidget_EventType->widget(index); + DraggablePixmapItem *selectedEvent = nullptr; + + if (tab == eventTabObjectWidget) + { + if (selectedObject == nullptr) + { + for (DraggablePixmapItem *item : *editor->getObjects()) + { + QString event_type = item->event->get("event_type"); + if (event_type == EventType::Object) + { + selectedObject = item; + break; + } + } + } + + selectedEvent = selectedObject; + } + else if (tab == eventTabWarpWidget) + { + if (selectedWarp == nullptr) + { + for (DraggablePixmapItem *item : *editor->getObjects()) + { + QString event_type = item->event->get("event_type"); + if (event_type == EventType::Warp) + { + selectedWarp = item; + break; + } + } + } + + selectedEvent = selectedWarp; + } + else if (tab == eventTabTriggerWidget) + { + if (selectedTrigger == nullptr) + { + for (DraggablePixmapItem *item : *editor->getObjects()) + { + QString event_type = item->event->get("event_type"); + if (event_type == EventType::CoordScript || event_type == EventType::CoordWeather) + { + selectedTrigger = item; + break; + } + } + } + + selectedEvent = selectedTrigger; + } + else if (tab == eventTabBGWidget) + { + if (selectedBG == nullptr) + { + for (DraggablePixmapItem *item : *editor->getObjects()) + { + QString event_type = item->event->get("event_type"); + if (event_type == EventType::Sign || event_type == EventType::HiddenItem || event_type == EventType::SecretBase) + { + selectedBG = item; + break; + } + } + } + + selectedEvent = selectedBG; + } + else if (tab == eventTabHealspotWidget) + { + if (selectedHealspot == nullptr) + { + for (DraggablePixmapItem *item : *editor->getObjects()) + { + QString event_type = item->event->get("event_type"); + if (event_type == EventType::HealLocation) + { + selectedHealspot = item; + break; + } + } + } + + selectedEvent = selectedHealspot; + } + + if (selectedObject != nullptr) + editor->selectMapEvent(selectedEvent); + } + + isProgrammaticEventTabChange = false; +} + void MainWindow::on_toolButton_deleteObject_clicked() { if (editor && editor->selected_events) { @@ -1197,7 +1379,7 @@ void MainWindow::on_toolButton_deleteObject_clicked() qDebug() << "Cannot delete event of type " << item->event->get("event_type"); } } - updateSelectedObjects(); + updateObjects(); } } } From 68905aae1cd412feb7b5f1dcd8bc2d1585913d94 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Thu, 29 Nov 2018 21:59:03 -0600 Subject: [PATCH 4/9] Tabbed events mostly working --- forms/eventpropertiesframe.ui | 39 +++++++-- forms/mainwindow.ui | 8 +- include/mainwindow.h | 3 + src/mainwindow.cpp | 155 +++++++++++++++++++++++----------- 4 files changed, 150 insertions(+), 55 deletions(-) diff --git a/forms/eventpropertiesframe.ui b/forms/eventpropertiesframe.ui index 5007d951..1e951a75 100644 --- a/forms/eventpropertiesframe.ui +++ b/forms/eventpropertiesframe.ui @@ -84,11 +84,40 @@ - - - Object 1 - - + + + + + + 0 + 0 + + + + Qt::StrongFocus + + + The index of the event currently being inspected. + + + 255 + + + + + + + + 0 + 0 + + + + Object 1 + + + + diff --git a/forms/mainwindow.ui b/forms/mainwindow.ui index 50968b41..9c1c006d 100644 --- a/forms/mainwindow.ui +++ b/forms/mainwindow.ui @@ -1467,7 +1467,7 @@ - 0 + 5 @@ -1668,6 +1668,12 @@
+ + + 0 + 0 + + true diff --git a/include/mainwindow.h b/include/mainwindow.h index 3e998bb7..f7dec871 100644 --- a/include/mainwindow.h +++ b/include/mainwindow.h @@ -136,6 +136,8 @@ private slots: void eventTabChanged(int index); + void selectedEventIndexChanged(int index); + private: Ui::MainWindow *ui; TilesetEditor *tilesetEditor = nullptr; @@ -195,6 +197,7 @@ private: void loadUserSettings(); void openRecentProject(); void updateTilesetEditor(); + QString getEventGroupFromTabWidget(QWidget *tab); bool isProjectOpen(); }; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 799e5bcf..237e9680 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1007,12 +1007,16 @@ void MainWindow::updateSelectedObjects() { if (event_type == "event_warp") { event_offs = 0; } else { event_offs = 1; } frame->ui->label_name->setText( - QString("%1: %2 %3") - .arg(editor->project->getMap(map_name)->events.value(event_group_type).indexOf(item->event) + event_offs) + QString("%1 %2") .arg(map_name) .arg(event_type) ); + frame->ui->spinBox_index->setValue(editor->project->getMap(map_name)->events.value(event_group_type).indexOf(item->event) + event_offs); + frame->ui->spinBox_index->setMinimum(event_offs); + frame->ui->spinBox_index->setMaximum(editor->project->getMap(map_name)->events.value(event_group_type).length() + event_offs - 1); + connect(frame->ui->spinBox_index, QOverload::of(&QSpinBox::valueChanged), this, &MainWindow::selectedEventIndexChanged); + frame->ui->label_spritePixmap->setPixmap(item->event->pixmap); connect(item, SIGNAL(spriteChanged(QPixmap)), frame->ui->label_spritePixmap, SLOT(setPixmap(QPixmap))); @@ -1194,37 +1198,41 @@ void MainWindow::updateSelectedObjects() { //int scroll = ui->scrollArea_4->verticalScrollBar()->value(); + QScrollArea *scrollTarget = ui->scrollArea_Multiple; QWidget *target = ui->scrollAreaWidgetContents_Multiple; + isProgrammaticEventTabChange = true; + if (events->length() == 1) { - QString event_type = (*events)[0]->event->get("event_type"); + QString event_group_type = (*events)[0]->event->get("event_group_type"); - isProgrammaticEventTabChange = true; - - if (event_type == EventType::Object) { + if (event_group_type == "object_event_group") { + scrollTarget = ui->scrollArea_Objects; target = ui->scrollAreaWidgetContents_Objects; ui->tabWidget_EventType->setCurrentWidget(ui->tab_Objects); } - else if (event_type == EventType::Warp) { + else if (event_group_type == "warp_event_group") { + scrollTarget = ui->scrollArea_Warps; target = ui->scrollAreaWidgetContents_Warps; ui->tabWidget_EventType->setCurrentWidget(ui->tab_Warps); } - else if (event_type == EventType::CoordScript || event_type == EventType::CoordWeather) { + else if (event_group_type == "coord_event_group") { + scrollTarget = ui->scrollArea_Triggers; target = ui->scrollAreaWidgetContents_Triggers; ui->tabWidget_EventType->setCurrentWidget(ui->tab_Triggers); } - else if (event_type == EventType::Sign || event_type == EventType::HiddenItem || event_type == EventType::SecretBase) { + else if (event_group_type == "bg_event_group") { + scrollTarget = ui->scrollArea_BGs; target = ui->scrollAreaWidgetContents_BGs; ui->tabWidget_EventType->setCurrentWidget(ui->tab_BGs); } - else if (event_type == EventType::HealLocation) { + else if (event_group_type == "heal_event_group") { + scrollTarget = ui->scrollArea_Healspots; target = ui->scrollAreaWidgetContents_Healspots; ui->tabWidget_EventType->setCurrentWidget(ui->tab_Healspots); } ui->tabWidget_EventType->removeTab(ui->tabWidget_EventType->indexOf(ui->tab_Multiple)); - - isProgrammaticEventTabChange = false; } else if (events->length() > 1) { @@ -1232,16 +1240,24 @@ void MainWindow::updateSelectedObjects() { ui->tabWidget_EventType->setCurrentWidget(ui->tab_Multiple); } + isProgrammaticEventTabChange = false; + if (events->length() != 0) { - if (target->children().length()) { - qDeleteAll(target->children()); + if (target->children().length()) + { + for (QObject *obj : target->children()) + { + obj->deleteLater(); + } + + delete target->layout(); } QVBoxLayout *layout = new QVBoxLayout(target); target->setLayout(layout); - //ui->scrollArea_4->setWidgetResizable(true); - //ui->scrollArea_4->setWidget(target); + scrollTarget->setWidgetResizable(true); + scrollTarget->setWidget(target); for (EventPropertiesFrame *frame : frames) { layout->addWidget(frame); @@ -1263,22 +1279,47 @@ void MainWindow::updateSelectedObjects() { } } +QString MainWindow::getEventGroupFromTabWidget(QWidget *tab) +{ + QString ret = ""; + if (tab == eventTabObjectWidget) + { + ret = "object_event_group"; + } + else if (tab == eventTabWarpWidget) + { + ret = "warp_event_group"; + } + else if (tab == eventTabTriggerWidget) + { + ret = "coord_event_group"; + } + else if (tab == eventTabBGWidget) + { + ret = "bg_event_group"; + } + else if (tab == eventTabHealspotWidget) + { + ret = "heal_event_group"; + } + return ret; +} + void MainWindow::eventTabChanged(int index) { if (!isProgrammaticEventTabChange && editor->map != nullptr) { - QWidget *tab = ui->tabWidget_EventType->widget(index); + QString group = getEventGroupFromTabWidget(ui->tabWidget_EventType->widget(index)); DraggablePixmapItem *selectedEvent = nullptr; - if (tab == eventTabObjectWidget) + if (group == "object_event_group") { if (selectedObject == nullptr) { - for (DraggablePixmapItem *item : *editor->getObjects()) - { - QString event_type = item->event->get("event_type"); - if (event_type == EventType::Object) - { + Event *event = editor->map->events.value(group).at(0); + for (QGraphicsItem *child : editor->events_group->childItems()) { + DraggablePixmapItem *item = static_cast(child); + if (item->event == event) { selectedObject = item; break; } @@ -1287,15 +1328,14 @@ void MainWindow::eventTabChanged(int index) selectedEvent = selectedObject; } - else if (tab == eventTabWarpWidget) + else if (group == "warp_event_group") { if (selectedWarp == nullptr) { - for (DraggablePixmapItem *item : *editor->getObjects()) - { - QString event_type = item->event->get("event_type"); - if (event_type == EventType::Warp) - { + Event *event = editor->map->events.value(group).at(0); + for (QGraphicsItem *child : editor->events_group->childItems()) { + DraggablePixmapItem *item = static_cast(child); + if (item->event == event) { selectedWarp = item; break; } @@ -1304,15 +1344,14 @@ void MainWindow::eventTabChanged(int index) selectedEvent = selectedWarp; } - else if (tab == eventTabTriggerWidget) + else if (group == "coord_event_group") { if (selectedTrigger == nullptr) { - for (DraggablePixmapItem *item : *editor->getObjects()) - { - QString event_type = item->event->get("event_type"); - if (event_type == EventType::CoordScript || event_type == EventType::CoordWeather) - { + Event *event = editor->map->events.value(group).at(0); + for (QGraphicsItem *child : editor->events_group->childItems()) { + DraggablePixmapItem *item = static_cast(child); + if (item->event == event) { selectedTrigger = item; break; } @@ -1321,15 +1360,14 @@ void MainWindow::eventTabChanged(int index) selectedEvent = selectedTrigger; } - else if (tab == eventTabBGWidget) + else if (group == "bg_event_group") { if (selectedBG == nullptr) { - for (DraggablePixmapItem *item : *editor->getObjects()) - { - QString event_type = item->event->get("event_type"); - if (event_type == EventType::Sign || event_type == EventType::HiddenItem || event_type == EventType::SecretBase) - { + Event *event = editor->map->events.value(group).at(0); + for (QGraphicsItem *child : editor->events_group->childItems()) { + DraggablePixmapItem *item = static_cast(child); + if (item->event == event) { selectedBG = item; break; } @@ -1338,15 +1376,14 @@ void MainWindow::eventTabChanged(int index) selectedEvent = selectedBG; } - else if (tab == eventTabHealspotWidget) + else if (group == "heal_event_group") { if (selectedHealspot == nullptr) { - for (DraggablePixmapItem *item : *editor->getObjects()) - { - QString event_type = item->event->get("event_type"); - if (event_type == EventType::HealLocation) - { + Event *event = editor->map->events.value(group).at(0); + for (QGraphicsItem *child : editor->events_group->childItems()) { + DraggablePixmapItem *item = static_cast(child); + if (item->event == event) { selectedHealspot = item; break; } @@ -1356,19 +1393,39 @@ void MainWindow::eventTabChanged(int index) selectedEvent = selectedHealspot; } - if (selectedObject != nullptr) + if (selectedEvent != nullptr) editor->selectMapEvent(selectedEvent); } isProgrammaticEventTabChange = false; } +void MainWindow::selectedEventIndexChanged(int index) +{ + QString group = getEventGroupFromTabWidget(ui->tabWidget_EventType->currentWidget()); + int event_offs; + if (group == "warp_event_group") { event_offs = 0; } + else { event_offs = 1; } + Event *event = editor->map->events.value(group).at(index - event_offs); + DraggablePixmapItem *selectedEvent = nullptr; + for (QGraphicsItem *child : editor->events_group->childItems()) { + DraggablePixmapItem *item = static_cast(child); + if (item->event == event) { + selectedEvent = item; + break; + } + } + + if (selectedEvent != nullptr) + editor->selectMapEvent(selectedEvent); +} + void MainWindow::on_toolButton_deleteObject_clicked() { if (editor && editor->selected_events) { if (editor->selected_events->length()) { for (DraggablePixmapItem *item : *editor->selected_events) { - if (item->event->get("event_type") != EventType::HealLocation) { + if (item->event->get("event_group_type") != "heal_event_group") { editor->deleteEvent(item->event); if (editor->scene->items().contains(item)) { editor->scene->removeItem(item); From 15e16798fc505ff543cba4736d55b98dcbfb7f88 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Fri, 30 Nov 2018 00:24:56 -0600 Subject: [PATCH 5/9] Fix double event select change --- src/editor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/editor.cpp b/src/editor.cpp index cd243dcb..499e5461 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -999,7 +999,7 @@ void DraggablePixmapItem::mousePressEvent(QGraphicsSceneMouseEvent *mouse) { last_x = static_cast(mouse->pos().x() + this->pos().x()) / 16; last_y = static_cast(mouse->pos().y() + this->pos().y()) / 16; this->editor->selectMapEvent(this, mouse->modifiers() & Qt::ControlModifier); - this->editor->updateSelectedEvents(); + //this->editor->updateSelectedEvents(); selectingEvent = true; //qDebug() << QString("(%1, %2)").arg(event->get("x")).arg(event->get("y")); } From 1907dcbe1d72aac2100e56842f587240838ca5c3 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 4 Dec 2018 12:58:49 -0600 Subject: [PATCH 6/9] Remove spinbox from multiple event view --- forms/mainwindow.ui | 20 ++++++++++---------- src/mainwindow.cpp | 15 +++++++++++---- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/forms/mainwindow.ui b/forms/mainwindow.ui index 9c1c006d..33c2fe3e 100644 --- a/forms/mainwindow.ui +++ b/forms/mainwindow.ui @@ -1496,8 +1496,8 @@ 0 0 - 432 - 565 + 98 + 28
@@ -1532,8 +1532,8 @@ 0 0 - 432 - 565 + 98 + 28 @@ -1568,8 +1568,8 @@ 0 0 - 432 - 565 + 98 + 28 @@ -1604,8 +1604,8 @@ 0 0 - 432 - 565 + 98 + 28 @@ -1640,8 +1640,8 @@ 0 0 - 432 - 565 + 98 + 28 diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 237e9680..16adf61a 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1012,10 +1012,17 @@ void MainWindow::updateSelectedObjects() { .arg(event_type) ); - frame->ui->spinBox_index->setValue(editor->project->getMap(map_name)->events.value(event_group_type).indexOf(item->event) + event_offs); - frame->ui->spinBox_index->setMinimum(event_offs); - frame->ui->spinBox_index->setMaximum(editor->project->getMap(map_name)->events.value(event_group_type).length() + event_offs - 1); - connect(frame->ui->spinBox_index, QOverload::of(&QSpinBox::valueChanged), this, &MainWindow::selectedEventIndexChanged); + if (events->count() == 1) + { + frame->ui->spinBox_index->setValue(editor->project->getMap(map_name)->events.value(event_group_type).indexOf(item->event) + event_offs); + frame->ui->spinBox_index->setMinimum(event_offs); + frame->ui->spinBox_index->setMaximum(editor->project->getMap(map_name)->events.value(event_group_type).length() + event_offs - 1); + connect(frame->ui->spinBox_index, QOverload::of(&QSpinBox::valueChanged), this, &MainWindow::selectedEventIndexChanged); + } + else + { + frame->ui->spinBox_index->setVisible(false); + } frame->ui->label_spritePixmap->setPixmap(item->event->pixmap); connect(item, SIGNAL(spriteChanged(QPixmap)), frame->ui->label_spritePixmap, SLOT(setPixmap(QPixmap))); From e184ff2a0403e6b352f4428d7b4e43e7568afc8e Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 4 Dec 2018 13:06:18 -0600 Subject: [PATCH 7/9] Allow scrolling in event tabs --- forms/mainwindow.ui | 78 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 66 insertions(+), 12 deletions(-) diff --git a/forms/mainwindow.ui b/forms/mainwindow.ui index 33c2fe3e..d1ace048 100644 --- a/forms/mainwindow.ui +++ b/forms/mainwindow.ui @@ -158,7 +158,7 @@ - 1 + 0 false @@ -1467,7 +1467,7 @@ - 5 + 0 @@ -1491,15 +1491,24 @@ true + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + 0 0 - 98 - 28 + 432 + 565 + + + 0 + 0 + + @@ -1527,15 +1536,24 @@ true + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + 0 0 - 98 - 28 + 432 + 565 + + + 0 + 0 + + @@ -1563,15 +1581,24 @@ true + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + 0 0 - 98 - 28 + 432 + 565 + + + 0 + 0 + + @@ -1599,15 +1626,24 @@ true + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + 0 0 - 98 - 28 + 432 + 565 + + + 0 + 0 + + @@ -1635,15 +1671,24 @@ true + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + 0 0 - 98 - 28 + 432 + 565 + + + 0 + 0 + + @@ -1677,6 +1722,9 @@ true + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + @@ -1686,6 +1734,12 @@ 565 + + + 0 + 0 + + From 2799a3b584267cd5b2afc50509b2d52f67e57fae Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 4 Dec 2018 13:36:22 -0600 Subject: [PATCH 8/9] Make sure event of type exists first --- src/mainwindow.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 16adf61a..f409af34 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1321,7 +1321,7 @@ void MainWindow::eventTabChanged(int index) if (group == "object_event_group") { - if (selectedObject == nullptr) + if (selectedObject == nullptr && editor->map->events.value(group).count()) { Event *event = editor->map->events.value(group).at(0); for (QGraphicsItem *child : editor->events_group->childItems()) { @@ -1337,7 +1337,7 @@ void MainWindow::eventTabChanged(int index) } else if (group == "warp_event_group") { - if (selectedWarp == nullptr) + if (selectedWarp == nullptr && editor->map->events.value(group).count()) { Event *event = editor->map->events.value(group).at(0); for (QGraphicsItem *child : editor->events_group->childItems()) { @@ -1353,7 +1353,7 @@ void MainWindow::eventTabChanged(int index) } else if (group == "coord_event_group") { - if (selectedTrigger == nullptr) + if (selectedTrigger == nullptr && editor->map->events.value(group).count()) { Event *event = editor->map->events.value(group).at(0); for (QGraphicsItem *child : editor->events_group->childItems()) { @@ -1369,7 +1369,7 @@ void MainWindow::eventTabChanged(int index) } else if (group == "bg_event_group") { - if (selectedBG == nullptr) + if (selectedBG == nullptr && editor->map->events.value(group).count()) { Event *event = editor->map->events.value(group).at(0); for (QGraphicsItem *child : editor->events_group->childItems()) { @@ -1385,7 +1385,7 @@ void MainWindow::eventTabChanged(int index) } else if (group == "heal_event_group") { - if (selectedHealspot == nullptr) + if (selectedHealspot == nullptr && editor->map->events.value(group).count()) { Event *event = editor->map->events.value(group).at(0); for (QGraphicsItem *child : editor->events_group->childItems()) { From 9da5d8496077375a449ec20fea08a611018a96b2 Mon Sep 17 00:00:00 2001 From: Diegoisawesome Date: Tue, 4 Dec 2018 22:14:16 -0600 Subject: [PATCH 9/9] Fix segfault on map switch --- src/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index f409af34..de23a02b 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -894,12 +894,12 @@ void MainWindow::addNewEvent(QString event_type) } void MainWindow::updateObjects() { - ui->tabWidget_EventType->clear(); selectedObject = nullptr; selectedWarp = nullptr; selectedTrigger = nullptr; selectedBG = nullptr; selectedHealspot = nullptr; + ui->tabWidget_EventType->clear(); bool hasObjects = false; bool hasWarps = false;