summaryrefslogtreecommitdiffstats
path: root/src/inkview-window.cpp
diff options
context:
space:
mode:
authorTavmjong Bah <tavmjong@free.fr>2018-10-28 20:05:46 +0000
committerTavmjong Bah <tavmjong@free.fr>2018-11-04 09:37:02 +0000
commita2c03bc4c183a094d019762334f44ce6a9082b1a (patch)
tree4322124ee8b2bde36778650fabb75bb57bc32c9b /src/inkview-window.cpp
parentRewrite of inkview using InkApplication (Gtk::Application). (diff)
downloadinkscape-a2c03bc4c183a094d019762334f44ce6a9082b1a.tar.gz
inkscape-a2c03bc4c183a094d019762334f44ce6a9082b1a.zip
Add --preload option.
Diffstat (limited to 'src/inkview-window.cpp')
-rw-r--r--src/inkview-window.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/inkview-window.cpp b/src/inkview-window.cpp
index 7f4826ae6..6567828cd 100644
--- a/src/inkview-window.cpp
+++ b/src/inkview-window.cpp
@@ -23,17 +23,25 @@ InkviewWindow::InkviewWindow(const Gio::Application::type_vec_files files,
bool fullscreen,
bool recursive,
int timer,
- double scale)
+ double scale,
+ bool preload
+ )
: _files(files)
, _fullscreen(fullscreen)
, _recursive(recursive)
, _timer(timer)
, _scale(scale)
+ , _preload(preload)
, _index(-1)
, _view(nullptr)
, _controlwindow(nullptr)
{
_files = create_file_list(_files);
+
+ if (_preload) {
+ preload_documents();
+ }
+
_documents.resize( _files.size(), nullptr); // We keep _documents and _files in sync.
// Callbacks
@@ -167,6 +175,24 @@ InkviewWindow::load_document()
return document;
}
+
+
+void
+InkviewWindow::preload_documents()
+{
+ for (auto it =_files.begin(); it != _files.end(); ) {
+
+ SPDocument* document =
+ SPDocument::createNewDoc ((*it)->get_parse_name().c_str(), true, false);
+ if (document) {
+ _documents.push_back(document);
+ ++it;
+ } else {
+ it = _files.erase(it);
+ }
+ }
+}
+
static std::string window_markup = R"(
<interface>
<object class="GtkWindow" id="ControlWindow">