summaryrefslogtreecommitdiff
path: root/app/bin/problemrepui.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/bin/problemrepui.c')
-rw-r--r--app/bin/problemrepui.c109
1 files changed, 109 insertions, 0 deletions
diff --git a/app/bin/problemrepui.c b/app/bin/problemrepui.c
new file mode 100644
index 0000000..22610e3
--- /dev/null
+++ b/app/bin/problemrepui.c
@@ -0,0 +1,109 @@
+/** \file problemrepui.c
+ * UI for the problem report function
+*/
+
+/* XTrkCad - Model Railroad CAD
+ * Copyright (C) 2024 Martin Fischer
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <wlib.h>
+
+#include "custom.h"
+#include "fileio.h"
+#include "layout.h"
+#include "param.h"
+#include "include/problemrep.h"
+
+static wWin_p problemrepW;
+
+#define DESCRIPTION N_("This function puts together information that can " \
+ "be helpful to analyze a problem. Private information " \
+ "like userids is removed\n\n")
+
+static paramTextData_t textData = { 60, 10 };
+
+static paramData_t problemrepPLs[] = {
+#define I_PROBLEMREPPROGRESS (0)
+#define PROBLEMREP_T ((wText_p)problemrepPLs[I_PROBLEMREPPROGRESS].control)
+ { PD_TEXT, NULL, NULL, PDO_DLGRESIZE, &textData, NULL, BO_READONLY | BT_TOP | BT_CHARUNITS }
+};
+static paramGroup_t problemrepPG = { "problemdata", 0, problemrepPLs, COUNT(problemrepPLs) };
+
+/**
+ * Create and show the problem report window
+ */
+
+void ProblemrepCreateW(void* ptr)
+{
+ if (!problemrepW) {
+ ParamRegister(&problemrepPG);
+
+ problemrepW = ParamCreateDialog(&problemrepPG,
+ MakeWindowTitle(_("Data for Problem Report")),
+ NULL, NULL, wHide, TRUE, NULL,
+ F_TOP | F_CENTER | PD_F_ALT_CANCELLABEL, NULL);
+ } else {
+ wTextClear(PROBLEMREP_T);
+ }
+ wTextAppend(PROBLEMREP_T, DESCRIPTION);
+ wShow(problemrepW);
+}
+
+void ProblemrepUpdateW(char* fmt, ...)
+{
+ int length;
+ char* buffer;
+ va_list args;
+ va_list argsc;
+ va_start(args, fmt);
+ va_copy(argsc, args);
+
+ length = vsnprintf(NULL, 0, fmt, args);
+ buffer = MyMalloc(length + sizeof(NULL));
+ va_end(args);
+
+ if (buffer) {
+ memset(buffer, 0, length +sizeof(NULL));
+
+ vsnprintf(buffer, length+sizeof(NULL), fmt, argsc);
+ wTextAppend(PROBLEMREP_T, buffer);
+
+ }
+ va_end(argsc);
+ MyFree(buffer);
+}
+
+BOOL_T
+ProblemSaveLayout(void)
+{
+ int rc = TRUE;
+ if (GetLayoutChanged()) {
+
+ rc = wNoticeEx( NT_WARNING,
+ _("Trackplan has to be saved first. " \
+ "Do you want to do so now ? "),
+ N_("Save Now..."),
+ N_("Cancel"));
+
+ if (rc) {
+ DoSave(NULL);
+ } else {
+ ProblemrepUpdateW(_("Operation cancelled\n"));
+ }
+ }
+ return(rc);
+}