File: config.cpp

package info (click to toggle)
olive-editor 20181223-2
  • links: PTS
  • area: main
  • in suites: buster
  • size: 2,844 kB
  • sloc: cpp: 20,147; xml: 315; ansic: 16; makefile: 11
file content (170 lines) | stat: -rw-r--r-- 7,984 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#include "config.h"

#include <QFile>
#include <QXmlStreamReader>
#include <QXmlStreamWriter>

#include "debug.h"

Config config;

Config::Config()
    : saved_layout(false),
	  show_track_lines(true),
      scroll_zooms(false),
      edit_tool_selects_links(false),
      edit_tool_also_seeks(false),
      select_also_seeks(false),
	  paste_seeks(true),
      img_seq_formats("jpg|jpeg|bmp|tiff|tif|psd|png|tga|jp2|gif"),
	  rectified_waveforms(false),
      default_transition_length(30),
      timecode_view(TIMECODE_DROP),
      show_title_safe_area(false),
      use_custom_title_safe_ratio(false),
	  custom_title_safe_ratio(1),
	  enable_drag_files_to_timeline(true),
	  autoscale_by_default(false),
	  recording_mode(2),
      enable_seek_to_import(false),
      enable_audio_scrubbing(true),
      drop_on_media_to_replace(true),
      autoscroll(AUTOSCROLL_PAGE_SCROLL),
      audio_rate(48000),
      fast_seeking(false),
      hover_focus(false)
{}

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();
				} else if (stream.name() == "RectifiedWaveforms") {
                    stream.readNext();
					rectified_waveforms = (stream.text() == "1");
				} else if (stream.name() == "DefaultTransitionLength") {
                    stream.readNext();
                    default_transition_length = stream.text().toInt();
                } else if (stream.name() == "TimecodeView") {
                    stream.readNext();
                    timecode_view = stream.text().toInt();
                }else if (stream.name() == "ShowTitleSafeArea") {
                    stream.readNext();
                    show_title_safe_area = (stream.text() == "1");
                } else if (stream.name() == "UseCustomTitleSafeRatio") {
                    stream.readNext();
                    use_custom_title_safe_ratio = (stream.text() == "1");
                } else if (stream.name() == "CustomTitleSafeRatio") {
                    stream.readNext();
                    custom_title_safe_ratio = stream.text().toDouble();
				} else if (stream.name() == "EnableDragFilesToTimeline") {
					stream.readNext();
					enable_drag_files_to_timeline = (stream.text() == "1");;
                } else if (stream.name() == "AutoscaleByDefault") {
                    stream.readNext();
					autoscale_by_default = (stream.text() == "1");
				} else if (stream.name() == "RecordingMode") {
					stream.readNext();
					recording_mode = stream.text().toInt();
				} else if (stream.name() == "EnableSeekToImport") {
					stream.readNext();
					enable_seek_to_import = (stream.text() == "1");
                } else if (stream.name() == "AudioScrubbing") {
                    stream.readNext();
                    enable_audio_scrubbing = (stream.text() == "1");
                } else if (stream.name() == "DropFileOnMediaToReplace") {
                    stream.readNext();
                    drop_on_media_to_replace = (stream.text() == "1");
                } else if (stream.name() == "Autoscroll") {
                    stream.readNext();
                    autoscroll = stream.text().toInt();
                } else if (stream.name() == "AudioRate") {
                    stream.readNext();
                    audio_rate = stream.text().toInt();
                } else if (stream.name() == "FastSeeking") {
                    stream.readNext();
                    fast_seeking = (stream.text() == "1");
                } else if (stream.name() == "HoverFocus") {
                    stream.readNext();
                    hover_focus = (stream.text() == "1");
                }
            }
        }
        if (stream.hasError()) {
			dout << "[ERROR] Error parsing config XML." << stream.errorString();
        }

        f.close();
	}
}

void Config::save(QString path) {
    QFile f(path);
    if (!f.open(QIODevice::WriteOnly)) {
		dout << "[ERROR] Could not save configuration";
        return;
    }

    QXmlStreamWriter stream(&f);
    stream.setAutoFormatting(true);
    stream.writeStartDocument(); // doc
    stream.writeStartElement("Configuration"); // configuration

	stream.writeTextElement("Version", QString::number(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.writeTextElement("RectifiedWaveforms", QString::number(rectified_waveforms));
	stream.writeTextElement("DefaultTransitionLength", QString::number(default_transition_length));
    stream.writeTextElement("TimecodeView", QString::number(timecode_view));
    stream.writeTextElement("ShowTitleSafeArea", QString::number(show_title_safe_area));
    stream.writeTextElement("UseCustomTitleSafeRatio", QString::number(use_custom_title_safe_ratio));
    stream.writeTextElement("CustomTitleSafeRatio", QString::number(custom_title_safe_ratio));
	stream.writeTextElement("EnableDragFilesToTimeline", QString::number(enable_drag_files_to_timeline));
    stream.writeTextElement("AutoscaleByDefault", QString::number(autoscale_by_default));
	stream.writeTextElement("RecordingMode", QString::number(recording_mode));
	stream.writeTextElement("EnableSeekToImport", QString::number(enable_seek_to_import));
    stream.writeTextElement("AudioScrubbing", QString::number(enable_audio_scrubbing));
    stream.writeTextElement("DropFileOnMediaToReplace", QString::number(drop_on_media_to_replace));
    stream.writeTextElement("Autoscroll", QString::number(autoscroll));
    stream.writeTextElement("AudioRate", QString::number(audio_rate));
    stream.writeTextElement("FastSeeking", QString::number(fast_seeking));
    stream.writeTextElement("HoverFocus", QString::number(hover_focus));

	stream.writeEndElement(); // configuration
    stream.writeEndDocument(); // doc
	f.close();
}