use crate::{
EditorModel, ExportModel, LibraryModel, MainWindow, ManipulateModel, PreferencesModel,
SettingsModel, SolidPreviewModel, VariantsModel, ViewportModel,
};
use slint::ComponentHandle;
pub const TAB_3D: i32 = 0;
pub const TAB_CUTTING: i32 = 1;
pub const TAB_FILES: i32 = 2;
const VIEW_LIVE: i32 = 0;
const VIEW_EDIT: i32 = 1;
pub fn show_tab(ui: &MainWindow, tab: i32) {
if ui.get_active_tab() != tab {
ui.set_active_tab(tab);
ui.invoke_active_tab_changed(tab);
}
}
fn show_view(ui: &MainWindow, view: i32) {
show_tab(ui, TAB_3D);
if ui.get_render_view_tab() != view {
ui.set_render_view_tab(view);
ui.invoke_render_view_tab_changed(view);
}
}
pub fn show_edit_view(ui: &MainWindow) {
show_view(ui, VIEW_EDIT);
}
pub fn show_live_render_view(ui: &MainWindow) {
show_view(ui, VIEW_LIVE);
}
pub fn add_tier(ui: &MainWindow) {
show_edit_view(ui);
let editor = ui.global::<EditorModel>();
editor.set_selected_tier_index(-1);
editor.set_inspector_tab(0);
editor.set_inspector_collapsed(false);
editor.set_tier_table_collapsed(false);
}
pub fn show_inspector_tab(ui: &MainWindow, tab: i32) {
show_edit_view(ui);
let editor = ui.global::<EditorModel>();
editor.set_inspector_tab(tab);
editor.set_inspector_collapsed(false);
}
const HISTORY_TAB: i32 = 4;
pub fn show_variants(ui: &MainWindow) {
show_inspector_tab(ui, HISTORY_TAB);
ui.global::<VariantsModel>().set_view(1);
}
pub fn save_variant(ui: &MainWindow) {
show_variants(ui);
ui.global::<VariantsModel>().invoke_begin_save(-1);
}
pub fn duplicate_selected_tier(ui: &MainWindow) {
let editor = ui.global::<EditorModel>();
let index = editor.get_selected_tier_index();
if index >= 0 {
editor.invoke_duplicate_tier(index);
}
}
pub fn delete_selected_tier(ui: &MainWindow) {
let editor = ui.global::<EditorModel>();
let index = editor.get_selected_tier_index();
if index >= 0 {
editor.invoke_remove_tier(index);
}
}
pub fn move_selected_tier(ui: &MainWindow, step: i32) {
let editor = ui.global::<EditorModel>();
let index = editor.get_selected_tier_index();
if index >= 0 {
editor.invoke_move_tier(index, step);
}
}
pub fn clear_tier_selection(ui: &MainWindow) {
ui.global::<EditorModel>().set_selected_tier_index(-1);
}
pub fn focus_tier_filter(ui: &MainWindow) {
let editor = ui.global::<EditorModel>();
editor.set_filter_focus_pulse(editor.get_filter_focus_pulse().wrapping_add(1));
}
pub fn optimize(ui: &MainWindow) {
let editor = ui.global::<EditorModel>();
editor.invoke_optimize(
editor.get_optimize_weight_windowing(),
editor.get_optimize_weight_extinction(),
editor.get_optimize_weight_tilt_brilliance(),
editor.get_optimize_weight_yield(),
editor.get_optimize_weight_tone(),
);
}
pub fn set_solid_view_mode(ui: &MainWindow, mode: i32) {
show_edit_view(ui);
ui.global::<SolidPreviewModel>().set_view_mode(mode);
}
pub fn set_live_view_mode(ui: &MainWindow, mode: i32) {
show_live_render_view(ui);
ui.global::<ViewportModel>().set_live_view_mode(mode);
}
pub fn toggle_slice_mode(ui: &MainWindow) {
show_edit_view(ui);
let manipulate = ui.global::<ManipulateModel>();
manipulate.set_slice_mode(!manipulate.get_slice_mode());
manipulate.invoke_slice_toggled();
}
pub fn toggle_snap(ui: &MainWindow) {
let manipulate = ui.global::<ManipulateModel>();
manipulate.set_snap_off(!manipulate.get_snap_off());
manipulate.invoke_snap_toggled();
}
pub fn toggle_library_panel(ui: &MainWindow) {
let library = ui.global::<LibraryModel>();
let collapsed = !library.get_panel_collapsed();
library.set_panel_collapsed(collapsed);
library.invoke_panel_collapsed_changed(collapsed);
}
pub fn set_simple_interface(ui: &MainWindow, simple: bool) {
let preferences = ui.global::<PreferencesModel>();
preferences.set_simple_mode(simple);
preferences.invoke_simple_mode_changed(simple);
}
pub fn open_render_settings(ui: &MainWindow) {
show_live_render_view(ui);
ui.global::<SettingsModel>().set_is_open(true);
}
pub fn open_render_export(ui: &MainWindow) {
show_live_render_view(ui);
ui.global::<ExportModel>().set_is_open(true);
}