1 /* 2 * This program source code file is part of KiCad, a free EDA CAD application. 3 * 4 * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors. 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 2 9 * of the License, or (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, you may find one here: 18 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 19 * or you may search the http://www.gnu.org website for the version 2 license, 20 * or you may write to the Free Software Foundation, Inc., 21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA 22 */ 23 24 #ifndef DIALOG_FILTER_SELECTION_H 25 #define DIALOG_FILTER_SELECTION_H 26 27 #include <dialogs/dialog_filter_selection_base.h> 28 29 class PCB_BASE_FRAME; 30 31 class DIALOG_FILTER_SELECTION : public DIALOG_FILTER_SELECTION_BASE 32 { 33 public: 34 35 /** 36 * Struct that will be set with the result of the user choices in the dialog 37 */ 38 struct OPTIONS 39 { 40 wxCheckBoxState allItems = wxCHK_UNDETERMINED; 41 bool includeModules = true; 42 bool includeLockedModules = true; 43 bool includeTracks = true; 44 bool includeVias = true; 45 bool includeZones = true; 46 bool includeItemsOnTechLayers = true; 47 bool includeBoardOutlineLayer = true; 48 bool includePcbTexts = true; 49 }; 50 51 /** 52 * Create the filter selection dialog. 53 * 54 * @param[in] aParent is the parent window that called the dialog. 55 * @param[in,out] aOptions is the options to populate the dialog with and contains the 56 * changes made by the dialog on exit. 57 */ 58 DIALOG_FILTER_SELECTION( PCB_BASE_FRAME* aParent, OPTIONS& aOptions ); 59 ~DIALOG_FILTER_SELECTION()60 ~DIALOG_FILTER_SELECTION() 61 { 62 } 63 64 protected: 65 bool TransferDataFromWindow() override; 66 67 private: 68 void checkBoxClicked( wxCommandEvent& aEvent ) override; 69 void allItemsClicked( wxCommandEvent& aEvent ) override; 70 71 void setCheckboxStatesFromOptions( OPTIONS& aOptions ); 72 void forceCheckboxStates( bool aNewState ); 73 wxCheckBoxState GetSuggestedAllItemsState( void ); 74 75 ///< Reference to the options struct to fill. 76 OPTIONS& m_options; 77 }; 78 79 #endif // DIALOG_FILTER_SELECTION_H 80