Skip to content

Commit f70d07a

Browse files
authored
Qtfred general table viewer dialog (#7344)
* qtfred reusable table viewer dialog * better error messages char
1 parent cfd9e00 commit f70d07a

22 files changed

Lines changed: 184 additions & 389 deletions

qtfred/source_groups.cmake

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ add_file_folder("Source/Mission/Dialogs"
7070
src/mission/dialogs/MissionSpecDialogModel.h
7171
src/mission/dialogs/MusicPlayerDialogModel.cpp
7272
src/mission/dialogs/MusicPlayerDialogModel.h
73-
src/mission/dialogs/MusicTBLViewerModel.cpp
74-
src/mission/dialogs/MusicTBLViewerModel.h
7573
src/mission/dialogs/ObjectOrientEditorDialogModel.cpp
7674
src/mission/dialogs/ObjectOrientEditorDialogModel.h
7775
src/mission/dialogs/PropEditorDialogModel.cpp
@@ -86,6 +84,8 @@ add_file_folder("Source/Mission/Dialogs"
8684
src/mission/dialogs/ShieldSystemDialogModel.h
8785
src/mission/dialogs/TeamLoadoutDialogModel.cpp
8886
src/mission/dialogs/TeamLoadoutDialogModel.h
87+
src/mission/dialogs/TableViewerModel.cpp
88+
src/mission/dialogs/TableViewerModel.h
8989
src/mission/dialogs/VariableDialogModel.cpp
9090
src/mission/dialogs/VariableDialogModel.h
9191
src/mission/dialogs/VoiceActingManagerModel.h
@@ -120,12 +120,8 @@ add_file_folder("Source/Mission/Dialogs/ShipEditor"
120120
src/mission/dialogs/ShipEditor/ShipSpecialStatsDialogModel.cpp
121121
src/mission/dialogs/ShipEditor/ShipTextureReplacementDialogModel.h
122122
src/mission/dialogs/ShipEditor/ShipTextureReplacementDialogModel.cpp
123-
src/mission/dialogs/ShipEditor/ShipTBLViewerModel.cpp
124-
src/mission/dialogs/ShipEditor/ShipTBLViewerModel.h
125123
src/mission/dialogs/ShipEditor/ShipWeaponsDialogModel.cpp
126124
src/mission/dialogs/ShipEditor/ShipWeaponsDialogModel.h
127-
src/mission/dialogs/ShipEditor/WeaponsTBLViewerModel.cpp
128-
src/mission/dialogs/ShipEditor/WeaponsTBLViewerModel.h
129125
src/mission/dialogs/ShipEditor/ShipCustomWarpDialogModel.h
130126
src/mission/dialogs/ShipEditor/ShipCustomWarpDialogModel.cpp
131127
src/mission/dialogs/ShipEditor/ShipAltShipClassModel.h
@@ -178,8 +174,6 @@ add_file_folder("Source/UI/Dialogs"
178174
src/ui/dialogs/MissionSpecDialog.h
179175
src/ui/dialogs/MusicPlayerDialog.cpp
180176
src/ui/dialogs/MusicPlayerDialog.h
181-
src/ui/dialogs/MusicTBLViewer.cpp
182-
src/ui/dialogs/MusicTBLViewer.h
183177
src/ui/dialogs/ObjectOrientEditorDialog.cpp
184178
src/ui/dialogs/ObjectOrientEditorDialog.h
185179
src/ui/dialogs/PropEditorDialog.cpp
@@ -194,7 +188,9 @@ add_file_folder("Source/UI/Dialogs"
194188
src/ui/dialogs/SelectionDialog.h
195189
src/ui/dialogs/ShieldSystemDialog.h
196190
src/ui/dialogs/ShieldSystemDialog.cpp
197-
src/ui/dialogs/TeamLoadoutDialog.cpp
191+
src/ui/dialogs/TableViewerDialog.cpp
192+
src/ui/dialogs/TableViewerDialog.h
193+
src/ui/dialogs/TeamLoadoutDialog.cpp
198194
src/ui/dialogs/TeamLoadoutDialog.h
199195
src/ui/dialogs/TemplateBrowserDialog.cpp
200196
src/ui/dialogs/TemplateBrowserDialog.h
@@ -232,8 +228,6 @@ add_file_folder("Source/UI/Dialogs/ShipEditor"
232228
src/ui/dialogs/ShipEditor/ShipSpecialStatsDialog.h
233229
src/ui/dialogs/ShipEditor/ShipTextureReplacementDialog.h
234230
src/ui/dialogs/ShipEditor/ShipTextureReplacementDialog.cpp
235-
src/ui/dialogs/ShipEditor/ShipTBLViewer.h
236-
src/ui/dialogs/ShipEditor/ShipTBLViewer.cpp
237231
src/ui/dialogs/ShipEditor/ShipWeaponsDialog.cpp
238232
src/ui/dialogs/ShipEditor/ShipWeaponsDialog.h
239233
src/ui/dialogs/ShipEditor/BankModel.cpp
@@ -242,8 +236,6 @@ add_file_folder("Source/UI/Dialogs/ShipEditor"
242236
src/ui/dialogs/ShipEditor/ShipCustomWarpDialog.cpp
243237
src/ui/dialogs/ShipEditor/ShipAltShipClass.h
244238
src/ui/dialogs/ShipEditor/ShipAltShipClass.cpp
245-
src/ui/dialogs/ShipEditor/WeaponsTBLViewer.cpp
246-
src/ui/dialogs/ShipEditor/WeaponsTBLViewer.h
247239
)
248240
add_file_folder("Source/UI/Dialogs/EventEditor"
249241
src/ui/dialogs/EventEditor/HeadAnimationPickerDialog.cpp
@@ -331,6 +323,7 @@ add_file_folder("UI"
331323
ui/SelectionDialog.ui
332324
ui/ShieldSystemDialog.ui
333325
ui/SoundEnvironmentDialog.ui
326+
ui/TableViewerDialog.ui
334327
ui/VoiceActingManager.ui
335328
ui/VolumetricNebulaDialog.ui
336329
ui/WaypointEditorDialog.ui
@@ -340,7 +333,6 @@ add_file_folder("UI"
340333
ui/ShipSpecialStatsDialog.ui
341334
ui/ShipFlagsDialog.ui
342335
ui/ShipTextureReplacementDialog.ui
343-
ui/ShipTBLViewer.ui
344336
ui/ShipCustomWarpDialog.ui
345337
ui/ShipAltShipClass.ui
346338
ui/ShipWeaponsDialog.ui

qtfred/src/mission/dialogs/MusicTBLViewerModel.cpp

Lines changed: 0 additions & 24 deletions
This file was deleted.

qtfred/src/mission/dialogs/MusicTBLViewerModel.h

Lines changed: 0 additions & 18 deletions
This file was deleted.

qtfred/src/mission/dialogs/ShipEditor/ShipTBLViewerModel.cpp

Lines changed: 0 additions & 40 deletions
This file was deleted.

qtfred/src/mission/dialogs/ShipEditor/ShipTBLViewerModel.h

Lines changed: 0 additions & 22 deletions
This file was deleted.

qtfred/src/mission/dialogs/ShipEditor/WeaponsTBLViewerModel.cpp

Lines changed: 0 additions & 32 deletions
This file was deleted.

qtfred/src/mission/dialogs/ShipEditor/WeaponsTBLViewerModel.h

Lines changed: 0 additions & 18 deletions
This file was deleted.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#include "TableViewerModel.h"
2+
3+
#include <utils/table_viewer.h>
4+
5+
namespace fso::fred::dialogs {
6+
7+
TableViewerModel::TableViewerModel(QObject* parent, EditorViewport* viewport,
8+
const char* table_filename, const char* modular_pattern)
9+
: AbstractDialogModel(parent, viewport)
10+
{
11+
initializeData(table_filename, modular_pattern, nullptr);
12+
}
13+
14+
TableViewerModel::TableViewerModel(QObject* parent, EditorViewport* viewport,
15+
const char* table_filename, const char* modular_pattern,
16+
const char* entry_name)
17+
: AbstractDialogModel(parent, viewport)
18+
{
19+
initializeData(table_filename, modular_pattern, entry_name);
20+
}
21+
22+
bool TableViewerModel::apply()
23+
{
24+
return true;
25+
}
26+
void TableViewerModel::reject() {}
27+
28+
void TableViewerModel::initializeData(const char* table_filename, const char* modular_pattern,
29+
const char* entry_name)
30+
{
31+
if (entry_name) {
32+
const SCP_string msg = "Could not find table entry: " + SCP_string(entry_name) + " in table: " + SCP_string(table_filename);
33+
_text = table_viewer::get_table_entry_text(table_filename, modular_pattern, entry_name, msg.c_str());
34+
} else {
35+
const SCP_string msg = "Could not find table: " + SCP_string(table_filename);
36+
_text = table_viewer::get_complete_table_text(table_filename, modular_pattern, msg.c_str());
37+
}
38+
modelChanged();
39+
}
40+
41+
SCP_string TableViewerModel::getText() const
42+
{
43+
return _text;
44+
}
45+
46+
} // namespace fso::fred::dialogs
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#pragma once
2+
3+
#include "AbstractDialogModel.h"
4+
5+
namespace fso::fred::dialogs {
6+
7+
class TableViewerModel : public AbstractDialogModel {
8+
SCP_string _text;
9+
10+
public:
11+
// For a full table (e.g. music.tbl)
12+
TableViewerModel(QObject* parent, EditorViewport* viewport,
13+
const char* table_filename, const char* modular_pattern);
14+
// For a specific entry (e.g. a ship or weapon by name)
15+
TableViewerModel(QObject* parent, EditorViewport* viewport,
16+
const char* table_filename, const char* modular_pattern,
17+
const char* entry_name);
18+
19+
bool apply() override;
20+
void reject() override;
21+
SCP_string getText() const;
22+
23+
private:
24+
void initializeData(const char* table_filename, const char* modular_pattern, const char* entry_name);
25+
};
26+
27+
} // namespace fso::fred::dialogs

qtfred/src/ui/dialogs/MusicPlayerDialog.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <QMessageBox>
22
#include <QCloseEvent>
3-
#include "MusicTBLViewer.h"
3+
#include <ui/dialogs/TableViewerDialog.h>
44
#include "MusicPlayerDialog.h"
55
#include "ui/util/SignalBlockers.h"
66
#include "ui_MusicPlayerDialog.h"
@@ -128,7 +128,7 @@ void MusicPlayerDialog::on_autoplayCheck_toggled(bool on)
128128

129129
void MusicPlayerDialog::on_musicTblButton_clicked()
130130
{
131-
auto dialog = new MusicTBLViewer(this, _viewport);
131+
auto dialog = new TableViewerDialog(this, _viewport, "Music TBL Data", "music.tbl", "*-mus.tbm");
132132
dialog->show();
133133
}
134134

0 commit comments

Comments
 (0)