Skip to content

Commit 83ade93

Browse files
committed
Allow changing SGB asset paths
1 parent ac1b721 commit 83ade93

7 files changed

Lines changed: 28 additions & 9 deletions

File tree

common/include/pathedit.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ class NOVUSCOMMON_EXPORT PathEdit : public EditWidget
4040

4141
static OpenPathHandler *handler();
4242

43+
QString path() const;
44+
4345
private:
4446
QLineEdit *m_lineEdit = nullptr;
4547
QPushButton *m_openButton = nullptr;

common/include/utility.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
#include <QString>
77

88
QString fromCString(const char *string);
9+
const char *toCString(const QString &value);

common/src/pathedit.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ PathEdit::PathEdit(QWidget *parent)
3232
layout->setContentsMargins(0, 0, 0, 0);
3333

3434
m_lineEdit = new QLineEdit();
35+
connect(m_lineEdit, &QLineEdit::editingFinished, this, &EditWidget::editingFinished);
3536
layout->addWidget(m_lineEdit);
3637

3738
m_openButton = new QPushButton();
@@ -59,4 +60,9 @@ OpenPathHandler *PathEdit::handler()
5960
return openPathHandler;
6061
}
6162

63+
QString PathEdit::path() const
64+
{
65+
return m_lineEdit->text();
66+
}
67+
6268
#include "moc_pathedit.cpp"

common/src/utility.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,12 @@ QString fromCString(const char *string)
1111
physis_free_string(string);
1212
return newString;
1313
}
14+
15+
const char *toCString(const QString &value)
16+
{
17+
std::string stdStringData = value.toStdString();
18+
char *cStringData = reinterpret_cast<char *>(malloc(stdStringData.length() + 1));
19+
strcpy(cStringData, stdStringData.data());
20+
21+
return cStringData;
22+
}

parts/exd/excelmodel.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "excelmodel.h"
55

66
#include "excelresolver.h"
7+
#include "utility.h"
78

89
#include <KLocalizedString>
910
#include <QDir>
@@ -173,13 +174,9 @@ bool ExcelModel::setData(const QModelIndex &index, const QVariant &value, int ro
173174
const auto [_, row_id, subrow_id] = m_rowIndices[index.row()];
174175
auto newData = dataForIndex(index);
175176
switch (newData.tag) {
176-
case physis_Field::Tag::String: {
177-
QString qStringData = value.toString();
178-
std::string stdStringData = qStringData.toStdString();
179-
char *cStringData = reinterpret_cast<char *>(malloc(stdStringData.length() + 1));
180-
strcpy(cStringData, stdStringData.data());
181-
newData.string._0 = cStringData;
182-
} break;
177+
case physis_Field::Tag::String:
178+
newData.string._0 = toCString(value.toString());
179+
break;
183180
case physis_Field::Tag::Bool:
184181
newData.bool_._0 = value.value<bool>();
185182
break;

parts/scene/objectpropertieswidget.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "exceledit.h"
2424
#include "objectidedit.h"
2525
#include "uintedit.h"
26+
#include "utility.h"
2627

2728
#include <QLabel>
2829

@@ -570,7 +571,7 @@ void ObjectPropertiesWidget::addGameObjectSection(physis_GameInstanceObject &obj
570571
layout->addRow(i18n("Base ID"), baseIdEdit);
571572
}
572573

573-
void ObjectPropertiesWidget::addSharedGroupSection(const physis_SharedGroupInstanceObject &sharedGroup)
574+
void ObjectPropertiesWidget::addSharedGroupSection(physis_SharedGroupInstanceObject &sharedGroup)
574575
{
575576
auto section = new CollapseSection(i18n("Shared Group"));
576577
m_layout->addWidget(section);
@@ -581,6 +582,9 @@ void ObjectPropertiesWidget::addSharedGroupSection(const physis_SharedGroupInsta
581582

582583
auto assetPathEdit = new PathEdit();
583584
assetPathEdit->setPath(QString::fromLatin1(sharedGroup.asset_path));
585+
connect(assetPathEdit, &PathEdit::editingFinished, this, [assetPathEdit, &sharedGroup] {
586+
sharedGroup.asset_path = toCString(assetPathEdit->path());
587+
});
584588
layout->addRow(i18n("Asset Path"), assetPathEdit);
585589
}
586590

parts/scene/objectpropertieswidget.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ class ObjectPropertiesWidget : public QWidget
6464
void addTriggerBoxSection(const physis_TriggerBoxInstanceObject &triggerBox);
6565
void addNPCSection(physis_NPCInstanceObject &npc);
6666
void addGameObjectSection(physis_GameInstanceObject &object);
67-
void addSharedGroupSection(const physis_SharedGroupInstanceObject &sharedGroup);
67+
void addSharedGroupSection(physis_SharedGroupInstanceObject &sharedGroup);
6868
void addAetheryteSection(physis_AetheryteInstanceObject &aetheryte);
6969
void addExitRangeSection(const physis_ExitRangeInstanceObject &exitRange);
7070
void addEventRangeSection(const physis_EventRangeInstanceObject &eventRange);

0 commit comments

Comments
 (0)