summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2020-03-05 08:57:02 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-03-10 09:25:57 -0700
commit160d2ab07155d895991a5198c574fcf26c2e908f (patch)
tree26dedcc04b7cfe5f6a557d5a7b2113dd7d697be2
parent626a149b7c6793dea6db1af23068b90205b65e2a (diff)
downloadsubsurface-160d2ab07155d895991a5198c574fcf26c2e908f.tar.gz
core: make command texts available for C code
Create a C string (which the caller needs to free) with the executed commands in this session. The detour via the callback allows us to not make the corelib depend on the commands, which is nice for tests, export-html, and smtk2ssrf. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--commands/command_base.cpp4
-rw-r--r--core/qthelper.cpp13
-rw-r--r--core/qthelper.h4
3 files changed, 19 insertions, 2 deletions
diff --git a/commands/command_base.cpp b/commands/command_base.cpp
index 1f924378b..d13daf269 100644
--- a/commands/command_base.cpp
+++ b/commands/command_base.cpp
@@ -8,10 +8,14 @@ namespace Command {
static QUndoStack undoStack;
+// forward declaration
+QString changesMade();
+
// General commands
void init()
{
QObject::connect(&undoStack, &QUndoStack::cleanChanged, &updateWindowTitle);
+ changesCallback = &changesMade;
}
void clear()
diff --git a/core/qthelper.cpp b/core/qthelper.cpp
index b00201297..05612a4ce 100644
--- a/core/qthelper.cpp
+++ b/core/qthelper.cpp
@@ -46,7 +46,7 @@ static QLocale loc;
static inline QString degreeSigns()
{
- return QStringLiteral("dD\u00b0");
+ return QStringLiteral("dD\u00b0");
}
QString weight_string(int weight_in_grams)
@@ -1644,3 +1644,14 @@ char *copy_qstring(const QString &s)
{
return strdup(qPrintable(s));
}
+
+// function to call to get changes for a git commit
+QString (*changesCallback)() = nullptr;
+
+extern "C" char *get_changes_made()
+{
+ if (changesCallback != nullptr)
+ return copy_qstring(changesCallback());
+ else
+ return nullptr;
+}
diff --git a/core/qthelper.h b/core/qthelper.h
index 4c3a6aa19..c91712716 100644
--- a/core/qthelper.h
+++ b/core/qthelper.h
@@ -83,6 +83,8 @@ QVector<QPair<QString, int>> selectedDivesGasUsed();
QString getUserAgent();
QString printGPSCoords(const location_t *loc);
+extern QString (*changesCallback)();
+
#if defined __APPLE__
#define TITLE_OR_TEXT(_t, _m) "", _t + "\n" + _m
#else
@@ -150,7 +152,7 @@ depth_t string_to_depth(const char *str);
pressure_t string_to_pressure(const char *str);
volume_t string_to_volume(const char *str, pressure_t workp);
fraction_t string_to_fraction(const char *str);
-
+char *get_changes_made();
#ifdef __cplusplus
}
#endif