fixed #107 and added persistent configuration
This commit is contained in:
+85
-15
@@ -1,21 +1,66 @@
|
||||
#include "config.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <direct.h>
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#include <QFile>
|
||||
#include <QXmlStreamReader>
|
||||
#include <QXmlStreamWriter>
|
||||
#include <QDebug>
|
||||
|
||||
float scale = 1.0f;
|
||||
bool vsync = true;
|
||||
bool hwaccel = false;
|
||||
int padding = 8;
|
||||
bool custom_scale = false;
|
||||
bool saved_layout = false;
|
||||
bool left_mouse_dominant = true;
|
||||
bool show_track_lines = false;
|
||||
bool scroll_zooms = false;
|
||||
Config config;
|
||||
|
||||
void load_config() {
|
||||
Config::Config()
|
||||
: saved_layout(false),
|
||||
show_track_lines(false),
|
||||
scroll_zooms(false),
|
||||
img_seq_formats("jpg|jpeg|bmp|tiff|tif|psd|png|tga|jp2|gif"),
|
||||
edit_tool_selects_links(false),
|
||||
edit_tool_also_seeks(false),
|
||||
select_also_seeks(false),
|
||||
paste_seeks(true)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Config::load(QString path) {
|
||||
QFile f(path);
|
||||
if (f.exists() && f.open(QIODevice::ReadOnly)) {
|
||||
QXmlStreamReader stream(&f);
|
||||
|
||||
while (!stream.atEnd()) {
|
||||
stream.readNext();
|
||||
if (stream.isStartElement()) {
|
||||
if (stream.name() == "SavedLayout") {
|
||||
stream.readNext();
|
||||
saved_layout = (stream.text() == "1");
|
||||
} else if (stream.name() == "ShowTrackLines") {
|
||||
stream.readNext();
|
||||
show_track_lines = (stream.text() == "1");
|
||||
} else if (stream.name() == "ScrollZooms") {
|
||||
stream.readNext();
|
||||
scroll_zooms = (stream.text() == "1");
|
||||
} else if (stream.name() == "EditToolSelectsLinks") {
|
||||
stream.readNext();
|
||||
edit_tool_selects_links = (stream.text() == "1");
|
||||
} else if (stream.name() == "EditToolAlsoSeeks") {
|
||||
stream.readNext();
|
||||
edit_tool_also_seeks = (stream.text() == "1");
|
||||
} else if (stream.name() == "SelectAlsoSeeks") {
|
||||
stream.readNext();
|
||||
select_also_seeks = (stream.text() == "1");
|
||||
} else if (stream.name() == "PasteSeeks") {
|
||||
stream.readNext();
|
||||
paste_seeks = (stream.text() == "1");
|
||||
} else if (stream.name() == "ImageSequenceFormats") {
|
||||
stream.readNext();
|
||||
img_seq_formats = stream.text().toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (stream.hasError()) {
|
||||
qDebug() << "[ERROR] Error parsing config XML." << stream.errorString();
|
||||
}
|
||||
|
||||
f.close();
|
||||
}
|
||||
/*if (!custom_scale) {
|
||||
#ifdef _WIN32
|
||||
// Get Windows UI scale - TODO may not be compatible with XP
|
||||
@@ -40,10 +85,35 @@ void load_config() {
|
||||
}*/
|
||||
}
|
||||
|
||||
void save_config() {
|
||||
void Config::save(QString path) {
|
||||
QFile f(path);
|
||||
if (!f.open(QIODevice::WriteOnly)) {
|
||||
qDebug() << "[ERROR] Could not save configuration";
|
||||
return;
|
||||
}
|
||||
|
||||
QXmlStreamWriter stream(&f);
|
||||
stream.setAutoFormatting(true);
|
||||
stream.writeStartDocument(); // doc
|
||||
stream.writeStartElement("Configuration"); // configuration
|
||||
|
||||
stream.writeTextElement("Version", SAVE_VERSION);
|
||||
stream.writeTextElement("SavedLayout", QString::number(saved_layout));
|
||||
stream.writeTextElement("ShowTrackLines", QString::number(show_track_lines));
|
||||
stream.writeTextElement("ScrollZooms", QString::number(scroll_zooms));
|
||||
stream.writeTextElement("EditToolSelectsLinks", QString::number(edit_tool_selects_links));
|
||||
stream.writeTextElement("EditToolAlsoSeeks", QString::number(edit_tool_also_seeks));
|
||||
stream.writeTextElement("SelectAlsoSeeks", QString::number(select_also_seeks));
|
||||
stream.writeTextElement("PasteSeeks", QString::number(paste_seeks));
|
||||
stream.writeTextElement("ImageSequenceFormats", img_seq_formats);
|
||||
|
||||
stream.writeEndElement();
|
||||
stream.writeEndDocument(); // doc
|
||||
f.close();
|
||||
/*#ifdef _WIN32
|
||||
_mkdir("conf");
|
||||
#else
|
||||
mkdir("conf", 0777);
|
||||
#endif*/
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user