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;