Skip to content

Commit 86281e5

Browse files
authored
Qtfred custom data scripting parity (#7396)
* mirror scripting behavior from fred2 * apply scripted default custom data on new mission # Conflicts: # qtfred/src/mission/dialogs/MissionSpecDialogModel.cpp # qtfred/src/ui/dialogs/MissionSpecs/CustomDataDialog.cpp
1 parent 68aad50 commit 86281e5

5 files changed

Lines changed: 42 additions & 2 deletions

File tree

qtfred/src/mission/Editor.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <parse/parselo.h>
1212
#include <missionui/fictionviewer.h>
1313
#include <mission/missiongoals.h>
14+
#include <mission/missionparse.h>
1415
#include <asteroid/asteroid.h>
1516
#include <jumpnode/jumpnode.h>
1617
#include <prop/prop.h>
@@ -609,6 +610,7 @@ void Editor::clearMission(bool fast_reload) {
609610
strcpy_s(The_mission.modified, The_mission.created);
610611
strcpy_s(The_mission.notes, "This is a FRED2_OPEN created mission.");
611612
strcpy_s(The_mission.mission_desc, "Put mission description here");
613+
apply_default_custom_data(&The_mission);
612614

613615
// reset alternate name & callsign stuff
614616
for (auto i = 0; i < MAX_SHIPS; i++) {

qtfred/src/mission/dialogs/MissionSpecDialogModel.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include "localization/localize.h"
1515
#include "mission/missionmessage.h"
1616
#include "mission/mission_flags.h"
17+
#include "scripting/global_hooks.h"
1718

1819
#include <QtWidgets>
1920

@@ -202,6 +203,11 @@ bool MissionSpecDialogModel::apply() {
202203

203204
Editor::update_custom_wing_indexes();
204205

206+
// scripts may rebuild LuaEnums when custom data/strings change.
207+
if (scripting::hooks::FredOnMissionSpecsSave->isActive()) {
208+
scripting::hooks::FredOnMissionSpecsSave->run();
209+
}
210+
205211
return true;
206212
}
207213

qtfred/src/ui/dialogs/MissionSpecs/CustomDataDialog.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "CustomDataDialog.h"
22
#include "ui_CustomDataDialog.h"
33

4+
#include "mission/missionparse.h"
45
#include "mission/util.h"
56

67
#include <ui/util/SignalBlockers.h>
@@ -104,7 +105,7 @@ void CustomDataDialog::buildView()
104105
auto* hdr = ui->stringsTableView->horizontalHeader();
105106
hdr->setSectionsClickable(false); // no click/press behavior
106107
hdr->setSortIndicatorShown(false); // hide sort arrow
107-
hdr->setHighlightSections(false); // dont change look when selected
108+
hdr->setHighlightSections(false); // don't change look when selected
108109
hdr->setSectionsMovable(false); // no drag-to-reorder columns
109110
hdr->setFocusPolicy(Qt::NoFocus);
110111

@@ -158,8 +159,23 @@ void CustomDataDialog::loadRowIntoEditors(int row)
158159

159160
const auto* keyItem = _tableModel->item(row, ColKey);
160161
const auto* valItem = _tableModel->item(row, ColValue);
161-
ui->keyLineEdit->setText(keyItem ? keyItem->text() : QString());
162+
const auto key = keyItem ? keyItem->text() : QString();
163+
ui->keyLineEdit->setText(key);
162164
ui->valueLineEdit->setText(valItem ? valItem->text() : QString());
165+
updateHelpTextForKey(key);
166+
}
167+
168+
void CustomDataDialog::updateHelpTextForKey(const QString& key)
169+
{
170+
auto helpText = tr("No help text provided");
171+
for (const auto& entry : Default_custom_data) {
172+
if (key == QString::fromStdString(entry.key)) {
173+
helpText = QString::fromStdString(entry.description);
174+
break;
175+
}
176+
}
177+
178+
ui->helpTextBrowser->setPlainText(helpText);
163179
}
164180

165181
std::pair<SCP_string, SCP_string> CustomDataDialog::editorsToEntry() const
@@ -176,6 +192,7 @@ void CustomDataDialog::clearEditors()
176192

177193
ui->keyLineEdit->clear();
178194
ui->valueLineEdit->clear();
195+
ui->helpTextBrowser->setPlainText("");
179196
}
180197

181198
void CustomDataDialog::on_addButton_clicked()

qtfred/src/ui/dialogs/MissionSpecs/CustomDataDialog.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class CustomDataDialog final : public QDialog {
4747
void refreshTable();
4848
void selectRow(int row);
4949
void loadRowIntoEditors(int row);
50+
void updateHelpTextForKey(const QString& key);
5051
std::pair<SCP_string, SCP_string> editorsToEntry() const;
5152
void clearEditors();
5253

qtfred/ui/CustomDataDialog.ui

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,20 @@
116116
</property>
117117
</spacer>
118118
</item>
119+
<item>
120+
<widget class="QLabel" name="helpLabel">
121+
<property name="text">
122+
<string>Description</string>
123+
</property>
124+
</widget>
125+
</item>
126+
<item>
127+
<widget class="QPlainTextEdit" name="helpTextBrowser">
128+
<property name="readOnly">
129+
<bool>true</bool>
130+
</property>
131+
</widget>
132+
</item>
119133
</layout>
120134
</item>
121135
<item>

0 commit comments

Comments
 (0)