Support appending and overriding existing elements from project

This commit is contained in:
Jaby 2025-04-01 17:19:28 +02:00
parent 47b5de2d6a
commit a9801e9fe2
3 changed files with 28 additions and 7 deletions

View File

@ -70,8 +70,11 @@ pub(super) fn on_load_project_clicked(tim_manager: MutexTIMManager) -> impl FnMu
};
let mut tim_manager = tim_manager.lock().expect("VRAM already locked");
clear_all_vram_images(main_tab, &mut tim_manager);
main_window.invoke_clear_file_tab_current_selected_file();
if !main_window.get_project_widget_append_project_elements() {
clear_all_vram_images(main_tab, &mut tim_manager);
main_window.invoke_clear_file_tab_current_selected_file();
}
for job in new_project.jobs {
let (_, _) = tim_manager.load_unadded_tim(&job.file_path)?;

View File

@ -14,6 +14,8 @@ export component MainWindow inherits Window {
// Project widget values
in-out property project_widget-open_project_path <=> file_tab.project_widget-open_project_path;
in-out property project_widget-save_project_path <=> file_tab.project_widget-save_project_path;
in-out property project_widget-append_project_elements <=> file_tab.project_widget-append_project_elements;
in-out property project_widget-use_rel_paths <=> file_tab.project_widget-use_rel_paths;
callback project_widget-load_project_clicked <=> file_tab.project_widget-load_project_clicked;
callback project_widget-save_project_clicked <=> file_tab.project_widget-save_project_clicked;
callback project_widget-browse_open_project_clicked <=> file_tab.project_widget-browse_open_project_clicked;

View File

@ -8,6 +8,8 @@ export enum State {
component ProjectWidget inherits Rectangle {
in-out property <string> open_project_path;
in-out property <string> save_project_path;
in-out property <bool> append_project_elements;
in-out property <bool> use_rel_paths;
callback load_project_clicked();
callback save_project_clicked();
@ -24,7 +26,7 @@ component ProjectWidget inherits Rectangle {
VerticalLayout {
alignment: start;
Text {
text: "Select a project to open. Any existing changes will be dropped";
text: "Select a project to open.";
}
HorizontalLayout {
alignment: start;
@ -39,6 +41,15 @@ component ProjectWidget inherits Rectangle {
}
}
}
HorizontalLayout {
alignment: start;
CheckBox {
text: "Append elements from project";
toggled() => {
root.append_project_elements = self.checked;
}
}
}
HorizontalLayout {
alignment: start;
Button {
@ -72,7 +83,8 @@ component ProjectWidget inherits Rectangle {
}
}
CheckBox {
text: "Use relative path for files";
text: "Use relative path for files";
checked: root.use_rel_paths;
}
HorizontalLayout {
alignment: start;
@ -282,6 +294,8 @@ export component FileTab inherits Rectangle {
// For project widget
in-out property <string> project_widget-open_project_path;
in-out property <string> project_widget-save_project_path;
in-out property <bool> project_widget-append_project_elements;
in-out property <bool> project_widget-use_rel_paths;
callback project_widget-load_project_clicked();
callback project_widget-save_project_clicked();
callback project_widget-browse_open_project_clicked();
@ -332,8 +346,10 @@ export component FileTab inherits Rectangle {
padding: 4px;
alignment: start;
if root.state == State.Project : ProjectWidget {
open_project_path <=> root.project_widget-open_project_path;
save_project_path <=> root.project_widget-save_project_path;
open_project_path <=> root.project_widget-open_project_path;
save_project_path <=> root.project_widget-save_project_path;
append_project_elements <=> root.project_widget-append_project_elements;
use_rel_paths <=> root.project_widget-use_rel_paths;
load_project_clicked() => {
root.project_widget-load_project_clicked();