diff --git a/common/advanced_config.cpp b/common/advanced_config.cpp index 1ff3702024..c58fb653e7 100644 --- a/common/advanced_config.cpp +++ b/common/advanced_config.cpp @@ -101,6 +101,7 @@ static const wxChar UseClipper2[] = wxT( "UseClipper2" ); static const wxChar EnableGenerators[] = wxT( "EnableGenerators" ); static const wxChar EnableGit[] = wxT( "EnableGit" ); static const wxChar EnableLibWithText[] = wxT( "EnableLibWithText" ); +static const wxChar EnableLibDir[] = wxT( "EnableLibDir" ); static const wxChar EnableEeschemaPrintCairo[] = wxT( "EnableEeschemaPrintCairo" ); static const wxChar DisambiguationTime[] = wxT( "DisambiguationTime" ); static const wxChar PcbSelectionVisibilityRatio[] = wxT( "PcbSelectionVisibilityRatio" ); @@ -241,6 +242,7 @@ ADVANCED_CFG::ADVANCED_CFG() m_EnableGenerators = false; m_EnableGit = false; m_EnableLibWithText = false; + m_EnableLibDir = false; m_EnableEeschemaPrintCairo = true; @@ -464,6 +466,9 @@ void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg ) configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableLibWithText, &m_EnableLibWithText, m_EnableLibWithText ) ); + configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableLibDir, + &m_EnableLibDir, m_EnableLibDir ) ); + configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableEeschemaPrintCairo, &m_EnableEeschemaPrintCairo, m_EnableEeschemaPrintCairo ) ); diff --git a/common/dialogs/panel_common_settings.cpp b/common/dialogs/panel_common_settings.cpp index 1804cb662c..08a9d3fb45 100644 --- a/common/dialogs/panel_common_settings.cpp +++ b/common/dialogs/panel_common_settings.cpp @@ -55,6 +55,8 @@ PANEL_COMMON_SETTINGS::PANEL_COMMON_SETTINGS( wxWindow* aParent ) m_antialiasingFallbackLabel->Show( false ); #endif + ShowFileManagerWidgets( ADVANCED_CFG::GetCfg().m_EnableLibDir ); + m_textEditorBtn->SetBitmap( KiBitmapBundle( BITMAPS::small_folder ) ); m_pdfViewerBtn->SetBitmap( KiBitmapBundle( BITMAPS::small_folder ) ); @@ -143,6 +145,8 @@ bool PANEL_COMMON_SETTINGS::TransferDataToWindow() applySettingsToPanel( *commonSettings ); + m_textCtrlFileManager->SetValue( commonSettings->m_System.file_explorer ); + // TODO(JE) Move these into COMMON_SETTINGS probably m_textEditorPath->SetValue( Pgm().GetTextEditor( false ) ); m_defaultPDFViewer->SetValue( Pgm().UseSystemPdfBrowser() ); @@ -158,6 +162,8 @@ bool PANEL_COMMON_SETTINGS::TransferDataFromWindow() { COMMON_SETTINGS* commonSettings = Pgm().GetCommonSettings(); + commonSettings->m_System.file_explorer = m_textCtrlFileManager->GetValue(); + commonSettings->m_System.autosave_interval = m_SaveTime->GetValue() * 60; commonSettings->m_System.file_history_size = m_fileHistorySize->GetValue(); commonSettings->m_System.clear_3d_cache_interval = m_Clear3DCacheFilesOlder->GetValue(); @@ -335,6 +341,28 @@ void PANEL_COMMON_SETTINGS::OnTextEditorClick( wxCommandEvent& event ) } +void PANEL_COMMON_SETTINGS::ShowFileManagerWidgets( bool aBool ) +{ + m_staticTextFileManager->Show( aBool ); + m_textCtrlFileManager->Show( aBool ); + + if( aBool ) + { +#if defined( __WINDOWS__ ) + wxString msg = _( "Default 'explorer.exe /n,/select,%F' for this OS." ); + m_textCtrlFileManager->SetToolTip( msg ); + wxString str = "%F"; +#else + wxString msg = _( "File explorer command.\nexample:" ) + wxS( " 'nemo -n %F'" ); + m_textCtrlFileManager->SetToolTip( msg ); + wxString str= " %F"; +#endif + msg = _( "Explorer command with mandatory '%s' suffix after last entered character." ); + m_staticTextFileManager->SetToolTip( wxString::Format( msg, str ) ); + } +} + + void PANEL_COMMON_SETTINGS::OnPDFViewerClick( wxCommandEvent& event ) { wxString mask( wxT( "*" ) ); diff --git a/common/dialogs/panel_common_settings_base.cpp b/common/dialogs/panel_common_settings_base.cpp index f854930828..b94380f7c5 100644 --- a/common/dialogs/panel_common_settings_base.cpp +++ b/common/dialogs/panel_common_settings_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version 4.1.0-0-g733bf3d) +// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -94,6 +94,18 @@ PANEL_COMMON_SETTINGS_BASE::PANEL_COMMON_SETTINGS_BASE( wxWindow* parent, wxWind bHelperAppsSizer->Add( bSizer61, 0, wxTOP|wxRIGHT|wxEXPAND, 5 ); + bSizerFileManager = new wxBoxSizer( wxHORIZONTAL ); + + m_staticTextFileManager = new wxStaticText( this, wxID_ANY, _("File manager:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextFileManager->Wrap( -1 ); + bSizerFileManager->Add( m_staticTextFileManager, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 ); + + m_textCtrlFileManager = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + bSizerFileManager->Add( m_textCtrlFileManager, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + + bHelperAppsSizer->Add( bSizerFileManager, 0, wxEXPAND|wxRIGHT|wxTOP, 5 ); + bHelperAppsSizer->Add( 0, 12, 0, wxEXPAND, 5 ); diff --git a/common/dialogs/panel_common_settings_base.fbp b/common/dialogs/panel_common_settings_base.fbp index 99f4d15009..aaaf2ce789 100644 --- a/common/dialogs/panel_common_settings_base.fbp +++ b/common/dialogs/panel_common_settings_base.fbp @@ -1,34 +1,36 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <wxFormBuilder_Project> - <FileVersion major="1" minor="17"/> + <FileVersion major="1" minor="18"/> <object class="Project" expanded="true"> - <property name="class_decoration"></property> <property name="code_generation">C++</property> - <property name="disconnect_events">1</property> - <property name="disconnect_mode">source_name</property> - <property name="disconnect_php_events">0</property> - <property name="disconnect_python_events">0</property> + <property name="cpp_class_decoration"></property> + <property name="cpp_disconnect_events">1</property> + <property name="cpp_event_generation">connect</property> + <property name="cpp_help_provider">none</property> + <property name="cpp_namespace"></property> + <property name="cpp_precompiled_header"></property> + <property name="cpp_use_array_enum">0</property> + <property name="cpp_use_enum">1</property> <property name="embedded_files_path">res</property> <property name="encoding">UTF-8</property> - <property name="event_generation">connect</property> <property name="file">panel_common_settings_base</property> <property name="first_id">1000</property> - <property name="help_provider">none</property> - <property name="image_path_wrapper_function_name"></property> - <property name="indent_with_spaces"></property> <property name="internationalize">1</property> + <property name="lua_skip_events">1</property> + <property name="lua_ui_table">UI</property> <property name="name">PanelCommonSettings</property> - <property name="namespace"></property> <property name="path">.</property> - <property name="precompiled_header"></property> + <property name="php_disconnect_events">0</property> + <property name="php_disconnect_mode">source_name</property> + <property name="php_skip_events">1</property> + <property name="python_disconnect_events">0</property> + <property name="python_disconnect_mode">source_name</property> + <property name="python_image_path_wrapper_function_name"></property> + <property name="python_indent_with_spaces"></property> + <property name="python_skip_events">1</property> <property name="relative_path">1</property> - <property name="skip_lua_events">1</property> - <property name="skip_php_events">1</property> - <property name="skip_python_events">1</property> - <property name="ui_table">UI</property> - <property name="use_array_enum">0</property> - <property name="use_enum">1</property> <property name="use_microsoft_bom">0</property> + <property name="use_native_eol">0</property> <object class="Panel" expanded="true"> <property name="aui_managed">0</property> <property name="aui_manager_style">wxAUI_MGR_DEFAULT</property> @@ -76,10 +78,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -138,10 +140,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -224,10 +226,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -289,10 +291,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -357,10 +359,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -422,10 +424,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -501,10 +503,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -563,10 +565,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -640,10 +642,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -702,10 +704,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -729,7 +731,7 @@ <property name="max_size"></property> <property name="maximize_button">0</property> <property name="maximum_size"></property> - <property name="maxlength"></property> + <property name="maxlength">0</property> <property name="min_size"></property> <property name="minimize_button">0</property> <property name="minimum_size">-1,-1</property> @@ -767,10 +769,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="auth_needed">0</property> <property name="best_size"></property> <property name="bg"></property> @@ -835,6 +837,144 @@ </object> </object> </object> + <object class="sizeritem" expanded="true"> + <property name="border">5</property> + <property name="flag">wxEXPAND|wxRIGHT|wxTOP</property> + <property name="proportion">0</property> + <object class="wxBoxSizer" expanded="true"> + <property name="minimum_size"></property> + <property name="name">bSizerFileManager</property> + <property name="orient">wxHORIZONTAL</property> + <property name="permission">protected</property> + <object class="sizeritem" expanded="true"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT</property> + <property name="proportion">0</property> + <object class="wxStaticText" expanded="true"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer">0</property> + <property name="aui_name"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="drag_accept_files">0</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="label">File manager:</property> + <property name="markup">0</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_staticTextFileManager</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass">; ; forward_declare</property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + <property name="wrap">-1</property> + </object> + </object> + <object class="sizeritem" expanded="true"> + <property name="border">5</property> + <property name="flag">wxALIGN_CENTER_VERTICAL</property> + <property name="proportion">1</property> + <object class="wxTextCtrl" expanded="true"> + <property name="BottomDockable">1</property> + <property name="LeftDockable">1</property> + <property name="RightDockable">1</property> + <property name="TopDockable">1</property> + <property name="aui_layer">0</property> + <property name="aui_name"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> + <property name="best_size"></property> + <property name="bg"></property> + <property name="caption"></property> + <property name="caption_visible">1</property> + <property name="center_pane">0</property> + <property name="close_button">1</property> + <property name="context_help"></property> + <property name="context_menu">1</property> + <property name="default_pane">0</property> + <property name="dock">Dock</property> + <property name="dock_fixed">0</property> + <property name="docking">Left</property> + <property name="drag_accept_files">0</property> + <property name="enabled">1</property> + <property name="fg"></property> + <property name="floatable">1</property> + <property name="font"></property> + <property name="gripper">0</property> + <property name="hidden">0</property> + <property name="id">wxID_ANY</property> + <property name="max_size"></property> + <property name="maximize_button">0</property> + <property name="maximum_size"></property> + <property name="maxlength">0</property> + <property name="min_size"></property> + <property name="minimize_button">0</property> + <property name="minimum_size"></property> + <property name="moveable">1</property> + <property name="name">m_textCtrlFileManager</property> + <property name="pane_border">1</property> + <property name="pane_position"></property> + <property name="pane_size"></property> + <property name="permission">protected</property> + <property name="pin_button">1</property> + <property name="pos"></property> + <property name="resize">Resizable</property> + <property name="show">1</property> + <property name="size"></property> + <property name="style"></property> + <property name="subclass">; ; forward_declare</property> + <property name="toolbar_pane">0</property> + <property name="tooltip"></property> + <property name="validator_data_type"></property> + <property name="validator_style">wxFILTER_NONE</property> + <property name="validator_type">wxDefaultValidator</property> + <property name="validator_variable"></property> + <property name="value"></property> + <property name="window_extra_style"></property> + <property name="window_name"></property> + <property name="window_style"></property> + </object> + </object> + </object> + </object> <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxEXPAND</property> @@ -849,7 +989,7 @@ <property name="border">3</property> <property name="flag">wxBOTTOM|wxEXPAND</property> <property name="proportion">0</property> - <object class="wxBoxSizer" expanded="true"> + <object class="wxBoxSizer" expanded="false"> <property name="minimum_size"></property> <property name="name">bSizer8</property> <property name="orient">wxVERTICAL</property> @@ -863,10 +1003,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -926,7 +1066,7 @@ <property name="border">5</property> <property name="flag">wxBOTTOM|wxRIGHT|wxEXPAND</property> <property name="proportion">0</property> - <object class="wxBoxSizer" expanded="true"> + <object class="wxBoxSizer" expanded="false"> <property name="minimum_size"></property> <property name="name">bSizer7</property> <property name="orient">wxHORIZONTAL</property> @@ -940,10 +1080,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1006,10 +1146,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1033,7 +1173,7 @@ <property name="max_size"></property> <property name="maximize_button">0</property> <property name="maximum_size"></property> - <property name="maxlength"></property> + <property name="maxlength">0</property> <property name="min_size"></property> <property name="minimize_button">0</property> <property name="minimum_size">-1,-1</property> @@ -1071,10 +1211,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="auth_needed">0</property> <property name="best_size"></property> <property name="bg"></property> @@ -1160,10 +1300,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1222,10 +1362,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1276,33 +1416,33 @@ <property name="border">5</property> <property name="flag">wxTOP|wxLEFT|wxEXPAND</property> <property name="proportion">0</property> - <object class="wxBoxSizer" expanded="true"> + <object class="wxBoxSizer" expanded="false"> <property name="minimum_size"></property> <property name="name">bUserInterfaceSizer</property> <property name="orient">wxVERTICAL</property> <property name="permission">none</property> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxEXPAND</property> <property name="proportion">0</property> - <object class="wxBoxSizer" expanded="true"> + <object class="wxBoxSizer" expanded="false"> <property name="minimum_size"></property> <property name="name">bSizer14</property> <property name="orient">wxVERTICAL</property> <property name="permission">none</property> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxALL</property> <property name="proportion">0</property> - <object class="wxCheckBox" expanded="true"> + <object class="wxCheckBox" expanded="false"> <property name="BottomDockable">1</property> <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1355,19 +1495,19 @@ <property name="window_style"></property> </object> </object> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property> <property name="proportion">0</property> - <object class="wxCheckBox" expanded="true"> + <object class="wxCheckBox" expanded="false"> <property name="BottomDockable">1</property> <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1420,19 +1560,19 @@ <property name="window_style"></property> </object> </object> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxBOTTOM|wxRIGHT|wxLEFT</property> <property name="proportion">0</property> - <object class="wxCheckBox" expanded="true"> + <object class="wxCheckBox" expanded="false"> <property name="BottomDockable">1</property> <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1485,19 +1625,19 @@ <property name="window_style"></property> </object> </object> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxBOTTOM|wxLEFT|wxRIGHT</property> <property name="proportion">0</property> - <object class="wxCheckBox" expanded="true"> + <object class="wxCheckBox" expanded="false"> <property name="BottomDockable">1</property> <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1550,19 +1690,19 @@ <property name="window_style"></property> </object> </object> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxBOTTOM|wxLEFT|wxRIGHT</property> <property name="proportion">0</property> - <object class="wxCheckBox" expanded="true"> + <object class="wxCheckBox" expanded="false"> <property name="BottomDockable">1</property> <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1617,7 +1757,7 @@ </object> </object> </object> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxEXPAND</property> <property name="proportion">0</property> @@ -1635,10 +1775,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1697,10 +1837,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1762,10 +1902,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1827,10 +1967,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1885,28 +2025,28 @@ </object> </object> </object> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxEXPAND</property> <property name="proportion">0</property> - <object class="wxBoxSizer" expanded="true"> + <object class="wxBoxSizer" expanded="false"> <property name="minimum_size"></property> <property name="name">bSizerToolbarSize</property> <property name="orient">wxHORIZONTAL</property> <property name="permission">none</property> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxALL</property> <property name="proportion">0</property> - <object class="wxStaticText" expanded="true"> + <object class="wxStaticText" expanded="false"> <property name="BottomDockable">1</property> <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -1956,19 +2096,19 @@ <property name="wrap">-1</property> </object> </object> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxALL</property> <property name="proportion">0</property> - <object class="wxRadioButton" expanded="true"> + <object class="wxRadioButton" expanded="false"> <property name="BottomDockable">1</property> <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2021,19 +2161,19 @@ <property name="window_style"></property> </object> </object> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxALL</property> <property name="proportion">0</property> - <object class="wxRadioButton" expanded="true"> + <object class="wxRadioButton" expanded="false"> <property name="BottomDockable">1</property> <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2086,19 +2226,19 @@ <property name="window_style"></property> </object> </object> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxALL</property> <property name="proportion">0</property> - <object class="wxRadioButton" expanded="true"> + <object class="wxRadioButton" expanded="false"> <property name="BottomDockable">1</property> <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2153,11 +2293,11 @@ </object> </object> </object> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxTOP|wxBOTTOM|wxLEFT|wxEXPAND</property> <property name="proportion">0</property> - <object class="wxGridBagSizer" expanded="true"> + <object class="wxGridBagSizer" expanded="false"> <property name="empty_cell_size">-1,-1</property> <property name="flexible_direction">wxVERTICAL</property> <property name="growablecols"></property> @@ -2180,10 +2320,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2245,10 +2385,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2313,10 +2453,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2391,10 +2531,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2456,10 +2596,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2509,11 +2649,11 @@ <property name="wrap">-1</property> </object> </object> - <object class="sizeritem" expanded="true"> + <object class="sizeritem" expanded="false"> <property name="border">5</property> <property name="flag">wxBOTTOM|wxEXPAND</property> <property name="proportion">0</property> - <object class="wxBoxSizer" expanded="true"> + <object class="wxBoxSizer" expanded="false"> <property name="minimum_size"></property> <property name="name">bSizerHighContrast</property> <property name="orient">wxHORIZONTAL</property> @@ -2527,10 +2667,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2589,10 +2729,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2616,7 +2756,7 @@ <property name="max_size"></property> <property name="maximize_button">0</property> <property name="maximum_size"></property> - <property name="maxlength"></property> + <property name="maxlength">0</property> <property name="min_size"></property> <property name="minimize_button">0</property> <property name="minimum_size"></property> @@ -2654,10 +2794,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2731,10 +2871,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2793,10 +2933,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2861,10 +3001,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -2926,10 +3066,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3003,10 +3143,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3065,10 +3205,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3133,10 +3273,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3226,10 +3366,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3291,10 +3431,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3357,10 +3497,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3422,10 +3562,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3487,10 +3627,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3553,10 +3693,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3618,10 +3758,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3684,10 +3824,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3760,10 +3900,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3822,10 +3962,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3908,10 +4048,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -3976,10 +4116,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -4044,10 +4184,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -4109,10 +4249,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -4175,10 +4315,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -4240,10 +4380,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -4306,10 +4446,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -4371,10 +4511,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -4437,10 +4577,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -4502,10 +4642,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -4567,10 +4707,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> @@ -4633,10 +4773,10 @@ <property name="LeftDockable">1</property> <property name="RightDockable">1</property> <property name="TopDockable">1</property> - <property name="aui_layer"></property> + <property name="aui_layer">0</property> <property name="aui_name"></property> - <property name="aui_position"></property> - <property name="aui_row"></property> + <property name="aui_position">0</property> + <property name="aui_row">0</property> <property name="best_size"></property> <property name="bg"></property> <property name="caption"></property> diff --git a/common/dialogs/panel_common_settings_base.h b/common/dialogs/panel_common_settings_base.h index c57da86fd3..71b62273d2 100644 --- a/common/dialogs/panel_common_settings_base.h +++ b/common/dialogs/panel_common_settings_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version 4.1.0-0-g733bf3d) +// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -53,6 +53,9 @@ class PANEL_COMMON_SETTINGS_BASE : public RESETTABLE_PANEL wxStaticLine* m_staticline2; wxTextCtrl* m_textEditorPath; STD_BITMAP_BUTTON* m_textEditorBtn; + wxBoxSizer* bSizerFileManager; + wxStaticText* m_staticTextFileManager; + wxTextCtrl* m_textCtrlFileManager; wxRadioButton* m_defaultPDFViewer; wxRadioButton* m_otherPDFViewer; wxTextCtrl* m_PDFViewerPath; diff --git a/common/settings/common_settings.cpp b/common/settings/common_settings.cpp index 171c53f376..34b7e90406 100644 --- a/common/settings/common_settings.cpp +++ b/common/settings/common_settings.cpp @@ -296,6 +296,14 @@ COMMON_SETTINGS::COMMON_SETTINGS() : &m_System.text_editor, wxS( "" ) ) ); #endif +#if defined( __WINDOWS__ ) + m_params.emplace_back( new PARAM<wxString>( "system.file_explorer", + &m_System.file_explorer, wxS( "explorer.exe /n,/select,%F" ) ) ); +#else + m_params.emplace_back( new PARAM<wxString>( "system.file_explorer", + &m_System.file_explorer, wxS( "" ) ) ); +#endif + m_params.emplace_back( new PARAM<int>( "system.file_history_size", &m_System.file_history_size, 9 ) ); diff --git a/common/tool/actions.cpp b/common/tool/actions.cpp index f3c2ef6b8e..0945ac8a91 100644 --- a/common/tool/actions.cpp +++ b/common/tool/actions.cpp @@ -76,6 +76,13 @@ TOOL_ACTION ACTIONS::openWithTextEditor( TOOL_ACTION_ARGS() .Tooltip( _( "Open a library file with a text editor" ) ) .Icon( BITMAPS::editor ) ); +TOOL_ACTION ACTIONS::openDirectory( TOOL_ACTION_ARGS() + .Name( "common.Control.openDirectory" ) + .Scope( AS_GLOBAL ) + .FriendlyName( _( "Open in file explorer..." ) ) + .Tooltip( _( "Open a library file with system file explorer" ) ) + .Icon( BITMAPS::directory_browser ) ); + TOOL_ACTION ACTIONS::save( TOOL_ACTION_ARGS() .Name( "common.Control.save" ) .Scope( AS_GLOBAL ) diff --git a/eeschema/tools/symbol_editor_control.cpp b/eeschema/tools/symbol_editor_control.cpp index 24fc13b841..25d0c88974 100644 --- a/eeschema/tools/symbol_editor_control.cpp +++ b/eeschema/tools/symbol_editor_control.cpp @@ -37,6 +37,7 @@ #include <bitmaps/bitmap_types.h> #include <confirm.h> #include <kidialog.h> +#include <launch_ext.h> // To default when file manager setting is empty #include <gestfich.h> // To open with a text editor #include <wx/filedlg.h> #include "string_utils.h" @@ -79,20 +80,44 @@ bool SYMBOL_EDITOR_CONTROL::Init() return !sel.GetLibNickname().empty() && !sel.GetLibItemName().empty(); }; - auto saveSymbolAsCondition = - [ editFrame ]( const SELECTION& aSel ) - { - LIB_ID sel = editFrame->GetTargetLibId(); - return !sel.GetLibNickname().empty() && !sel.GetLibItemName().empty(); - }; - +/* not used, but used to be used auto multiSelectedCondition = [ editFrame ]( const SELECTION& aSel ) { return editFrame->GetTreeSelectionCount() > 1; }; - - auto canOpenWithTextEditor = +*/ + auto multiSymbolSelectedCondition = + [ editFrame ]( const SELECTION& aSel ) + { + if( editFrame->GetTreeSelectionCount() > 1 ) + { + for( LIB_ID& sel : editFrame->GetSelectedLibIds() ) + { + if( !sel.IsValid() ) + return false; + } + return true; + } + return false; + }; +/* not used, yet + auto multiLibrarySelectedCondition = + [ editFrame ]( const SELECTION& aSel ) + { + if( editFrame->GetTreeSelectionCount() > 1 ) + { + for( LIB_ID& sel : editFrame->GetSelectedLibIds() ) + { + if( sel.IsValid() ) + return false; + } + return true; + } + return false; + }; +*/ + auto canOpenExternally = [ editFrame ]( const SELECTION& aSel ) { // The option is shown if the lib has no current edits @@ -109,16 +134,16 @@ bool SYMBOL_EDITOR_CONTROL::Init() ctxMenu.AddSeparator( 10 ); ctxMenu.AddItem( ACTIONS::save, symbolSelectedCondition || libInferredCondition, 10 ); ctxMenu.AddItem( EE_ACTIONS::saveLibraryAs, libSelectedCondition, 10 ); - ctxMenu.AddItem( EE_ACTIONS::saveSymbolCopyAs, saveSymbolAsCondition, 10 ); + ctxMenu.AddItem( EE_ACTIONS::saveSymbolCopyAs, symbolSelectedCondition, 10 ); ctxMenu.AddItem( ACTIONS::revert, symbolSelectedCondition || libInferredCondition, 10 ); ctxMenu.AddSeparator( 10 ); - ctxMenu.AddItem( EE_ACTIONS::cutSymbol, symbolSelectedCondition || multiSelectedCondition, 10 ); - ctxMenu.AddItem( EE_ACTIONS::copySymbol, symbolSelectedCondition || multiSelectedCondition, 10 ); + ctxMenu.AddItem( EE_ACTIONS::cutSymbol, symbolSelectedCondition || multiSymbolSelectedCondition, 10 ); + ctxMenu.AddItem( EE_ACTIONS::copySymbol, symbolSelectedCondition || multiSymbolSelectedCondition, 10 ); ctxMenu.AddItem( EE_ACTIONS::pasteSymbol, libInferredCondition, 10 ); ctxMenu.AddItem( EE_ACTIONS::duplicateSymbol, symbolSelectedCondition, 10 ); ctxMenu.AddItem( EE_ACTIONS::renameSymbol, symbolSelectedCondition, 10 ); - ctxMenu.AddItem( EE_ACTIONS::deleteSymbol, symbolSelectedCondition || multiSelectedCondition, 10 ); + ctxMenu.AddItem( EE_ACTIONS::deleteSymbol, symbolSelectedCondition || multiSymbolSelectedCondition, 10 ); ctxMenu.AddSeparator( 100 ); ctxMenu.AddItem( EE_ACTIONS::importSymbol, libInferredCondition, 100 ); @@ -126,7 +151,13 @@ bool SYMBOL_EDITOR_CONTROL::Init() if( ADVANCED_CFG::GetCfg().m_EnableLibWithText ) { ctxMenu.AddSeparator( 200 ); - ctxMenu.AddItem( ACTIONS::openWithTextEditor, canOpenWithTextEditor && ( symbolSelectedCondition || libSelectedCondition ), 200 ); + ctxMenu.AddItem( ACTIONS::openWithTextEditor, canOpenExternally && ( symbolSelectedCondition || libSelectedCondition ), 200 ); + } + + if( ADVANCED_CFG::GetCfg().m_EnableLibDir ) + { + ctxMenu.AddSeparator( 200 ); + ctxMenu.AddItem( ACTIONS::openDirectory, canOpenExternally && ( symbolSelectedCondition || libSelectedCondition ), 200 ); } libraryTreeTool->AddContextMenuItems( &ctxMenu ); @@ -237,6 +268,56 @@ int SYMBOL_EDITOR_CONTROL::Revert( const TOOL_EVENT& aEvent ) } +int SYMBOL_EDITOR_CONTROL::OpenDirectory( const TOOL_EVENT& aEvent ) +{ + if( !m_isSymbolEditor ) + return 0; + + SYMBOL_EDIT_FRAME* editFrame = getEditFrame<SYMBOL_EDIT_FRAME>(); + LIB_SYMBOL_LIBRARY_MANAGER& libMgr = editFrame->GetLibManager(); + + LIB_ID libId = editFrame->GetTreeLIBID(); + + wxString libName = libId.GetLibNickname(); + wxString libItemName = libMgr.GetLibrary( libName )->GetFullURI( true ); + + wxFileName fileName( libItemName ); + + wxString filePath = wxEmptyString; + + COMMON_SETTINGS* cfg = Pgm().GetCommonSettings(); + + wxString explCommand = cfg->m_System.file_explorer; + + if( explCommand.IsEmpty() ) + { + filePath = fileName.GetFullPath().BeforeLast( wxFileName::GetPathSeparator() ); + + if( !filePath.IsEmpty() && wxDirExists( filePath ) ) + LaunchExternal( filePath ); + return 0; + } + + if( !explCommand.EndsWith( "%F" ) ) + { + wxMessageBox( _( "Missing/malformed file explorer argument '%F' in common settings." ) ); + return 0; + } + + filePath = fileName.GetFullPath(); + filePath.Replace( wxS( "\"" ), wxS( "_" ) ); + + wxString fileArg = '"' + filePath + '"'; + + explCommand.Replace( wxT( "%F" ), fileArg ); + + if( !explCommand.IsEmpty() ) + wxExecute( explCommand ); + + return 0; +} + + int SYMBOL_EDITOR_CONTROL::OpenWithTextEditor( const TOOL_EVENT& aEvent ) { if( !m_isSymbolEditor ) @@ -701,7 +782,10 @@ void SYMBOL_EDITOR_CONTROL::setTransitions() Go( &SYMBOL_EDITOR_CONTROL::CutCopyDelete, EE_ACTIONS::cutSymbol.MakeEvent() ); Go( &SYMBOL_EDITOR_CONTROL::CutCopyDelete, EE_ACTIONS::copySymbol.MakeEvent() ); Go( &SYMBOL_EDITOR_CONTROL::DuplicateSymbol, EE_ACTIONS::pasteSymbol.MakeEvent() ); + Go( &SYMBOL_EDITOR_CONTROL::OpenWithTextEditor, ACTIONS::openWithTextEditor.MakeEvent() ); + Go( &SYMBOL_EDITOR_CONTROL::OpenDirectory, ACTIONS::openDirectory.MakeEvent() ); + Go( &SYMBOL_EDITOR_CONTROL::ExportView, EE_ACTIONS::exportSymbolView.MakeEvent() ); Go( &SYMBOL_EDITOR_CONTROL::ExportSymbolAsSVG, EE_ACTIONS::exportSymbolAsSVG.MakeEvent() ); Go( &SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic, EE_ACTIONS::addSymbolToSchematic.MakeEvent() ); diff --git a/eeschema/tools/symbol_editor_control.h b/eeschema/tools/symbol_editor_control.h index d9364443e8..e31608c962 100644 --- a/eeschema/tools/symbol_editor_control.h +++ b/eeschema/tools/symbol_editor_control.h @@ -54,6 +54,7 @@ public: int CutCopyDelete( const TOOL_EVENT& aEvent ); int DuplicateSymbol( const TOOL_EVENT& aEvent ); int RenameSymbol( const TOOL_EVENT& newName ); + int OpenDirectory( const TOOL_EVENT& aEvent ); int OpenWithTextEditor( const TOOL_EVENT& aEvent ); int ExportView( const TOOL_EVENT& aEvent ); int ExportSymbolAsSVG( const TOOL_EVENT& aEvent ); diff --git a/include/advanced_config.h b/include/advanced_config.h index b655e7c701..20a57c8196 100644 --- a/include/advanced_config.h +++ b/include/advanced_config.h @@ -484,6 +484,24 @@ public: */ bool m_EnableLibWithText; + /** + * Enable option to open lib file directory. + * Reveals one additional field under common preferences to set + * system's file manager command in order for the context menu options to work. + * On windows common settings preselect the default explorer with a hardcoded value. + * + * Examples, + * Linux: "nemo -n %F" + * "nautilus --browser %F" + * "dolphin --select %F" etc + * Win11: "explorer.exe /n,/select,%F" + * + * Setting name: "EnableLibDir" + * Valid values: 0 or 1 + * Default value: 0 + */ + bool m_EnableLibDir; + /** * Enable Eeschema printing using Cairo. * diff --git a/include/dialogs/panel_common_settings.h b/include/dialogs/panel_common_settings.h index 61e68d8cc6..11d5b95d08 100644 --- a/include/dialogs/panel_common_settings.h +++ b/include/dialogs/panel_common_settings.h @@ -61,6 +61,7 @@ protected: void OnCanvasScaleAuto( wxCommandEvent& aEvent ) override; private: + void ShowFileManagerWidgets( bool aBool ); void setPdfViewerPathState(); }; diff --git a/include/settings/common_settings.h b/include/settings/common_settings.h index 2bba06b5ad..c32f6865c3 100644 --- a/include/settings/common_settings.h +++ b/include/settings/common_settings.h @@ -120,6 +120,7 @@ public: { int autosave_interval; wxString text_editor; + wxString file_explorer; int file_history_size; wxString language; wxString pdf_viewer_name; diff --git a/include/tool/actions.h b/include/tool/actions.h index cd513f0673..e83a4f67e1 100644 --- a/include/tool/actions.h +++ b/include/tool/actions.h @@ -59,6 +59,7 @@ public: static TOOL_ACTION quit; static TOOL_ACTION ddAddLibrary; // for drag and drop lib static TOOL_ACTION openWithTextEditor; + static TOOL_ACTION openDirectory; // Generic edit actions static TOOL_ACTION cancelInteractive; diff --git a/pcbnew/tools/footprint_editor_control.cpp b/pcbnew/tools/footprint_editor_control.cpp index 8ce51592b6..300d08d4a4 100644 --- a/pcbnew/tools/footprint_editor_control.cpp +++ b/pcbnew/tools/footprint_editor_control.cpp @@ -33,6 +33,9 @@ #include <pcbnew_id.h> #include <confirm.h> #include <kidialog.h> +#include <wx/filename.h> +#include <wildcards_and_files_ext.h> +#include <launch_ext.h> // To default when file manager setting is empty #include <gestfich.h> // To open with a text editor #include <widgets/wx_infobar.h> #include <footprint.h> @@ -108,7 +111,7 @@ bool FOOTPRINT_EDITOR_CONTROL::Init() return fp != nullptr; }; - auto canOpenWithTextEditor = + auto canOpenExternally = [ this ]( const SELECTION& aSel ) { // The option is shown if the editor has no current edits, @@ -141,7 +144,13 @@ bool FOOTPRINT_EDITOR_CONTROL::Init() if( ADVANCED_CFG::GetCfg().m_EnableLibWithText ) { ctxMenu.AddSeparator( 200 ); - ctxMenu.AddItem( ACTIONS::openWithTextEditor, canOpenWithTextEditor && fpSelectedCondition, 200 ); + ctxMenu.AddItem( ACTIONS::openWithTextEditor, canOpenExternally && fpSelectedCondition, 200 ); + } + + if( ADVANCED_CFG::GetCfg().m_EnableLibDir ) + { + ctxMenu.AddSeparator( 200 ); + ctxMenu.AddItem( ACTIONS::openDirectory, canOpenExternally && ( libSelectedCondition || fpSelectedCondition ), 200 ); } // clang-format on @@ -549,6 +558,77 @@ int FOOTPRINT_EDITOR_CONTROL::ExportFootprint( const TOOL_EVENT& aEvent ) } +int FOOTPRINT_EDITOR_CONTROL::OpenDirectory( const TOOL_EVENT& aEvent ) +{ + // No check for multi selection since the context menu option must be hidden in that case + FP_LIB_TABLE* globalTable = dynamic_cast<FP_LIB_TABLE*>( &GFootprintTable ); + FP_LIB_TABLE* projectTable = PROJECT_PCB::PcbFootprintLibs( &m_frame->Prj() ); + LIB_ID libId = m_frame->GetTargetFPID(); + + wxString libName = libId.GetLibNickname(); + wxString libItemName = libId.GetLibItemName(); + wxString path = wxEmptyString; + + for( FP_LIB_TABLE* table : { globalTable, projectTable } ) + { + if( !table ) + break; + + try + { + path = table->FindRow( libName, true )->GetFullURI( true ); + } + catch( IO_ERROR& err ) + { + // Do nothing: libName can be not found in globalTable if libName is in projectTable + } + + if( !path.IsEmpty() ) + break; + } + + wxString fileExt = wxEmptyString; + + // If selection is footprint + if( !libItemName.IsEmpty() ) + fileExt = FILEEXT::KiCadFootprintFileExtension; + + wxFileName fileName( path, libItemName, fileExt ); + + COMMON_SETTINGS* cfg = Pgm().GetCommonSettings(); + + wxString explCommand = cfg->m_System.file_explorer; + + if( explCommand.IsEmpty() ) + { + path = fileName.GetFullPath().BeforeLast( wxFileName::GetPathSeparator() ); + + if( !path.IsEmpty() && wxDirExists( path ) ) + LaunchExternal( path ); + return 0; + } + + if( !explCommand.EndsWith( "%F" ) ) + { + wxMessageBox( _( "Missing/malformed file explorer argument '%F' in common settings." ) ); + return 0; + } + + wxString escapedFilePath = fileName.GetFullPath(); + escapedFilePath.Replace( wxS( "\"" ), wxS( "_" ) ); + + wxString fileArg = wxEmptyString; + fileArg << '"' << escapedFilePath << '"'; + + explCommand.Replace( wxT( "%F" ), fileArg ); + + if( !explCommand.IsEmpty() ) + wxExecute( explCommand ); + + return 0; +} + + int FOOTPRINT_EDITOR_CONTROL::OpenWithTextEditor( const TOOL_EVENT& aEvent ) { wxString fullEditorName = Pgm().GetTextEditor(); @@ -559,12 +639,13 @@ int FOOTPRINT_EDITOR_CONTROL::OpenWithTextEditor( const TOOL_EVENT& aEvent ) return 0; } + // No check for multi selection since the context menu option must be hidden in that case FP_LIB_TABLE* globalTable = dynamic_cast<FP_LIB_TABLE*>( &GFootprintTable ); FP_LIB_TABLE* projectTable = PROJECT_PCB::PcbFootprintLibs( &m_frame->Prj() ); LIB_ID libId = m_frame->GetLibTree()->GetSelectedLibId(); - wxString libName = libId.GetLibNickname(); - wxString libItemName = wxEmptyString; + wxString libName = libId.GetLibNickname(); + wxString libItemName = wxEmptyString; for( FP_LIB_TABLE* table : { globalTable, projectTable } ) { @@ -574,16 +655,24 @@ int FOOTPRINT_EDITOR_CONTROL::OpenWithTextEditor( const TOOL_EVENT& aEvent ) try { libItemName = table->FindRow( libName, true )->GetFullURI( true ); - libItemName = libItemName + "/" + libId.GetLibItemName() + ".kicad_mod"; } catch( IO_ERROR& err ) { - // Do nothing: libName can be not found in globalTable if libName is in projectTable + // Do nothing: libName can be not found in globalTable if libName is in projectTable } + + if( !libItemName.IsEmpty() ) + break; } - if( !libItemName.IsEmpty() ) - ExecuteFile( fullEditorName, libItemName.wc_str(), nullptr, false ); + libItemName << wxFileName::GetPathSeparator(); + libItemName << libId.GetLibItemName(); + libItemName << '.' + FILEEXT::KiCadFootprintFileExtension; + + if( !wxFileName::FileExists( libItemName ) ) + return 0; + + ExecuteFile( fullEditorName, libItemName.wc_str(), nullptr, false ); return 0; } @@ -763,7 +852,9 @@ void FOOTPRINT_EDITOR_CONTROL::setTransitions() Go( &FOOTPRINT_EDITOR_CONTROL::ImportFootprint, PCB_ACTIONS::importFootprint.MakeEvent() ); Go( &FOOTPRINT_EDITOR_CONTROL::ExportFootprint, PCB_ACTIONS::exportFootprint.MakeEvent() ); + Go( &FOOTPRINT_EDITOR_CONTROL::OpenWithTextEditor, ACTIONS::openWithTextEditor.MakeEvent() ); + Go( &FOOTPRINT_EDITOR_CONTROL::OpenDirectory, ACTIONS::openDirectory.MakeEvent() ); Go( &FOOTPRINT_EDITOR_CONTROL::EditTextAndGraphics, PCB_ACTIONS::editTextAndGraphics.MakeEvent() ); Go( &FOOTPRINT_EDITOR_CONTROL::CleanupGraphics, PCB_ACTIONS::cleanupGraphics.MakeEvent() ); diff --git a/pcbnew/tools/footprint_editor_control.h b/pcbnew/tools/footprint_editor_control.h index 9ed0f6514c..bb12bbdbc2 100644 --- a/pcbnew/tools/footprint_editor_control.h +++ b/pcbnew/tools/footprint_editor_control.h @@ -62,6 +62,7 @@ public: int DeleteFootprint( const TOOL_EVENT& aEvent ); int ImportFootprint( const TOOL_EVENT& aEvent ); int ExportFootprint( const TOOL_EVENT& aEvent ); + int OpenDirectory( const TOOL_EVENT& aEvent ); int OpenWithTextEditor( const TOOL_EVENT& aEvent ); int ToggleLayersManager( const TOOL_EVENT& aEvent );