wxWidgets based Stable Diffusion C++ GUi
Ferenc Szontágh
2024-02-04 1683c8a090c3efc51c43107d5ede0dcd5d506e3b
ui/MainWindow.cpp
@@ -7,20 +7,20 @@
#include "MainWindow.h"
#include "embended_files/cube.png.h"
#include "embended_files/disk.png.h"
#include "embended_files/file_import.png.h"
#include "embended_files/forward.png.h"
#include "embended_files/images.png.h"
#include "embended_files/palette.png.h"
#include "embended_files/pause.png.h"
#include "embended_files/picture.png.h"
#include "embended_files/play.png.h"
#include "embended_files/refresh.png.h"
#include "embended_files/replace.png.h"
#include "embended_files/settings.png.h"
#include "embended_files/text_box_dots.png.h"
#include "embended_files/trash.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/cube.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/disk.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/file_import.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/forward.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/images.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/palette.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/pause.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/picture.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/play.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/refresh.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/replace.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/settings.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/text_box_dots.png.h"
#include "../../sd.cpp.ui2/ui/embended_files/trash.png.h"
///////////////////////////////////////////////////////////////////////////
@@ -42,47 +42,44 @@
   m_settings = new wxButton( m_all_panel, wxID_ANY, wxT("Settings"), wxDefaultPosition, wxDefaultSize, 0 );
   m_settings->SetBitmap( settings_png_to_wx_bitmap() );
   m_settings->SetMinSize( wxSize( 70,-1 ) );
   sizer0021->Add( m_settings, 0, wxALL, 5 );
   m_refresh = new wxButton( m_all_panel, wxID_ANY, wxT("Refresh"), wxDefaultPosition, wxDefaultSize, 0 );
   m_refresh->SetBitmap( refresh_png_to_wx_bitmap() );
   m_refresh->SetMinSize( wxSize( 70,-1 ) );
   sizer0021->Add( m_refresh, 0, wxALL, 5 );
   m_staticText160 = new wxStaticText( m_all_panel, wxID_ANY, wxT("Model"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText160 = new wxStaticText( m_all_panel, wxID_ANY, wxT("Model:"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL );
   m_staticText160->Wrap( 0 );
   m_staticText160->SetMinSize( wxSize( 50,-1 ) );
   sizer0021->Add( m_staticText160, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   wxArrayString m_modelChoices;
   m_model = new wxChoice( m_all_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_modelChoices, 0 );
   m_model->SetSelection( 0 );
   m_model->Enable( false );
   m_model->SetMinSize( wxSize( 200,-1 ) );
   sizer0021->Add( m_model, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_staticText161 = new wxStaticText( m_all_panel, wxID_ANY, wxT("Vae"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText161 = new wxStaticText( m_all_panel, wxID_ANY, wxT("Vae:"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL );
   m_staticText161->Wrap( 0 );
   m_staticText161->SetMinSize( wxSize( 50,-1 ) );
   sizer0021->Add( m_staticText161, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   wxArrayString m_vaeChoices;
   m_vae = new wxChoice( m_all_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_vaeChoices, 0 );
   m_vae->SetSelection( 0 );
   m_vae->Enable( false );
   m_vae->SetMinSize( wxSize( 200,-1 ) );
   sizer0021->Add( m_vae, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_staticText163 = new wxStaticText( m_all_panel, wxID_ANY, wxT("Sampler"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText163->Wrap( 0 );
   m_staticText163->SetToolTip( wxT("sampling method (default: \"euler_a\")") );
   sizer0021->Add( m_staticText163, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   wxArrayString m_samplerChoices;
   m_sampler = new wxChoice( m_all_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_samplerChoices, 0 );
   m_sampler->SetSelection( 0 );
   m_sampler->SetToolTip( wxT("sampling method (default: \"euler_a\")") );
   sizer0021->Add( m_sampler, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   sizer0002->Add( sizer0021, 0, wxALL|wxEXPAND, 5 );
@@ -94,15 +91,19 @@
   m_staticText231->Wrap( 0 );
   sizer0003->Add( m_staticText231, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_cfg = new wxSpinCtrlDouble( m_all_panel, wxID_ANY, wxT("7.0"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL|wxSP_ARROW_KEYS, 0, 15, 0, 0.1 );
   m_cfg = new wxSpinCtrlDouble( m_all_panel, wxID_ANY, wxT("7.0"), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 15, 0, 0.1 );
   m_cfg->SetDigits( 1 );
   m_cfg->SetMinSize( wxSize( 45,-1 ) );
   sizer0003->Add( m_cfg, 0, wxALL, 5 );
   m_staticText233 = new wxStaticText( m_all_panel, wxID_ANY, wxT("Seed:"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText233->Wrap( 0 );
   sizer0003->Add( m_staticText233, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_seed = new wxSpinCtrl( m_all_panel, wxID_ANY, wxT("44"), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 9999999, 44 );
   m_seed = new wxSpinCtrl( m_all_panel, wxID_ANY, wxT("44"), wxDefaultPosition, wxDefaultSize, 0, -1, 99999999999, 44 );
   m_seed->SetMinSize( wxSize( 80,-1 ) );
   sizer0003->Add( m_seed, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_staticText234 = new wxStaticText( m_all_panel, wxID_ANY, wxT("Clip skip:"), wxDefaultPosition, wxDefaultSize, 0 );
@@ -113,6 +114,7 @@
   m_clip_skip = new wxSpinCtrl( m_all_panel, wxID_ANY, wxT("0"), wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -1, 2, 0 );
   m_clip_skip->SetToolTip( wxT("ignore last layers of CLIP network; 1 ignores none, 2 ignores one layer (default: -1)\n<= 0 represents unspecified, will be 1 for SD1.x, 2 for SD2.x") );
   m_clip_skip->SetMinSize( wxSize( 45,-1 ) );
   sizer0003->Add( m_clip_skip, 0, wxALL, 5 );
@@ -124,6 +126,7 @@
   m_steps = new wxSpinCtrl( m_all_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 0 );
   m_steps->SetToolTip( wxT("number of sample steps (default: 20)") );
   m_steps->SetMinSize( wxSize( 45,-1 ) );
   sizer0003->Add( m_steps, 0, wxALL, 5 );
@@ -253,10 +256,24 @@
   bSizer9->Add( m_staticText15, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_batch_count = new wxSpinCtrl( m_all_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 10, 0 );
   m_batch_count = new wxSpinCtrl( m_all_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, 1000, 1 );
   m_batch_count->SetToolTip( wxT("number of images to generate.") );
   bSizer9->Add( m_batch_count, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_staticText163 = new wxStaticText( m_all_panel, wxID_ANY, wxT("Sampler"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText163->Wrap( 0 );
   m_staticText163->SetToolTip( wxT("sampling method (default: \"euler_a\")") );
   bSizer9->Add( m_staticText163, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   wxArrayString m_samplerChoices;
   m_sampler = new wxChoice( m_all_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_samplerChoices, 0 );
   m_sampler->SetSelection( 0 );
   m_sampler->SetToolTip( wxT("sampling method (default: \"euler_a\")") );
   m_sampler->SetMinSize( wxSize( 100,-1 ) );
   bSizer9->Add( m_sampler, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_staticline5 = new wxStaticLine( m_all_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
   bSizer9->Add( m_staticline5, 0, wxEXPAND | wxALL, 5 );
@@ -317,14 +334,16 @@
   m_refresh->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onModelsRefresh ), NULL, this );
   m_model->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( UI::onModelSelect ), NULL, this );
   m_vae->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( UI::onVaeSelect ), NULL, this );
   m_sampler->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( UI::onSamplerSelect ), NULL, this );
   m_button7->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onResolutionSwap ), NULL, this );
   m_start_jobs->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onJobsStart ), NULL, this );
   m_pause_jobs->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onJobsPause ), NULL, this );
   m_delete_all_jobs->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onJobsDelete ), NULL, this );
   m_joblist->Connect( wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, wxDataViewEventHandler( UI::onJoblistItemActivated ), NULL, this );
   m_joblist->Connect( wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEventHandler( UI::onContextMenu ), NULL, this );
   m_joblist->Connect( wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEventHandler( UI::onJoblistSelectionChanged ), NULL, this );
   m_data_model_list->Connect( wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEventHandler( UI::onContextMenu ), NULL, this );
   m_generate->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onGenerate ), NULL, this );
   m_sampler->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( UI::onSamplerSelect ), NULL, this );
   m_save_preset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onSavePreset ), NULL, this );
   m_load_preset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onLoadPreset ), NULL, this );
   m_preset_list->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( UI::onSelectPreset ), NULL, this );
@@ -338,14 +357,16 @@
   m_refresh->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onModelsRefresh ), NULL, this );
   m_model->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( UI::onModelSelect ), NULL, this );
   m_vae->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( UI::onVaeSelect ), NULL, this );
   m_sampler->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( UI::onSamplerSelect ), NULL, this );
   m_button7->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onResolutionSwap ), NULL, this );
   m_start_jobs->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onJobsStart ), NULL, this );
   m_pause_jobs->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onJobsPause ), NULL, this );
   m_delete_all_jobs->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onJobsDelete ), NULL, this );
   m_joblist->Disconnect( wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, wxDataViewEventHandler( UI::onJoblistItemActivated ), NULL, this );
   m_joblist->Disconnect( wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEventHandler( UI::onContextMenu ), NULL, this );
   m_joblist->Disconnect( wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, wxDataViewEventHandler( UI::onJoblistSelectionChanged ), NULL, this );
   m_data_model_list->Disconnect( wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEventHandler( UI::onContextMenu ), NULL, this );
   m_generate->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onGenerate ), NULL, this );
   m_sampler->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( UI::onSamplerSelect ), NULL, this );
   m_save_preset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onSavePreset ), NULL, this );
   m_load_preset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( UI::onLoadPreset ), NULL, this );
   m_preset_list->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( UI::onSelectPreset ), NULL, this );
@@ -365,98 +386,110 @@
   wxBoxSizer* sizer2011;
   sizer2011 = new wxBoxSizer( wxVERTICAL );
   wxGridSizer* sizer2012;
   sizer2012 = new wxGridSizer( 0, 2, 0, 0 );
   wxBoxSizer* bSizer16;
   bSizer16 = new wxBoxSizer( wxHORIZONTAL );
   m_staticText172410 = new wxStaticText( m_path_panel, wxID_ANY, wxT("Models path"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText172410->Wrap( 0 );
   sizer2012->Add( m_staticText172410, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_staticText172410->SetMinSize( wxSize( 150,-1 ) );
   bSizer16->Add( m_staticText172410, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_model_dir = new wxDirPickerCtrl( m_path_panel, wxID_ANY, wxEmptyString, wxT("Select a folder"), wxDefaultPosition, wxDefaultSize, wxDIRP_SMALL|wxDIRP_DEFAULT_STYLE );
   m_model_dir->SetMinSize( wxSize( 200,-1 ) );
   sizer2012->Add( m_model_dir, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
   bSizer16->Add( m_model_dir, 1, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
   sizer2011->Add( sizer2012, 0, wxEXPAND, 5 );
   sizer2011->Add( bSizer16, 0, wxEXPAND, 5 );
   wxGridSizer* sizer2013;
   sizer2013 = new wxGridSizer( 0, 2, 0, 0 );
   m_staticText18013 = new wxStaticText( m_path_panel, wxID_ANY, wxT("Vae path"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText18013->Wrap( 0 );
   sizer2013->Add( m_staticText18013, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_vae_dir = new wxDirPickerCtrl( m_path_panel, wxID_ANY, wxEmptyString, wxT("Select a folder"), wxDefaultPosition, wxDefaultSize, wxDIRP_SMALL|wxDIRP_DEFAULT_STYLE );
   m_vae_dir->SetMinSize( wxSize( 200,-1 ) );
   sizer2013->Add( m_vae_dir, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
   sizer2011->Add( sizer2013, 0, wxEXPAND, 5 );
   wxGridSizer* sizer2014;
   sizer2014 = new wxGridSizer( 0, 2, 0, 0 );
   m_staticText1801317202731 = new wxStaticText( m_path_panel, wxID_ANY, wxT("Embedding path"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText1801317202731->Wrap( 0 );
   sizer2014->Add( m_staticText1801317202731, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_embedding_dir = new wxDirPickerCtrl( m_path_panel, wxID_ANY, wxEmptyString, wxT("Select a folder"), wxDefaultPosition, wxDefaultSize, wxDIRP_SMALL|wxDIRP_DEFAULT_STYLE );
   m_embedding_dir->SetMinSize( wxSize( 200,-1 ) );
   sizer2014->Add( m_embedding_dir, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
   sizer2011->Add( sizer2014, 0, wxEXPAND, 5 );
   wxGridSizer* sizer2015;
   sizer2015 = new wxGridSizer( 0, 2, 0, 0 );
   wxBoxSizer* bSizer19;
   bSizer19 = new wxBoxSizer( wxHORIZONTAL );
   m_staticText18013172027 = new wxStaticText( m_path_panel, wxID_ANY, wxT("Lora path"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText18013172027->Wrap( 0 );
   sizer2015->Add( m_staticText18013172027, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_staticText18013172027->SetMinSize( wxSize( 150,-1 ) );
   bSizer19->Add( m_staticText18013172027, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_lora_dir = new wxDirPickerCtrl( m_path_panel, wxID_ANY, wxEmptyString, wxT("Select a folder"), wxDefaultPosition, wxDefaultSize, wxDIRP_SMALL|wxDIRP_DEFAULT_STYLE );
   m_lora_dir->SetMinSize( wxSize( 200,-1 ) );
   sizer2015->Add( m_lora_dir, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
   bSizer19->Add( m_lora_dir, 1, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
   sizer2011->Add( sizer2015, 0, wxEXPAND, 5 );
   sizer2011->Add( bSizer19, 0, wxEXPAND, 5 );
   wxGridSizer* gSizer8;
   gSizer8 = new wxGridSizer( 0, 2, 0, 0 );
   wxBoxSizer* bSizer17;
   bSizer17 = new wxBoxSizer( wxHORIZONTAL );
   m_staticText18013 = new wxStaticText( m_path_panel, wxID_ANY, wxT("Vae path"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText18013->Wrap( 0 );
   m_staticText18013->SetMinSize( wxSize( 150,-1 ) );
   bSizer17->Add( m_staticText18013, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_vae_dir = new wxDirPickerCtrl( m_path_panel, wxID_ANY, wxEmptyString, wxT("Select a folder"), wxDefaultPosition, wxDefaultSize, wxDIRP_SMALL|wxDIRP_DEFAULT_STYLE );
   m_vae_dir->SetMinSize( wxSize( 200,-1 ) );
   bSizer17->Add( m_vae_dir, 1, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
   sizer2011->Add( bSizer17, 0, wxEXPAND, 5 );
   wxBoxSizer* bSizer18;
   bSizer18 = new wxBoxSizer( wxHORIZONTAL );
   m_staticText1801317202731 = new wxStaticText( m_path_panel, wxID_ANY, wxT("Embedding path"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText1801317202731->Wrap( 0 );
   m_staticText1801317202731->SetMinSize( wxSize( 150,-1 ) );
   bSizer18->Add( m_staticText1801317202731, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_embedding_dir = new wxDirPickerCtrl( m_path_panel, wxID_ANY, wxEmptyString, wxT("Select a folder"), wxDefaultPosition, wxDefaultSize, wxDIRP_SMALL|wxDIRP_DEFAULT_STYLE );
   m_embedding_dir->SetMinSize( wxSize( 200,-1 ) );
   bSizer18->Add( m_embedding_dir, 1, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
   sizer2011->Add( bSizer18, 0, wxEXPAND, 5 );
   wxBoxSizer* bSizer20;
   bSizer20 = new wxBoxSizer( wxHORIZONTAL );
   m_staticText19 = new wxStaticText( m_path_panel, wxID_ANY, wxT("Presets path"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText19->Wrap( -1 );
   gSizer8->Add( m_staticText19, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_staticText19->SetMinSize( wxSize( 150,-1 ) );
   bSizer20->Add( m_staticText19, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_presets_dir = new wxDirPickerCtrl( m_path_panel, wxID_ANY, wxEmptyString, wxT("Select a folder"), wxDefaultPosition, wxDefaultSize, wxDIRP_DEFAULT_STYLE|wxDIRP_SMALL );
   m_presets_dir->SetMinSize( wxSize( 200,-1 ) );
   gSizer8->Add( m_presets_dir, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
   bSizer20->Add( m_presets_dir, 1, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
   sizer2011->Add( gSizer8, 0, wxEXPAND, 5 );
   sizer2011->Add( bSizer20, 0, wxEXPAND, 5 );
   m_staticLine223 = new wxStaticLine( m_path_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
   sizer2011->Add( m_staticLine223, 0, wxALL|wxEXPAND, 5 );
   wxGridSizer* sizer2016;
   sizer2016 = new wxGridSizer( 0, 2, 0, 0 );
   wxBoxSizer* bSizer21;
   bSizer21 = new wxBoxSizer( wxHORIZONTAL );
   m_staticText180131720 = new wxStaticText( m_path_panel, wxID_ANY, wxT("Images output"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText180131720->Wrap( 0 );
   sizer2016->Add( m_staticText180131720, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_staticText180131720->SetMinSize( wxSize( 150,-1 ) );
   bSizer21->Add( m_staticText180131720, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   m_images_output = new wxDirPickerCtrl( m_path_panel, wxID_ANY, wxEmptyString, wxT("Select a folder"), wxDefaultPosition, wxDefaultSize, wxDIRP_SMALL|wxDIRP_DEFAULT_STYLE );
   m_images_output->SetMinSize( wxSize( 200,-1 ) );
   sizer2016->Add( m_images_output, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
   bSizer21->Add( m_images_output, 1, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
   sizer2011->Add( sizer2016, 0, wxEXPAND, 5 );
   sizer2011->Add( bSizer21, 0, wxEXPAND, 5 );
   m_path_panel->SetSizer( sizer2011 );
@@ -472,6 +505,8 @@
   m_keep_model_in_memory = new wxCheckBox( m_settings, wxID_ANY, wxT("Keep model in memory"), wxDefaultPosition, wxDefaultSize, 0 );
   m_keep_model_in_memory->SetValue(true);
   m_keep_model_in_memory->SetMinSize( wxSize( 230,-1 ) );
   sizer2018->Add( m_keep_model_in_memory, 0, wxALIGN_LEFT|wxALL, 5 );
@@ -482,6 +517,8 @@
   m_save_all_image = new wxCheckBox( m_settings, wxID_ANY, wxT("Save all images (intermediat images)"), wxDefaultPosition, wxDefaultSize, 0 );
   m_save_all_image->SetValue(true);
   m_save_all_image->SetMinSize( wxSize( 230,-1 ) );
   sizer2019->Add( m_save_all_image, 0, wxALIGN_LEFT|wxALL, 5 );
@@ -490,15 +527,17 @@
   wxBoxSizer* bSizer10;
   bSizer10 = new wxBoxSizer( wxHORIZONTAL );
   m_staticText16 = new wxStaticText( m_settings, wxID_ANY, wxT("Output images type"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText16 = new wxStaticText( m_settings, wxID_ANY, wxT("Output images format"), wxDefaultPosition, wxDefaultSize, 0 );
   m_staticText16->Wrap( -1 );
   m_staticText16->SetMinSize( wxSize( 230,-1 ) );
   bSizer10->Add( m_staticText16, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   wxString m_choice4Choices[] = { wxT(".png"), wxT(".jpg") };
   int m_choice4NChoices = sizeof( m_choice4Choices ) / sizeof( wxString );
   m_choice4 = new wxChoice( m_settings, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choice4NChoices, m_choice4Choices, 0 );
   m_choice4->SetSelection( 0 );
   bSizer10->Add( m_choice4, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
   bSizer10->Add( m_choice4, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
   sizer2017->Add( bSizer10, 0, wxEXPAND, 5 );