ADDED: maintenance page to preferences.

This commit is contained in:
Jeff Young 2025-08-15 16:56:05 +01:00
parent 9ff30873fc
commit d5f16adde1
34 changed files with 2049 additions and 1252 deletions

View File

@ -436,6 +436,8 @@ set( COMMON_DLG_SRCS
dialogs/panel_image_editor_base.cpp
dialogs/panel_grid_settings.cpp
dialogs/panel_grid_settings_base.cpp
dialogs/panel_maintenance.cpp
dialogs/panel_maintenance_base.cpp
dialogs/panel_mouse_settings.cpp
dialogs/panel_mouse_settings_base.cpp
dialogs/panel_spacemouse.cpp

View File

@ -26,7 +26,6 @@
#include <advanced_config.h>
#include <bitmaps.h>
#include <class_draw_panel_gal.h>
#include <dialog_shim.h>
#include <dpi_scaling_common.h>
#include <kiface_base.h>
#include <kiplatform/ui.h>
@ -34,7 +33,6 @@
#include <id.h>
#include <settings/common_settings.h>
#include <settings/settings_manager.h>
#include <widgets/stepped_slider.h>
#include <widgets/std_bitmap_button.h>
#include <wx/filedlg.h>
@ -165,7 +163,6 @@ bool PANEL_COMMON_SETTINGS::TransferDataFromWindow()
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();
commonSettings->m_Graphics.aa_mode = m_antialiasing->GetSelection();
@ -265,8 +262,6 @@ void PANEL_COMMON_SETTINGS::applySettingsToPanel( COMMON_SETTINGS& aSettings )
else
m_rbFallback->SetValue( true );
m_Clear3DCacheFilesOlder->SetValue( aSettings.m_System.clear_3d_cache_interval );
if( m_canvasScaleCtrl )
{
const DPI_SCALING_COMMON dpi( &aSettings, this );

View File

@ -342,7 +342,7 @@ PANEL_COMMON_SETTINGS_BASE::PANEL_COMMON_SETTINGS_BASE( wxWindow* parent, wxWind
bSessionSizer->Add( 0, 5, 0, 0, 5 );
wxGridBagSizer* gbSizer1;
gbSizer1 = new wxGridBagSizer( 4, 5 );
gbSizer1 = new wxGridBagSizer( 5, 5 );
gbSizer1->SetFlexibleDirection( wxBOTH );
gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
gbSizer1->SetEmptyCellSize( wxSize( -1,2 ) );
@ -368,19 +368,6 @@ PANEL_COMMON_SETTINGS_BASE::PANEL_COMMON_SETTINGS_BASE( wxWindow* parent, wxWind
m_fileHistorySize = new wxSpinCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, 100, 0 );
gbSizer1->Add( m_fileHistorySize, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
m_staticTextClear3DCache = new wxStaticText( this, wxID_ANY, _("3D cache file duration:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextClear3DCache->Wrap( -1 );
gbSizer1->Add( m_staticTextClear3DCache, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
m_Clear3DCacheFilesOlder = new wxSpinCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 120, 30 );
m_Clear3DCacheFilesOlder->SetToolTip( _("3D cache files older than this are deleted.\nIf set to 0, cache clearing is disabled") );
gbSizer1->Add( m_Clear3DCacheFilesOlder, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
m_staticTextDays = new wxStaticText( this, wxID_ANY, _("days"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextDays->Wrap( -1 );
gbSizer1->Add( m_staticTextDays, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
gbSizer1->AddGrowableCol( 1 );
@ -403,7 +390,7 @@ PANEL_COMMON_SETTINGS_BASE::PANEL_COMMON_SETTINGS_BASE( wxWindow* parent, wxWind
bProjectBackupSizer = new wxBoxSizer( wxVERTICAL );
wxGridBagSizer* gbSizer3;
gbSizer3 = new wxGridBagSizer( 0, 0 );
gbSizer3 = new wxGridBagSizer( 2, 0 );
gbSizer3->SetFlexibleDirection( wxBOTH );
gbSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
@ -421,45 +408,45 @@ PANEL_COMMON_SETTINGS_BASE::PANEL_COMMON_SETTINGS_BASE( wxWindow* parent, wxWind
m_staticText9->Wrap( -1 );
m_staticText9->SetToolTip( _("How many backup files total to keep (set to 0 for no limit)") );
gbSizer3->Add( m_staticText9, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
gbSizer3->Add( m_staticText9, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 3 );
m_backupLimitTotalFiles = new wxSpinCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1000, 0 );
gbSizer3->Add( m_backupLimitTotalFiles, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
gbSizer3->Add( m_backupLimitTotalFiles, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 3 );
m_staticText10 = new wxStaticText( this, wxID_ANY, _("Maximum backups per day:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText10->Wrap( -1 );
m_staticText10->SetToolTip( _("How many backup files to keep each day (set to 0 for no limit)") );
gbSizer3->Add( m_staticText10, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
gbSizer3->Add( m_staticText10, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 3 );
m_backupLimitDailyFiles = new wxSpinCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1000, 0 );
gbSizer3->Add( m_backupLimitDailyFiles, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
gbSizer3->Add( m_backupLimitDailyFiles, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 3 );
m_staticText11 = new wxStaticText( this, wxID_ANY, _("Minimum time between backups:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText11->Wrap( -1 );
m_staticText11->SetToolTip( _("Number of minutes since the last backup before another will be created the next time you save (set to 0 for no minimum)") );
gbSizer3->Add( m_staticText11, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
gbSizer3->Add( m_staticText11, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 3 );
m_backupMinInterval = new wxSpinCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 3600, 0 );
gbSizer3->Add( m_backupMinInterval, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
gbSizer3->Add( m_backupMinInterval, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 3 );
m_staticText15 = new wxStaticText( this, wxID_ANY, _("minutes"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText15->Wrap( -1 );
gbSizer3->Add( m_staticText15, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
gbSizer3->Add( m_staticText15, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 3 );
m_staticText16 = new wxStaticText( this, wxID_ANY, _("Maximum total backup size:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText16->Wrap( -1 );
m_staticText16->SetToolTip( _("If the total size of backup files grows above this limit, old backups will be deleted (set to 0 for no limit)") );
gbSizer3->Add( m_staticText16, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
gbSizer3->Add( m_staticText16, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 3 );
m_backupLimitTotalSize = new wxSpinCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1000, 0 );
gbSizer3->Add( m_backupLimitTotalSize, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT|wxEXPAND, 5 );
gbSizer3->Add( m_backupLimitTotalSize, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT|wxEXPAND, 3 );
m_staticText17 = new wxStaticText( this, wxID_ANY, _("MB"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText17->Wrap( -1 );
gbSizer3->Add( m_staticText17, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
gbSizer3->Add( m_staticText17, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 3 );
gbSizer3->AddGrowableCol( 1 );

View File

@ -3388,7 +3388,7 @@
<property name="name">gbSizer1</property>
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
<property name="permission">none</property>
<property name="vgap">4</property>
<property name="vgap">5</property>
<object class="gbsizeritem" expanded="false">
<property name="border">5</property>
<property name="colspan">1</property>
@ -3716,202 +3716,6 @@
<property name="window_style"></property>
</object>
</object>
<object class="gbsizeritem" expanded="false">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">0</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="row">2</property>
<property name="rowspan">1</property>
<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">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">3D cache file duration:</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_staticTextClear3DCache</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="gbsizeritem" expanded="true">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">1</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxEXPAND</property>
<property name="row">2</property>
<property name="rowspan">1</property>
<object class="wxSpinCtrl" 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">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="initial">30</property>
<property name="max">120</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min">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_Clear3DCacheFilesOlder</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">wxSP_ARROW_KEYS</property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip">3D cache files older than this are deleted.&#x0A;If set to 0, cache clearing is disabled</property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="gbsizeritem" expanded="true">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">2</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="row">2</property>
<property name="rowspan">1</property>
<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">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">days</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_staticTextDays</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>
</object>
</object>
@ -4070,7 +3874,7 @@
<property name="name">gbSizer3</property>
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
<property name="permission">none</property>
<property name="vgap">0</property>
<property name="vgap">2</property>
<object class="gbsizeritem" expanded="false">
<property name="border">5</property>
<property name="colspan">3</property>
@ -4208,7 +4012,7 @@
</object>
</object>
<object class="gbsizeritem" expanded="false">
<property name="border">5</property>
<property name="border">3</property>
<property name="colspan">1</property>
<property name="column">0</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT</property>
@ -4273,7 +4077,7 @@
</object>
</object>
<object class="gbsizeritem" expanded="false">
<property name="border">5</property>
<property name="border">3</property>
<property name="colspan">1</property>
<property name="column">1</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND</property>
@ -4339,7 +4143,7 @@
</object>
</object>
<object class="gbsizeritem" expanded="false">
<property name="border">5</property>
<property name="border">3</property>
<property name="colspan">1</property>
<property name="column">0</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT</property>
@ -4404,7 +4208,7 @@
</object>
</object>
<object class="gbsizeritem" expanded="false">
<property name="border">5</property>
<property name="border">3</property>
<property name="colspan">1</property>
<property name="column">1</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT</property>
@ -4470,7 +4274,7 @@
</object>
</object>
<object class="gbsizeritem" expanded="false">
<property name="border">5</property>
<property name="border">3</property>
<property name="colspan">1</property>
<property name="column">0</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT</property>
@ -4535,7 +4339,7 @@
</object>
</object>
<object class="gbsizeritem" expanded="false">
<property name="border">5</property>
<property name="border">3</property>
<property name="colspan">1</property>
<property name="column">1</property>
<property name="flag">wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>
@ -4601,7 +4405,7 @@
</object>
</object>
<object class="gbsizeritem" expanded="false">
<property name="border">5</property>
<property name="border">3</property>
<property name="colspan">1</property>
<property name="column">2</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT</property>
@ -4666,7 +4470,7 @@
</object>
</object>
<object class="gbsizeritem" expanded="false">
<property name="border">5</property>
<property name="border">3</property>
<property name="colspan">1</property>
<property name="column">0</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT</property>
@ -4731,7 +4535,7 @@
</object>
</object>
<object class="gbsizeritem" expanded="false">
<property name="border">5</property>
<property name="border">3</property>
<property name="colspan">1</property>
<property name="column">1</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT|wxEXPAND</property>
@ -4797,7 +4601,7 @@
</object>
</object>
<object class="gbsizeritem" expanded="false">
<property name="border">5</property>
<property name="border">3</property>
<property name="colspan">1</property>
<property name="column">2</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT</property>

View File

@ -96,9 +96,6 @@ class PANEL_COMMON_SETTINGS_BASE : public RESETTABLE_PANEL
wxSpinCtrl* m_SaveTime;
wxStaticText* m_staticTextFileHistorySize;
wxSpinCtrl* m_fileHistorySize;
wxStaticText* m_staticTextClear3DCache;
wxSpinCtrl* m_Clear3DCacheFilesOlder;
wxStaticText* m_staticTextDays;
wxStaticText* m_staticText25;
wxStaticLine* m_staticline4;
wxCheckBox* m_cbBackupEnabled;

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -30,13 +30,13 @@ PANEL_DATA_COLLECTION_BASE::PANEL_DATA_COLLECTION_BASE( wxWindow* parent, wxWind
m_sentryUid = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
m_sentryUid->SetMinSize( wxSize( 340,-1 ) );
bSizer3->Add( m_sentryUid, 0, wxALL, 5 );
bSizer3->Add( m_sentryUid, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
m_buttonResetId = new wxButton( this, wxID_ANY, _("Reset Unique Id"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer3->Add( m_buttonResetId, 0, wxALL, 5 );
bSizer3->Add( m_buttonResetId, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 10 );
bSizer8->Add( bSizer3, 1, wxEXPAND, 5 );
bSizer8->Add( bSizer3, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
bPanelSizer->Add( bSizer8, 1, wxEXPAND, 5 );

View File

@ -1,40 +1,43 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<wxFormBuilder_Project>
<FileVersion major="1" minor="16" />
<object class="Project" expanded="1">
<property name="class_decoration"></property>
<FileVersion major="1" minor="18"/>
<object class="Project" expanded="true">
<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_data_collection_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">PanelDataCollection</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>
<object class="Panel" expanded="1">
<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>
<property name="bg"></property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="drag_accept_files">0</property>
<property name="enabled">1</property>
<property name="event_handler">impl_virtual</property>
<property name="fg"></property>
@ -52,33 +55,33 @@
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxTAB_TRAVERSAL</property>
<object class="wxBoxSizer" expanded="1">
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bPanelSizer</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bSizer8</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<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"></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>
@ -91,6 +94,7 @@
<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>
@ -127,19 +131,19 @@
<property name="wrap">500</property>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="1">
<object class="wxCheckBox" 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"></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>
@ -153,6 +157,7 @@
<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>
@ -191,28 +196,28 @@
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<property name="flag">wxEXPAND|wxTOP|wxBOTTOM</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bSizer3</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxTextCtrl" expanded="1">
<property name="flag">wxALL|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"></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>
@ -225,6 +230,7 @@
<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>
@ -235,7 +241,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">340,-1</property>
@ -264,19 +270,19 @@
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<object class="sizeritem" expanded="true">
<property name="border">10</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<object class="wxButton" 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"></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>
@ -294,6 +300,7 @@
<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>

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 3.10.1-0-g8feb16b)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!

View File

@ -0,0 +1,146 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright The KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <dialogs/panel_maintenance.h>
#include <kidialog.h>
#include <pgm_base.h>
#include <kiway.h>
#include <eda_base_frame.h>
#include <settings/common_settings.h>
#include <settings/settings_manager.h>
#include <widgets/paged_dialog.h>
PANEL_MAINTENANCE::PANEL_MAINTENANCE( wxWindow* aParent, EDA_BASE_FRAME* aFrame ) :
PANEL_MAINTENANCE_BASE( aParent ),
m_frame( aFrame )
{
}
bool PANEL_MAINTENANCE::TransferDataToWindow()
{
COMMON_SETTINGS* commonSettings = Pgm().GetCommonSettings();
applySettingsToPanel( *commonSettings );
return true;
}
bool PANEL_MAINTENANCE::TransferDataFromWindow()
{
COMMON_SETTINGS* commonSettings = Pgm().GetCommonSettings();
commonSettings->m_System.clear_3d_cache_interval = m_Clear3DCacheFilesOlder->GetValue();
Pgm().GetSettingsManager().Save( commonSettings );
return true;
}
void PANEL_MAINTENANCE::ResetPanel()
{
COMMON_SETTINGS defaultSettings;
defaultSettings.ResetToDefaults();
applySettingsToPanel( defaultSettings );
}
void PANEL_MAINTENANCE::applySettingsToPanel( COMMON_SETTINGS& aSettings )
{
m_Clear3DCacheFilesOlder->SetValue( aSettings.m_System.clear_3d_cache_interval );
}
void PANEL_MAINTENANCE::onClearFileHistory( wxCommandEvent& event )
{
Pgm().GetSettingsManager().ClearFileHistory();
// We also need to clear the in-memory wxWidgets histories, update menu bars, etc.
m_frame->Kiway().ClearFileHistory();
if( PAGED_DIALOG* dlg = PAGED_DIALOG::GetDialog( this ) )
dlg->GetInfoBar()->ShowMessageFor( _( "File history cleared." ), 6000, wxICON_INFORMATION );
}
void PANEL_MAINTENANCE::doClearDontShowAgain()
{
if( COMMON_SETTINGS* settings = Pgm().GetSettingsManager().GetCommonSettings() )
{
// intra-session do-not-show-agains
settings->m_DoNotShowAgain = {};
settings->SaveToFile( Pgm().GetSettingsManager().GetPathForSettingsFile( settings ) );
}
// Session do-not-show-agains
KIDIALOG::ClearDoNotShowAgainDialogs();
}
void PANEL_MAINTENANCE::onClearDontShowAgain( wxCommandEvent& event )
{
doClearDontShowAgain();
if( PAGED_DIALOG* dlg = PAGED_DIALOG::GetDialog( this ) )
dlg->GetInfoBar()->ShowMessageFor( _( "\"Don't show again\" dialogs reset." ), 6000, wxICON_INFORMATION );
}
void PANEL_MAINTENANCE::doClearDialogState()
{
doClearDontShowAgain();
if( COMMON_SETTINGS* settings = Pgm().GetSettingsManager().GetCommonSettings() )
{
settings->m_dialogControlValues = {};
settings->SaveToFile( Pgm().GetSettingsManager().GetPathForSettingsFile( settings ) );
}
}
void PANEL_MAINTENANCE::onClearDialogState( wxCommandEvent& event )
{
doClearDialogState();
if( PAGED_DIALOG* dlg = PAGED_DIALOG::GetDialog( this ) )
dlg->GetInfoBar()->ShowMessageFor( _( "All dialogs reset to defaults." ), 6000, wxICON_INFORMATION );
}
void PANEL_MAINTENANCE::onResetAll( wxCommandEvent& event )
{
doClearDialogState();
Pgm().GetSettingsManager().ResetToDefaults();
// Kill changes currently in dialog
wxQueueEvent( m_parent, new wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL ) );
// Reopen dialog
wxQueueEvent( m_frame, new wxCommandEvent( wxEVT_COMMAND_MENU_SELECTED, wxID_PREFERENCES ) );
}

View File

@ -0,0 +1,83 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "panel_maintenance_base.h"
///////////////////////////////////////////////////////////////////////////
PANEL_MAINTENANCE_BASE::PANEL_MAINTENANCE_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : RESETTABLE_PANEL( parent, id, pos, size, style, name )
{
wxBoxSizer* bPanelSizer;
bPanelSizer = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* margins;
margins = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* b3DCacheSizer;
b3DCacheSizer = new wxBoxSizer( wxHORIZONTAL );
m_staticTextClear3DCache = new wxStaticText( this, wxID_ANY, _("3D cache file duration:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextClear3DCache->Wrap( -1 );
b3DCacheSizer->Add( m_staticTextClear3DCache, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
m_Clear3DCacheFilesOlder = new wxSpinCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 120, 30 );
m_Clear3DCacheFilesOlder->SetToolTip( _("3D cache files older than this are deleted.\nIf set to 0, cache clearing is disabled") );
b3DCacheSizer->Add( m_Clear3DCacheFilesOlder, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5 );
m_staticTextDays = new wxStaticText( this, wxID_ANY, _("days"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextDays->Wrap( -1 );
b3DCacheSizer->Add( m_staticTextDays, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
margins->Add( b3DCacheSizer, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bResetStateSizer;
bResetStateSizer = new wxBoxSizer( wxVERTICAL );
m_clearFileHistory = new wxButton( this, wxID_ANY, _("Clear \"Open Recent\" History"), wxDefaultPosition, wxDefaultSize, 0 );
bResetStateSizer->Add( m_clearFileHistory, 0, wxALL|wxEXPAND, 5 );
bResetStateSizer->Add( 0, 10, 1, wxEXPAND, 5 );
m_clearDontShowAgain = new wxButton( this, wxID_ANY, _("Reset \"Don't Show Again\" Dialogs"), wxDefaultPosition, wxDefaultSize, 0 );
bResetStateSizer->Add( m_clearDontShowAgain, 0, wxALL|wxEXPAND, 5 );
m_clearDialogState = new wxButton( this, wxID_ANY, _("Reset All Dialogs to Defaults"), wxDefaultPosition, wxDefaultSize, 0 );
bResetStateSizer->Add( m_clearDialogState, 0, wxALL|wxEXPAND, 5 );
m_resetAll = new wxButton( this, wxID_ANY, _("Reset All Program Settings to Defaults"), wxDefaultPosition, wxDefaultSize, 0 );
bResetStateSizer->Add( m_resetAll, 0, wxALL, 5 );
margins->Add( bResetStateSizer, 1, wxEXPAND|wxTOP, 10 );
bPanelSizer->Add( margins, 0, wxRIGHT|wxLEFT, 5 );
this->SetSizer( bPanelSizer );
this->Layout();
bPanelSizer->Fit( this );
// Connect Events
m_clearFileHistory->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_MAINTENANCE_BASE::onClearFileHistory ), NULL, this );
m_clearDontShowAgain->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_MAINTENANCE_BASE::onClearDontShowAgain ), NULL, this );
m_clearDialogState->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_MAINTENANCE_BASE::onClearDialogState ), NULL, this );
m_resetAll->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_MAINTENANCE_BASE::onResetAll ), NULL, this );
}
PANEL_MAINTENANCE_BASE::~PANEL_MAINTENANCE_BASE()
{
// Disconnect Events
m_clearFileHistory->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_MAINTENANCE_BASE::onClearFileHistory ), NULL, this );
m_clearDontShowAgain->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_MAINTENANCE_BASE::onClearDontShowAgain ), NULL, this );
m_clearDialogState->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_MAINTENANCE_BASE::onClearDialogState ), NULL, this );
m_resetAll->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PANEL_MAINTENANCE_BASE::onResetAll ), NULL, this );
}

View File

@ -0,0 +1,596 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<wxFormBuilder_Project>
<FileVersion major="1" minor="18"/>
<object class="Project" expanded="true">
<property name="code_generation">C++</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="file">panel_maintenance_base</property>
<property name="first_id">1000</property>
<property name="internationalize">1</property>
<property name="lua_skip_events">1</property>
<property name="lua_ui_table">UI</property>
<property name="name">PanelMaintenance</property>
<property name="path">.</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="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>
<property name="bg"></property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="drag_accept_files">0</property>
<property name="enabled">1</property>
<property name="event_handler">impl_virtual</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">PANEL_MAINTENANCE_BASE</property>
<property name="pos"></property>
<property name="size">-1,-1</property>
<property name="subclass">RESETTABLE_PANEL; widgets/resettable_panel.h; Not forward_declare</property>
<property name="tooltip"></property>
<property name="two_step_creation">0</property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxTAB_TRAVERSAL</property>
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bPanelSizer</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">margins</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">b3DCacheSizer</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<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">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">3D cache file duration:</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_staticTextClear3DCache</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|wxTOP|wxBOTTOM</property>
<property name="proportion">0</property>
<object class="wxSpinCtrl" 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">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="initial">30</property>
<property name="max">120</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min">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_Clear3DCacheFilesOlder</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">wxSP_ARROW_KEYS</property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip">3D cache files older than this are deleted.&#x0A;If set to 0, cache clearing is disabled</property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<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">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">days</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_staticTextDays</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>
</object>
<object class="sizeritem" expanded="true">
<property name="border">10</property>
<property name="flag">wxEXPAND|wxTOP</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bResetStateSizer</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxButton" 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="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap"></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="current"></property>
<property name="default">0</property>
<property name="default_pane">0</property>
<property name="disabled"></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="focus"></property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Clear &quot;Open Recent&quot; History</property>
<property name="margins"></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_clearFileHistory</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="position"></property>
<property name="pressed"></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="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnButtonClick">onClearFileHistory</event>
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="spacer" expanded="true">
<property name="height">10</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxButton" 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="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap"></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="current"></property>
<property name="default">0</property>
<property name="default_pane">0</property>
<property name="disabled"></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="focus"></property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Reset &quot;Don&apos;t Show Again&quot; Dialogs</property>
<property name="margins"></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_clearDontShowAgain</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">private</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="position"></property>
<property name="pressed"></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="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnButtonClick">onClearDontShowAgain</event>
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxButton" 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="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap"></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="current"></property>
<property name="default">0</property>
<property name="default_pane">0</property>
<property name="disabled"></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="focus"></property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Reset All Dialogs to Defaults</property>
<property name="margins"></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_clearDialogState</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">private</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="position"></property>
<property name="pressed"></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="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnButtonClick">onClearDialogState</event>
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxButton" 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="auth_needed">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="bitmap"></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="current"></property>
<property name="default">0</property>
<property name="default_pane">0</property>
<property name="disabled"></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="focus"></property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Reset All Program Settings to Defaults</property>
<property name="margins"></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_resetAll</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">private</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="position"></property>
<property name="pressed"></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="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnButtonClick">onResetAll</event>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</wxFormBuilder_Project>

View File

@ -0,0 +1,60 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#pragma once
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/intl.h>
#include "widgets/resettable_panel.h"
#include <wx/string.h>
#include <wx/stattext.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/spinctrl.h>
#include <wx/sizer.h>
#include <wx/button.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/panel.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class PANEL_MAINTENANCE_BASE
///////////////////////////////////////////////////////////////////////////////
class PANEL_MAINTENANCE_BASE : public RESETTABLE_PANEL
{
private:
wxButton* m_clearDontShowAgain;
wxButton* m_clearDialogState;
wxButton* m_resetAll;
protected:
wxStaticText* m_staticTextClear3DCache;
wxSpinCtrl* m_Clear3DCacheFilesOlder;
wxStaticText* m_staticTextDays;
wxButton* m_clearFileHistory;
// Virtual event handlers, override them in your derived class
virtual void onClearFileHistory( wxCommandEvent& event ) { event.Skip(); }
virtual void onClearDontShowAgain( wxCommandEvent& event ) { event.Skip(); }
virtual void onClearDialogState( wxCommandEvent& event ) { event.Skip(); }
virtual void onResetAll( wxCommandEvent& event ) { event.Skip(); }
public:
PANEL_MAINTENANCE_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString );
~PANEL_MAINTENANCE_BASE();
};

View File

@ -12,17 +12,14 @@
PANEL_PLUGIN_SETTINGS_BASE::PANEL_PLUGIN_SETTINGS_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : RESETTABLE_PANEL( parent, id, pos, size, style, name )
{
wxBoxSizer* bPanelSizer;
bPanelSizer = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizer8;
bSizer8 = new wxBoxSizer( wxVERTICAL );
bPanelSizer = new wxBoxSizer( wxVERTICAL );
apiLabel = new wxStaticText( this, wxID_ANY, _("KiCad API"), wxDefaultPosition, wxDefaultSize, 0 );
apiLabel->Wrap( -1 );
bSizer8->Add( apiLabel, 0, wxTOP|wxRIGHT|wxLEFT, 13 );
bPanelSizer->Add( apiLabel, 0, wxTOP|wxRIGHT|wxLEFT, 13 );
m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizer8->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 );
bPanelSizer->Add( m_staticline1, 0, wxEXPAND|wxTOP|wxBOTTOM, 2 );
wxBoxSizer* apiBox;
apiBox = new wxBoxSizer( wxVERTICAL );
@ -37,14 +34,17 @@ PANEL_PLUGIN_SETTINGS_BASE::PANEL_PLUGIN_SETTINGS_BASE( wxWindow* parent, wxWind
apiBox->Add( m_cbEnableApi, 0, wxALL, 5 );
bSizer8->Add( apiBox, 1, wxEXPAND|wxALL, 5 );
bPanelSizer->Add( apiBox, 0, wxEXPAND|wxALL, 5 );
bPanelSizer->Add( 0, 15, 0, wxEXPAND, 5 );
pythonLabel = new wxStaticText( this, wxID_ANY, _("Python Interpreter"), wxDefaultPosition, wxDefaultSize, 0 );
pythonLabel->Wrap( -1 );
bSizer8->Add( pythonLabel, 0, wxTOP|wxRIGHT|wxLEFT, 13 );
bPanelSizer->Add( pythonLabel, 0, wxTOP|wxRIGHT|wxLEFT, 13 );
m_staticline2 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bSizer8->Add( m_staticline2, 0, wxEXPAND|wxTOP|wxBOTTOM, 2 );
bPanelSizer->Add( m_staticline2, 0, wxEXPAND|wxTOP|wxBOTTOM, 2 );
wxBoxSizer* pythonBox;
pythonBox = new wxBoxSizer( wxVERTICAL );
@ -76,13 +76,7 @@ PANEL_PLUGIN_SETTINGS_BASE::PANEL_PLUGIN_SETTINGS_BASE( wxWindow* parent, wxWind
pythonBox->Add( m_stApiStatus, 0, wxALL, 5 );
bSizer8->Add( pythonBox, 1, wxEXPAND|wxALL, 5 );
bSizer8->Add( 0, 0, 1, wxEXPAND, 5 );
bPanelSizer->Add( bSizer8, 1, wxEXPAND, 5 );
bPanelSizer->Add( pythonBox, 1, wxEXPAND|wxALL, 5 );
this->SetSizer( bPanelSizer );

View File

@ -58,15 +58,6 @@
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bPanelSizer</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bSizer8</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="true">
@ -132,8 +123,8 @@
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND | wxALL</property>
<property name="border">2</property>
<property name="flag">wxEXPAND|wxTOP|wxBOTTOM</property>
<property name="proportion">0</property>
<object class="wxStaticLine" expanded="true">
<property name="BottomDockable">1</property>
@ -193,7 +184,7 @@
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxALL</property>
<property name="proportion">1</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">apiBox</property>
@ -329,6 +320,16 @@
</object>
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
<object class="spacer" expanded="true">
<property name="height">15</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">13</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
@ -800,18 +801,6 @@
</object>
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="spacer" expanded="true">
<property name="height">0</property>
<property name="permission">protected</property>
<property name="width">0</property>
</object>
</object>
</object>
</object>
</object>
</object>
</object>

View File

@ -24,6 +24,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "dialogs/panel_maintenance.h"
#include "kicad_manager_frame.h"
#include <eda_base_frame.h>
@ -1161,14 +1162,11 @@ wxString EDA_BASE_FRAME::GetFileFromHistory( int cmdId, const wxString& type,
}
void EDA_BASE_FRAME::ClearFileHistory( FILE_HISTORY* aFileHistory )
void EDA_BASE_FRAME::ClearFileHistory()
{
if( !aFileHistory )
aFileHistory = m_fileHistory;
wxASSERT( m_fileHistory );
wxASSERT( aFileHistory );
aFileHistory->ClearFileHistory();
m_fileHistory->ClearFileHistory();
// Update the menubar to update the file history menu
if( GetMenuBar() )
@ -1195,7 +1193,7 @@ void EDA_BASE_FRAME::OnPreferences( wxCommandEvent& event )
void EDA_BASE_FRAME::ShowPreferences( wxString aStartPage, wxString aStartParentPage )
{
PAGED_DIALOG dlg( this, _( "Preferences" ), true, true, wxEmptyString,
wxWindow::FromDIP( wxSize( 980, 560 ), NULL ) );
wxWindow::FromDIP( wxSize( 980, 560 ), nullptr ) );
dlg.SetEvtHandlerEnabled( false );
@ -1204,7 +1202,6 @@ void EDA_BASE_FRAME::ShowPreferences( wxString aStartPage, wxString aStartParent
WX_TREEBOOK* book = dlg.GetTreebook();
PANEL_HOTKEYS_EDITOR* hotkeysPanel = new PANEL_HOTKEYS_EDITOR( this, book, false );
KIFACE* kiface = nullptr;
std::vector<int> expand;
wxWindow* kicadMgr_window = wxWindow::FindWindowByName( KICAD_MANAGER_FRAME_NAME );
@ -1262,11 +1259,8 @@ void EDA_BASE_FRAME::ShowPreferences( wxString aStartPage, wxString aStartParent
try
{
kiface = Kiway().KiFACE( KIWAY::FACE_SCH );
if( !kiface )
return;
if( KIFACE* kiface = Kiway().KiFACE( KIWAY::FACE_SCH ) )
{
kiface->GetActions( hotkeysPanel->ActionsList() );
if( GetFrameType() == FRAME_SCH_SYMBOL_EDITOR )
@ -1293,21 +1287,18 @@ void EDA_BASE_FRAME::ShowPreferences( wxString aStartPage, wxString aStartParent
if( ADVANCED_CFG::GetCfg().m_ConfigurableToolbars )
book->AddLazySubPage( LAZY_CTOR( PANEL_SCH_TOOLBARS ), _( "Toolbars" ) );
book->AddLazySubPage( LAZY_CTOR( PANEL_SCH_FIELD_NAME_TEMPLATES ),
_( "Field Name Templates" ) );
book->AddLazySubPage( LAZY_CTOR( PANEL_SCH_FIELD_NAME_TEMPLATES ), _( "Field Name Templates" ) );
book->AddLazySubPage( LAZY_CTOR( PANEL_SCH_SIMULATOR ), _( "Simulator" ) );
}
}
catch( ... )
{
}
try
{
kiface = Kiway().KiFACE( KIWAY::FACE_PCB );
if( !kiface )
return;
if( KIFACE* kiface = Kiway().KiFACE( KIWAY::FACE_PCB ) )
{
kiface->GetActions( hotkeysPanel->ActionsList() );
if( GetFrameType() == FRAME_FOOTPRINT_EDITOR )
@ -1324,8 +1315,7 @@ void EDA_BASE_FRAME::ShowPreferences( wxString aStartPage, wxString aStartParent
book->AddLazySubPage( LAZY_CTOR( PANEL_FP_TOOLBARS ), _( "Toolbars" ) );
book->AddLazySubPage( LAZY_CTOR( PANEL_FP_DEFAULT_FIELDS ), _( "Footprint Defaults" ) );
book->AddLazySubPage( LAZY_CTOR( PANEL_FP_DEFAULT_GRAPHICS_VALUES ),
_( "Graphics Defaults" ) );
book->AddLazySubPage( LAZY_CTOR( PANEL_FP_DEFAULT_GRAPHICS_VALUES ), _( "Graphics Defaults" ) );
if( GetFrameType() == FRAME_PCB_EDITOR )
expand.push_back( (int) book->GetPageCount() );
@ -1354,17 +1344,15 @@ void EDA_BASE_FRAME::ShowPreferences( wxString aStartPage, wxString aStartParent
book->AddLazySubPage( LAZY_CTOR( PANEL_3DV_OPENGL ), _( "Realtime Renderer" ) );
book->AddLazySubPage( LAZY_CTOR( PANEL_3DV_RAYTRACING ), _( "Raytracing Renderer" ) );
}
}
catch( ... )
{
}
try
{
kiface = Kiway().KiFACE( KIWAY::FACE_GERBVIEW );
if( !kiface )
return;
if( KIFACE* kiface = Kiway().KiFACE( KIWAY::FACE_GERBVIEW ) )
{
kiface->GetActions( hotkeysPanel->ActionsList() );
if( GetFrameType() == FRAME_GERBER )
@ -1378,8 +1366,8 @@ void EDA_BASE_FRAME::ShowPreferences( wxString aStartPage, wxString aStartParent
book->AddLazySubPage( LAZY_CTOR( PANEL_GBR_TOOLBARS ), _( "Toolbars" ) );
book->AddLazySubPage( LAZY_CTOR( PANEL_GBR_GRIDS ), _( "Grids" ) );
book->AddLazySubPage( LAZY_CTOR( PANEL_GBR_EXCELLON_OPTIONS ),
_( "Excellon Options" ) );
book->AddLazySubPage( LAZY_CTOR( PANEL_GBR_EXCELLON_OPTIONS ), _( "Excellon Options" ) );
}
}
catch( ... )
{
@ -1387,11 +1375,8 @@ void EDA_BASE_FRAME::ShowPreferences( wxString aStartPage, wxString aStartParent
try
{
kiface = Kiway().KiFACE( KIWAY::FACE_PL_EDITOR );
if( !kiface )
return;
if( KIFACE* kiface = Kiway().KiFACE( KIWAY::FACE_PL_EDITOR ) )
{
kiface->GetActions( hotkeysPanel->ActionsList() );
if( GetFrameType() == FRAME_PL_EDITOR )
@ -1411,6 +1396,7 @@ void EDA_BASE_FRAME::ShowPreferences( wxString aStartPage, wxString aStartParent
return new PANEL_PACKAGES_AND_UPDATES( aParent );
}, _( "Packages and Updates" ) );
}
}
catch( ... )
{
}
@ -1419,6 +1405,8 @@ void EDA_BASE_FRAME::ShowPreferences( wxString aStartPage, wxString aStartParent
book->AddPage( new PANEL_PLUGIN_SETTINGS( book ), _( "Plugins" ) );
#endif
book->AddPage( new PANEL_MAINTENANCE( book, this ), _( "Maintenance" ) );
// Update all of the action hotkeys. The process of loading the actions through
// the KiFACE will only get us the default hotkeys
ReadHotKeyConfigIntoActions( wxEmptyString, hotkeysPanel->ActionsList() );

View File

@ -27,27 +27,31 @@
// Set of dialogs that have been chosen not to be shown again
static std::unordered_map<unsigned long, int> doNotShowAgainDlgs;
static std::unordered_map<unsigned long, int> g_doNotShowAgainDlgs;
KIDIALOG::KIDIALOG( wxWindow* aParent, const wxString& aMessage, const wxString& aCaption,
long aStyle )
: KIDIALOG_BASE( aParent, aMessage, aCaption, aStyle | wxCENTRE | wxSTAY_ON_TOP ),
KIDIALOG::KIDIALOG( wxWindow* aParent, const wxString& aMessage, const wxString& aCaption, long aStyle ) :
KIDIALOG_BASE( aParent, aMessage, aCaption, aStyle | wxCENTRE | wxSTAY_ON_TOP ),
m_hash( 0 ),
m_cancelMeansCancel( true )
{
}
KIDIALOG::KIDIALOG( wxWindow* aParent, const wxString& aMessage, KD_TYPE aType,
const wxString& aCaption )
: KIDIALOG_BASE( aParent, aMessage, getCaption( aType, aCaption ), getStyle( aType ) ),
KIDIALOG::KIDIALOG( wxWindow* aParent, const wxString& aMessage, KD_TYPE aType, const wxString& aCaption ) :
KIDIALOG_BASE( aParent, aMessage, getCaption( aType, aCaption ), getStyle( aType ) ),
m_hash( 0 ),
m_cancelMeansCancel( true )
{
}
void KIDIALOG::ClearDoNotShowAgainDialogs()
{
g_doNotShowAgainDlgs = {};
}
void KIDIALOG::DoNotShowCheckbox( wxString aUniqueId, int line )
{
ShowCheckBox( _( "Do not show again" ), false );
@ -58,13 +62,7 @@ void KIDIALOG::DoNotShowCheckbox( wxString aUniqueId, int line )
bool KIDIALOG::DoNotShowAgain() const
{
return doNotShowAgainDlgs.count( m_hash ) > 0;
}
void KIDIALOG::ForceShowAgain()
{
doNotShowAgainDlgs.erase( m_hash );
return g_doNotShowAgainDlgs.count( m_hash ) > 0;
}
@ -74,9 +72,9 @@ bool KIDIALOG::Show( bool aShow )
if( aShow )
{
// Check if this dialog should be shown to the user
auto it = doNotShowAgainDlgs.find( m_hash );
auto it = g_doNotShowAgainDlgs.find( m_hash );
if( it != doNotShowAgainDlgs.end() )
if( it != g_doNotShowAgainDlgs.end() )
return it->second;
}
@ -86,7 +84,7 @@ bool KIDIALOG::Show( bool aShow )
// Note that we don't save a Cancel value unless the Cancel button is being used for some
// other function (which is actually more common than it being used for Cancel).
if( IsCheckBoxChecked() && (!m_cancelMeansCancel || ret != wxID_CANCEL ) )
doNotShowAgainDlgs[m_hash] = ret;
g_doNotShowAgainDlgs[m_hash] = ret;
return ret;
}
@ -95,9 +93,9 @@ bool KIDIALOG::Show( bool aShow )
int KIDIALOG::ShowModal()
{
// Check if this dialog should be shown to the user
auto it = doNotShowAgainDlgs.find( m_hash );
auto it = g_doNotShowAgainDlgs.find( m_hash );
if( it != doNotShowAgainDlgs.end() )
if( it != g_doNotShowAgainDlgs.end() )
return it->second;
int ret = KIDIALOG_BASE::ShowModal();
@ -106,7 +104,7 @@ int KIDIALOG::ShowModal()
// Note that we don't save a Cancel value unless the Cancel button is being used for some
// other function (which is actually more common than it being used for Cancel).
if( IsCheckBoxChecked() && (!m_cancelMeansCancel || ret != wxID_CANCEL ) )
doNotShowAgainDlgs[m_hash] = ret;
g_doNotShowAgainDlgs[m_hash] = ret;
return ret;
}

View File

@ -609,6 +609,29 @@ void KIWAY::CommonSettingsChanged( int aFlags )
}
void KIWAY::ClearFileHistory()
{
if( m_ctl & KFCTL_CPP_PROJECT_SUITE )
{
// A dynamic_cast could be better, but creates link issues
// (some basic_frame functions not found) on some platforms,
// so a static_cast is used.
EDA_BASE_FRAME* top = static_cast<EDA_BASE_FRAME*>( m_top );
if( top )
top->ClearFileHistory();
}
for( unsigned i=0; i < KIWAY_PLAYER_COUNT; ++i )
{
KIWAY_PLAYER* frame = GetPlayerFrame( ( FRAME_T )i );
if( frame )
frame->ClearFileHistory();
}
}
void KIWAY::ProjectChanged()
{
APP_MONITOR::AddNavigationBreadcrumb( "Changing project", "kiway.projectchanged" );

View File

@ -199,6 +199,7 @@ APP_SETTINGS_BASE::APP_SETTINGS_BASE( const std::string& aFilename, int aSchemaV
m_params.emplace_back( new PARAM<int>( "system.max_undo_items",
&m_System.max_undo_items, 0 ) );
// WARNING: "system.file_history" is a "known" key (see JSON_SETTINGS::GetFileHistories())
m_params.emplace_back( new PARAM_LIST<wxString>( "system.file_history",
&m_System.file_history, {} ) );

View File

@ -519,21 +519,15 @@ bool COMMON_SETTINGS::migrateSchema0to1()
if( mwp )
{
( *m_internals )[nlohmann::json::json_pointer( "/input/horizontal_pan" )] = true;
( *m_internals )[nlohmann::json::json_pointer( "/input/scroll_modifier_pan_h" )] =
WXK_SHIFT;
( *m_internals )[nlohmann::json::json_pointer( "/input/scroll_modifier_pan_h" )] = WXK_SHIFT;
( *m_internals )[nlohmann::json::json_pointer( "/input/scroll_modifier_pan_v" )] = 0;
( *m_internals )[nlohmann::json::json_pointer( "/input/scroll_modifier_zoom" )] =
WXK_CONTROL;
( *m_internals )[nlohmann::json::json_pointer( "/input/scroll_modifier_zoom" )] = WXK_CONTROL;
}
else
{
( *m_internals )[nlohmann::json::json_pointer( "/input/horizontal_pan" )] = false;
( *m_internals )[nlohmann::json::json_pointer( "/input/scroll_modifier_pan_h" )] =
WXK_CONTROL;
( *m_internals )[nlohmann::json::json_pointer( "/input/scroll_modifier_pan_v" )] =
WXK_SHIFT;
( *m_internals )[nlohmann::json::json_pointer( "/input/scroll_modifier_pan_h" )] = WXK_CONTROL;
( *m_internals )[nlohmann::json::json_pointer( "/input/scroll_modifier_pan_v" )] = WXK_SHIFT;
( *m_internals )[nlohmann::json::json_pointer( "/input/scroll_modifier_zoom" )] = 0;
}
@ -560,11 +554,9 @@ bool COMMON_SETTINGS::migrateSchema1to2()
}
if( prefer_selection )
( *m_internals )[nlohmann::json::json_pointer( "/input/mouse_left" )] =
MOUSE_DRAG_ACTION::SELECT;
( *m_internals )[nlohmann::json::json_pointer( "/input/mouse_left" )] = MOUSE_DRAG_ACTION::SELECT;
else
( *m_internals )[nlohmann::json::json_pointer( "/input/mouse_left" )] =
MOUSE_DRAG_ACTION::DRAG_ANY;
( *m_internals )[nlohmann::json::json_pointer( "/input/mouse_left" )] = MOUSE_DRAG_ACTION::DRAG_ANY;
return true;
}
@ -691,8 +683,7 @@ bool COMMON_SETTINGS::MigrateFromLegacy( wxConfigBase* aCfg )
{
wxString key, value;
long index = 0;
nlohmann::json::json_pointer ptr =
m_internals->PointerFromString( "environment.vars" );
nlohmann::json::json_pointer ptr = m_internals->PointerFromString( "environment.vars" );
aCfg->SetPath( "EnvironmentVariables" );
( *m_internals )[ptr] = nlohmann::json( {} );

View File

@ -397,6 +397,20 @@ void JSON_SETTINGS::ResetToDefaults()
}
std::map<std::string, nlohmann::json> JSON_SETTINGS::GetFileHistories()
{
std::map<std::string, nlohmann::json> histories;
for( const std::string& candidate : { "system.file_history" } )
{
if( Contains( candidate ) )
histories[candidate] = GetJson( candidate ).value();
}
return histories;
}
bool JSON_SETTINGS::SaveToFile( const wxString& aDirectory, bool aForce )
{
if( !m_writeFile )
@ -480,8 +494,7 @@ bool JSON_SETTINGS::SaveToFile( const wxString& aDirectory, bool aForce )
{
if( param->ClearUnknownKeys() )
{
nlohmann::json_pointer p
= JSON_SETTINGS_INTERNALS::PointerFromString( param->GetJsonPath() );
nlohmann::json_pointer p = JSON_SETTINGS_INTERNALS::PointerFromString( param->GetJsonPath() );
toSave[p] = nlohmann::json( {} );
}

View File

@ -102,6 +102,41 @@ SETTINGS_MANAGER::~SETTINGS_MANAGER()
}
void SETTINGS_MANAGER::ResetToDefaults()
{
for( std::unique_ptr<JSON_SETTINGS>& settings : m_settings )
{
if( settings->GetLocation() == SETTINGS_LOC::USER || settings->GetLocation() == SETTINGS_LOC::COLORS )
{
std::map<std::string, nlohmann::json> fileHistories = settings->GetFileHistories();
settings->Internals()->clear();
settings->Load(); // load from nothing (ie: load defaults)
for( const auto& [path, history] : fileHistories )
settings->Set( path, history );
settings->SaveToFile( GetPathForSettingsFile( settings.get() ) );
}
}
}
void SETTINGS_MANAGER::ClearFileHistory()
{
for( std::unique_ptr<JSON_SETTINGS>& settings : m_settings )
{
if( settings->GetLocation() == SETTINGS_LOC::USER )
{
for( const auto& [path, history] : settings->GetFileHistories() )
settings->Set( path, nlohmann::json::array() );
settings->SaveToFile( GetPathForSettingsFile( settings.get() ) );
}
}
}
JSON_SETTINGS* SETTINGS_MANAGER::registerSettings( JSON_SETTINGS* aSettings, bool aLoadNow )
{
std::unique_ptr<JSON_SETTINGS> ptr( aSettings );
@ -692,7 +727,8 @@ bool SETTINGS_MANAGER::GetPreviousVersionPaths( std::vector<wxString>* aPaths )
wxString subdir;
std::string mine = GetSettingsVersion();
auto check_dir = [&] ( const wxString& aSubDir )
auto check_dir =
[&] ( const wxString& aSubDir )
{
// Only older versions are valid for migration
if( compareVersions( aSubDir.ToStdString(), mine ) <= 0 )
@ -747,7 +783,8 @@ bool SETTINGS_MANAGER::GetPreviousVersionPaths( std::vector<wxString>* aPaths )
}
}
std::erase_if( *aPaths, []( const wxString& aPath ) -> bool
std::erase_if( *aPaths,
[]( const wxString& aPath ) -> bool
{
wxFileName fulldir = wxFileName::DirName( aPath );
const wxArrayString& dirs = fulldir.GetDirs();

View File

@ -79,7 +79,13 @@ void GERBVIEW_FRAME::OnDrlFileHistory( wxCommandEvent& event )
void GERBVIEW_FRAME::OnClearDrlFileHistory( wxCommandEvent& aEvent )
{
ClearFileHistory( &m_drillFileHistory );
m_drillFileHistory.ClearFileHistory();
if( GetMenuBar() )
{
ReCreateMenuBar();
GetMenuBar()->Refresh();
}
}
@ -97,7 +103,13 @@ void GERBVIEW_FRAME::OnZipFileHistory( wxCommandEvent& event )
void GERBVIEW_FRAME::OnClearZipFileHistory( wxCommandEvent& aEvent )
{
ClearFileHistory( &m_zipFileHistory );
m_zipFileHistory.ClearFileHistory();
if( GetMenuBar() )
{
ReCreateMenuBar();
GetMenuBar()->Refresh();
}
}
@ -112,7 +124,13 @@ void GERBVIEW_FRAME::OnJobFileHistory( wxCommandEvent& event )
void GERBVIEW_FRAME::OnClearJobFileHistory( wxCommandEvent& aEvent )
{
ClearFileHistory( &m_jobFileHistory );
m_jobFileHistory.ClearFileHistory();
if( GetMenuBar() )
{
ReCreateMenuBar();
GetMenuBar()->Refresh();
}
}
@ -690,6 +708,17 @@ bool GERBVIEW_FRAME::LoadZipArchiveFile( const wxString& aFullFileName )
return true;
}
void GERBVIEW_FRAME::ClearFileHistory()
{
m_drillFileHistory.ClearFileHistory();
m_zipFileHistory.ClearFileHistory();
m_jobFileHistory.ClearFileHistory();
EDA_DRAW_FRAME::ClearFileHistory();
}
void GERBVIEW_FRAME::DoWithAcceptedFiles()
{
wxString gerbFn; // param to be sent with action event.

View File

@ -303,6 +303,10 @@ public:
*/
bool LoadZipArchiveFile( const wxString& aFileName );
/**
* Remove all files from the file history.
*/
void ClearFileHistory() override;
/**
* Load a Gerber job file, and load gerber files found in job files.

View File

@ -59,12 +59,15 @@ GERBVIEW_SETTINGS::GERBVIEW_SETTINGS() :
m_params.emplace_back( new PARAM<double>( "appearance.mode_opacity_value",
&m_Display.m_OpacityModeAlphaValue, 0.6 ) );
// WARNING: any change to this key MUST be reflected in GetFileHistories()
m_params.emplace_back( new PARAM_LIST<wxString>( "system.drill_file_history",
&m_DrillFileHistory, {} ) );
// WARNING: any change to this key MUST be reflected in GetFileHistories()
m_params.emplace_back( new PARAM_LIST<wxString>( "system.zip_file_history",
&m_ZipFileHistory, {} ) );
// WARNING: any change to this key MUST be reflected in GetFileHistories()
m_params.emplace_back( new PARAM_LIST<wxString>( "system.job_file_history",
&m_JobFileHistory, {} ) );
@ -176,3 +179,20 @@ bool GERBVIEW_SETTINGS::MigrateFromLegacy( wxConfigBase* aCfg )
return ret;
}
std::map<std::string, nlohmann::json> GERBVIEW_SETTINGS::GetFileHistories()
{
std::map<std::string, nlohmann::json> histories = JSON_SETTINGS::GetFileHistories();
for( const std::string& candidate : { "system.drill_file_history",
"system.zip_file_history",
"system.job_file_history" } )
{
if( Contains( candidate ) )
histories[candidate] = GetJson( candidate ).value();
}
return histories;
}

View File

@ -21,8 +21,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef _GERBVIEW_SETTINGS_H
#define _GERBVIEW_SETTINGS_H
#pragma once
#include <settings/app_settings.h>
#include <excellon_defaults.h>
@ -40,10 +39,11 @@ public:
};
GERBVIEW_SETTINGS();
virtual ~GERBVIEW_SETTINGS() = default;
virtual ~GERBVIEW_SETTINGS() {}
std::map<std::string, nlohmann::json> GetFileHistories() override;
virtual bool MigrateFromLegacy( wxConfigBase* aLegacyConfig ) override;
bool MigrateFromLegacy( wxConfigBase* aLegacyConfig ) override;
/**
* return the Excellon default values to read a drill file
@ -55,17 +55,12 @@ public:
}
public:
APPEARANCE m_Appearance;
GBR_DISPLAY_OPTIONS m_Display;
int m_BoardLayersCount;
std::vector<wxString> m_DrillFileHistory;
std::vector<wxString> m_ZipFileHistory;
std::vector<wxString> m_JobFileHistory;
/**
@ -77,9 +72,6 @@ public:
EXCELLON_DEFAULTS m_ExcellonDefaults;
protected:
virtual std::string getLegacyFrameName() const override { return "GerberFrame"; }
};
#endif

View File

@ -21,15 +21,12 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef KICAD_DIALOG_SUITE_OPTIONS_H
#define KICAD_DIALOG_SUITE_OPTIONS_H
#pragma once
#include <dialogs/panel_common_settings_base.h>
class COMMON_SETTINGS;
class DIALOG_SHIM;
class STEPPED_SLIDER;
class PANEL_COMMON_SETTINGS : public PANEL_COMMON_SETTINGS_BASE
@ -64,5 +61,3 @@ private:
void ShowFileManagerWidgets( bool aBool );
void setPdfViewerPathState();
};
#endif //KICAD_DIALOG_SUITE_OPTIONS_H

View File

@ -0,0 +1,57 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright The KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma once
#include <dialogs/panel_maintenance_base.h>
class COMMON_SETTINGS;
class EDA_BASE_FRAME;
class PANEL_MAINTENANCE : public PANEL_MAINTENANCE_BASE
{
public:
PANEL_MAINTENANCE( wxWindow* aParent, EDA_BASE_FRAME* aFrame );
~PANEL_MAINTENANCE() = default;
void ResetPanel() override;
protected:
bool TransferDataFromWindow() override;
bool TransferDataToWindow() override;
void applySettingsToPanel( COMMON_SETTINGS& aSettings );
void doClearDontShowAgain();
void doClearDialogState();
void onClearFileHistory( wxCommandEvent& event ) override;
void onClearDontShowAgain( wxCommandEvent& event ) override;
void onClearDialogState( wxCommandEvent& event ) override;
void onResetAll( wxCommandEvent& event ) override;
protected:
EDA_BASE_FRAME* m_frame;
};

View File

@ -396,11 +396,8 @@ public:
/**
* Remove all files from the file history.
*
* @param aFileHistory The FILE_HISTORY in use. If null, the main application file
* history is used
*/
void ClearFileHistory( FILE_HISTORY* aFileHistory = nullptr );
virtual void ClearFileHistory();
/**
* Update the list of recently opened files.

View File

@ -22,15 +22,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* This file is part of the common library.
*
* @file kidialog.h
* @see common.h
*/
#ifndef KIDIALOG_H_
#define KIDIALOG_H_
#pragma once
#include <kicommon.h>
#include <wx/richmsgdlg.h>
@ -49,13 +41,13 @@
class KICOMMON_API KIDIALOG : public KIDIALOG_BASE
{
public:
static void ClearDoNotShowAgainDialogs();
///< Dialog type. Selects appropriate icon and default dialog title
enum KD_TYPE { KD_NONE, KD_INFO, KD_QUESTION, KD_WARNING, KD_ERROR };
KIDIALOG( wxWindow* aParent, const wxString& aMessage, const wxString& aCaption,
long aStyle = wxOK );
KIDIALOG( wxWindow* aParent, const wxString& aMessage, KD_TYPE aType,
const wxString& aCaption = "" );
KIDIALOG( wxWindow* aParent, const wxString& aMessage, const wxString& aCaption, long aStyle = wxOK );
KIDIALOG( wxWindow* aParent, const wxString& aMessage, KD_TYPE aType, const wxString& aCaption = "" );
bool SetOKCancelLabels( const ButtonLabel& ok, const ButtonLabel& cancel ) override
{
@ -68,7 +60,6 @@ public:
/// Checks the 'do not show again' setting for the dialog.
bool DoNotShowAgain() const;
void ForceShowAgain();
bool Show( bool aShow = true ) override;
int ShowModal() override;
@ -80,10 +71,6 @@ protected:
protected:
unsigned long m_hash; // Unique id
bool m_cancelMeansCancel; // If the Cancel button is renamed then it should be
// saved by the DoNotShowAgain checkbox. If it's really
// a cancel then it should not.
bool m_cancelMeansCancel; // If the Cancel button is renamed then it should be saved by the
// DoNotShowAgain checkbox. If it's really a cancel then it should not.
};
#endif /* KIDIALOG_H_ */

View File

@ -404,6 +404,12 @@ public:
*/
virtual void CommonSettingsChanged( int aFlags = 0 );
/**
* Clear the wxWidgets file history on each open frame. Preference records are handled
* by SETTINGS_MANAGER (as not all frames might be open).
*/
void ClearFileHistory();
/**
* Calls ProjectChanged() on all KIWAY_PLAYERs.
* Used after changing the project to ensure all players are updated correctly.

View File

@ -18,8 +18,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _COMMON_SETTINGS_H
#define _COMMON_SETTINGS_H
#pragma once
#include <settings/environment.h>
#include <settings/json_settings.h>
@ -223,33 +222,19 @@ private:
public:
APPEARANCE m_Appearance;
AUTO_BACKUP m_Backup;
ENVIRONMENT m_Env;
INPUT m_Input;
SPACEMOUSE m_SpaceMouse;
GRAPHICS m_Graphics;
SESSION m_Session;
SYSTEM m_System;
DO_NOT_SHOW_AGAIN m_DoNotShowAgain;
NETCLASS_PANEL m_NetclassPanel;
PACKAGE_MANAGER m_PackageManager;
GIT m_Git;
API m_Api;
/// Persistent dialog control values
std::map<std::string, std::map<std::string, nlohmann::json>> m_dialogControlValues;
};
#endif

View File

@ -166,6 +166,8 @@ public:
template<typename ValueType>
void Set( const std::string& aPath, ValueType aVal );
virtual std::map<std::string, nlohmann::json> GetFileHistories();
/**
* Migrates the schema of this settings from the version in the file to the latest version
*

View File

@ -91,6 +91,16 @@ public:
*/
void FlushAndRelease( JSON_SETTINGS* aSettings, bool aSave = true );
/**
* Reset all program settings to defaults.
*/
void ResetToDefaults();
/**
* Clear saved file history from all settings files.
*/
void ClearFileHistory();
/**
* Return a handle to the a given settings by type.
*

View File

@ -50,6 +50,8 @@ public:
void UpdateResetButton( int aPage );
WX_INFOBAR* GetInfoBar() { return m_infoBar; }
static PAGED_DIALOG* GetDialog( wxWindow* aWindow );
protected: