1 /* 2 Copyright (C) 2010-2014 Kristian Duske 3 4 This file is part of TrenchBroom. 5 6 TrenchBroom is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 TrenchBroom 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 TrenchBroom. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef TrenchBroom_PreferencePane 21 #define TrenchBroom_PreferencePane 22 23 #include <wx/panel.h> 24 #include <wx/slider.h> 25 26 namespace TrenchBroom { 27 namespace View { 28 class PreferencePane : public wxPanel { 29 public: 30 PreferencePane(wxWindow* parent); 31 virtual ~PreferencePane(); 32 33 bool canResetToDefaults(); 34 void resetToDefaults(); 35 void updateControls(); 36 bool validate(); 37 protected: 38 template <typename T> bindSliderEvents(wxSlider * slider,void (T::* function)(wxScrollEvent &),T * handler)39 void bindSliderEvents(wxSlider* slider, void (T::*function)(wxScrollEvent&), T* handler) { 40 slider->Bind(wxEVT_SCROLL_TOP, function, handler); 41 slider->Bind(wxEVT_SCROLL_BOTTOM, function, handler); 42 slider->Bind(wxEVT_SCROLL_LINEUP, function, handler); 43 slider->Bind(wxEVT_SCROLL_LINEDOWN, function, handler); 44 slider->Bind(wxEVT_SCROLL_PAGEUP, function, handler); 45 slider->Bind(wxEVT_SCROLL_PAGEDOWN, function, handler); 46 slider->Bind(wxEVT_SCROLL_THUMBTRACK, function, handler); 47 } 48 private: 49 virtual bool doCanResetToDefaults() = 0; 50 virtual void doResetToDefaults() = 0; 51 virtual void doUpdateControls() = 0; 52 virtual bool doValidate() = 0; 53 }; 54 } 55 } 56 57 #endif /* defined(TrenchBroom_PreferencePane) */ 58