diff --git a/data/layout.xml b/data/layout.xml
index 22bd537..2c99fd5 100644
--- a/data/layout.xml
+++ b/data/layout.xml
@@ -266,6 +266,10 @@
+
+
+
+
diff --git a/src/app.cpp b/src/app.cpp
index b4b4503..d854de4 100644
--- a/src/app.cpp
+++ b/src/app.cpp
@@ -471,7 +471,8 @@ void App::init()
uirtt.create(width, height, -1, GL_RGBA8, true);
- rec_start();
+ if (Settings::value_or("auto-timelapse", false))
+ rec_start();
if (!check_license())
{
diff --git a/src/app_layout.cpp b/src/app_layout.cpp
index 31d6c84..db355bc 100644
--- a/src/app_layout.cpp
+++ b/src/app_layout.cpp
@@ -994,6 +994,28 @@ void App::init_menu_tools()
}
};
}
+
+ if (auto btn = popup_time->find("tools-timelapse"))
+ {
+ NodeCheckBox* cb = btn->find("tools-timelapse-check");
+ cb->set_value(Settings::value_or("auto-timelapse", true), false);
+
+ btn->on_click = [this, btn](Node* b)
+ {
+ NodeCheckBox* cb = btn->find("tools-timelapse-check");
+ cb->set_value(!cb->checked, true);
+ };
+
+ btn->find("tools-timelapse-check")->on_value_changed = [this, main](Node*, bool checked)
+ {
+ if (!checked && App::I->rec_running)
+ App::I->rec_stop();
+ else if (checked && !App::I->rec_running)
+ App::I->rec_start();
+ Settings::set("auto-timelapse", Serializer::Boolean(checked));
+ Settings::save();
+ };
+ }
};
popup_exp->find("clear-grids")->on_click = [this, popup_exp](Node*) {
@@ -1250,7 +1272,6 @@ void App::initLayout()
{
layers->add_layer("Default", false, true);
Canvas::I->m_unsaved = false;
- Canvas::I->timelapse_reset_encoder();
}
init_toolbar_draw();
diff --git a/src/canvas.cpp b/src/canvas.cpp
index 45d9179..c16dae8 100644
--- a/src/canvas.cpp
+++ b/src/canvas.cpp
@@ -2548,6 +2548,7 @@ bool Canvas::project_open_thread(std::string file_path)
{
pb->destroy();
App::I->title_update();
+ App::I->update_rec_frames();
App::I->animation->load_layers();
}
return true;