summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDaMichel <mw.pub@welter-4d.de>2016-09-08 16:43:12 +0200
committerDaMichel <mw.pub@welter-4d.de>2016-09-08 16:43:12 +0200
commit77cf67d61c8f6ae7ec00fd069b0e6586927069a3 (patch)
tree5cdb392bca39cdb48725d3dae45120f38c626fa8
parent6c72e89a8b3be6d453d03d74b9de4208d155a93f (diff)
tracklogging: begone file selector gui. Now a file select dialog will pop up when the tracker starts.
-rw-r--r--gui/options-dialog.cpp23
-rw-r--r--gui/options-dialog.hpp1
-rw-r--r--gui/options-dialog.ui65
-rw-r--r--logic/work.cpp36
-rw-r--r--logic/work.hpp2
5 files changed, 31 insertions, 96 deletions
diff --git a/gui/options-dialog.cpp b/gui/options-dialog.cpp
index dfd99e7b..0df5f854 100644
--- a/gui/options-dialog.cpp
+++ b/gui/options-dialog.cpp
@@ -75,7 +75,6 @@ OptionsDialog::OptionsDialog(std::function<void(bool)> pause_keybindings) :
tie_setting(main.center_method, ui.center_method);
tie_setting(main.tracklogging_enabled, ui.tracklogging_enabled);
- tie_setting(main.tracklogging_filename, ui.tracklogging_filenameedit);
struct tmp
{
@@ -108,8 +107,6 @@ OptionsDialog::OptionsDialog(std::function<void(bool)> pause_keybindings) :
connect(val.button, &QPushButton::clicked, this, [=]() -> void { bind_key(val.opt, val.label); });
}
}
-
- connect(ui.tracklogging_fileselectbtn, SIGNAL(clicked()), this, SLOT(browse_datalogging_file()));
}
void OptionsDialog::bind_key(key_opts& kopts, QLabel* label)
@@ -172,26 +169,6 @@ void OptionsDialog::doCancel()
emit closing();
}
-void OptionsDialog::browse_datalogging_file()
-{
- QString filename = ui.tracklogging_filenameedit->text();
- if (filename.isEmpty())
- filename = OPENTRACK_BASE_PATH;
- /* Sometimes this function freezes the app before opening the dialog.
- Might be related to https://forum.qt.io/topic/49209/qfiledialog-getopenfilename-hangs-in-windows-when-using-the-native-dialog/8
- and be a known problem. Possible solution is to use the QFileDialog::DontUseNativeDialog flag.
- Since the freeze is apparently random, I'm not sure it helped.
- */
- QString newfilename = QFileDialog::getSaveFileName(this, tr("Select Filename"), filename, tr("CSV File (*.csv)"), nullptr, QFileDialog::DontUseNativeDialog);
- if (!newfilename.isEmpty())
- ui.tracklogging_filenameedit->setText(newfilename);
-
- // dialog likes to mess with current directory
- QDir::setCurrent(OPENTRACK_BASE_PATH);
-}
-
void OptionsDialog::update_widgets_states(bool tracker_is_running)
{
- ui.tracklogging_enabled->setEnabled(!tracker_is_running);
- ui.tracklogging_fileselectbtn->setEnabled(!tracker_is_running);
}
diff --git a/gui/options-dialog.hpp b/gui/options-dialog.hpp
index f11513bf..4ab8301e 100644
--- a/gui/options-dialog.hpp
+++ b/gui/options-dialog.hpp
@@ -24,5 +24,4 @@ private slots:
void doOK();
void doCancel();
void bind_key(key_opts &kopts, QLabel* label);
- void browse_datalogging_file();
};
diff --git a/gui/options-dialog.ui b/gui/options-dialog.ui
index 97ccffff..412fc183 100644
--- a/gui/options-dialog.ui
+++ b/gui/options-dialog.ui
@@ -33,7 +33,7 @@
</sizepolicy>
</property>
<property name="currentIndex">
- <number>0</number>
+ <number>2</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
@@ -1237,7 +1237,7 @@ It won't work properly with translation compensation enabled.</string>
<item>
<widget class="QGroupBox" name="groupBox_10">
<property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@@ -1245,77 +1245,23 @@ It won't work properly with translation compensation enabled.</string>
<property name="minimumSize">
<size>
<width>0</width>
- <height>20</height>
+ <height>50</height>
</size>
</property>
<property name="title">
- <string>Data Logging</string>
+ <string>CSV Data Logging</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_211">
<property name="bottomMargin">
<number>0</number>
</property>
<item>
- <widget class="QLabel" name="tracklogging_label">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Record pose data in a csv file. WARNING: overwrites file contents without warning every time the tracker is started.</string>
- </property>
- <property name="wordWrap">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
<widget class="QCheckBox" name="tracklogging_enabled">
<property name="text">
- <string>Enable</string>
+ <string>Enable - You will be asked for a filename whenever the tracker starts</string>
</property>
</widget>
</item>
- <item>
- <widget class="QFrame" name="frame">
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <property name="spacing">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>1</number>
- </property>
- <item>
- <widget class="QPushButton" name="tracklogging_fileselectbtn">
- <property name="text">
- <string>Select File ...</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLineEdit" name="tracklogging_filenameedit">
- <property name="enabled">
- <bool>true</bool>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="inputMask">
- <string notr="true"/>
- </property>
- <property name="text">
- <string notr="true"/>
- </property>
- <property name="readOnly">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
</layout>
</widget>
</item>
@@ -1436,7 +1382,6 @@ It won't work properly with translation compensation enabled.</string>
<tabstop>src_z</tabstop>
<tabstop>invert_z</tabstop>
<tabstop>tracklogging_enabled</tabstop>
- <tabstop>tracklogging_fileselectbtn</tabstop>
</tabstops>
<resources/>
<connections/>
diff --git a/logic/work.cpp b/logic/work.cpp
index c369921c..c5fcad9a 100644
--- a/logic/work.cpp
+++ b/logic/work.cpp
@@ -1,18 +1,38 @@
#include "work.hpp"
+#include "opentrack-library-path.h"
#include <QMessageBox>
+#include <QFileDialog>
-std::shared_ptr<TrackLogger> Work::make_logger(const main_settings &s)
+static QString browse_datalogging_file(main_settings &s)
+{
+ QString filename = s.tracklogging_filename;
+ if (filename.isEmpty())
+ filename = OPENTRACK_BASE_PATH;
+ /* Sometimes this function freezes the app before opening the dialog.
+ Might be related to https://forum.qt.io/topic/49209/qfiledialog-getopenfilename-hangs-in-windows-when-using-the-native-dialog/8
+ and be a known problem. Possible solution is to use the QFileDialog::DontUseNativeDialog flag.
+ Since the freeze is apparently random, I'm not sure it helped.
+ */
+ QString newfilename = QFileDialog::getSaveFileName(nullptr, QFileDialog::tr("Select Filename"), filename, QFileDialog::tr("CSV File (*.csv)"), nullptr); //, QFileDialog::DontUseNativeDialog);
+ if (!newfilename.isEmpty())
+ {
+ s.tracklogging_filename = newfilename;
+ }
+ // dialog likes to mess with current directory
+ QDir::setCurrent(OPENTRACK_BASE_PATH);
+ return newfilename;
+}
+
+std::shared_ptr<TrackLogger> Work::make_logger(main_settings &s)
{
if (s.tracklogging_enabled)
{
+ QString filename = browse_datalogging_file(s);
if (static_cast<QString>(s.tracklogging_filename).isEmpty())
{
- QMessageBox::warning(nullptr, "Logging Error",
- "No filename given for track logging. Proceeding without logging.",
- QMessageBox::Ok,
- QMessageBox::NoButton);
+ // The user probably canceled the file dialog. In this case we don't want to do anything.
}
else
{
@@ -27,12 +47,6 @@ std::shared_ptr<TrackLogger> Work::make_logger(const main_settings &s)
}
else
{
- /* As this function has the potential to fill up the hard drive
- of the unwary with junk data, a warning is in order. */
- QMessageBox::warning(nullptr, "Logging Active",
- "Just a heads up. You are recoding pose data to " + s.tracklogging_filename + "!",
- QMessageBox::Ok,
- QMessageBox::NoButton);
return logger;
}
}
diff --git a/logic/work.hpp b/logic/work.hpp
index bf5b5b15..c29a53b0 100644
--- a/logic/work.hpp
+++ b/logic/work.hpp
@@ -39,5 +39,5 @@ struct OPENTRACK_LOGIC_EXPORT Work
void reload_shortcuts();
private:
- static std::shared_ptr<TrackLogger> make_logger(const main_settings &s);
+ static std::shared_ptr<TrackLogger> make_logger(main_settings &s);
};