1 /*
2  *  The ManaPlus Client
3  *  Copyright (C) 2009  The Mana World Development Team
4  *  Copyright (C) 2011-2019  The ManaPlus Developers
5  *  Copyright (C) 2009-2021  Andrei Karas
6  *
7  *  This file is part of The ManaPlus Client.
8  *
9  *  This program is free software; you can redistribute it and/or modify
10  *  it under the terms of the GNU General Public License as published by
11  *  the Free Software Foundation; either version 2 of the License, or
12  *  any later version.
13  *
14  *  This program is distributed in the hope that it will be useful,
15  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  *  GNU General Public License for more details.
18  *
19  *  You should have received a copy of the GNU General Public License
20  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
21  */
22 
23 #ifndef GUI_WIDGETS_TABS_SETUP_THEME_H
24 #define GUI_WIDGETS_TABS_SETUP_THEME_H
25 
26 #include "gui/widgets/tabs/setuptab.h"
27 
28 class Button;
29 class DropDown;
30 class FontsModel;
31 class FontSizeChoiceListModel;
32 class Label;
33 class LangListModel;
34 class ThemesModel;
35 
36 class Setup_Theme final : public SetupTab
37 {
38     public:
39         explicit Setup_Theme(const Widget2 *const widget);
40 
41         A_DELETE_COPY(Setup_Theme)
42 
43         ~Setup_Theme() override final;
44 
45         void apply() override final;
46 
47         void cancel() override final;
48 
49         void action(const ActionEvent &event) override final;
50 
51         void updateInfo();
52 
53     private:
54         Label *mThemeLabel;
55         ThemesModel *mThemesModel A_NONNULLPOINTER;
56         DropDown *mThemeDropDown;
57         std::string mTheme;
58         ThemeInfo *mInfo;
59 
60         FontsModel *mFontsModel A_NONNULLPOINTER;
61         Label *mFontLabel A_NONNULLPOINTER;
62         DropDown *mFontDropDown A_NONNULLPOINTER;
63         std::string mFont;
64 
65         LangListModel *mLangListModel A_NONNULLPOINTER;
66 
67         Label *mLangLabel A_NONNULLPOINTER;
68         DropDown *mLangDropDown A_NONNULLPOINTER;
69         std::string mLang;
70 
71         Label *mBoldFontLabel A_NONNULLPOINTER;
72         DropDown *mBoldFontDropDown A_NONNULLPOINTER;
73         std::string mBoldFont;
74 
75         Label *mParticleFontLabel A_NONNULLPOINTER;
76         DropDown *mParticleFontDropDown A_NONNULLPOINTER;
77         std::string mParticleFont;
78 
79         Label *mHelpFontLabel A_NONNULLPOINTER;
80         DropDown *mHelpFontDropDown A_NONNULLPOINTER;
81         std::string mHelpFont;
82 
83         Label *mSecureFontLabel A_NONNULLPOINTER;
84         DropDown *mSecureFontDropDown A_NONNULLPOINTER;
85         std::string mSecureFont;
86 
87         Label *mNpcFontLabel A_NONNULLPOINTER;
88         DropDown *mNpcFontDropDown A_NONNULLPOINTER;
89         std::string mNpcFont;
90 
91         Label *mJapanFontLabel A_NONNULLPOINTER;
92         DropDown *mJapanFontDropDown A_NONNULLPOINTER;
93         std::string mJapanFont;
94 
95         Label *mChinaFontLabel A_NONNULLPOINTER;
96         DropDown *mChinaFontDropDown A_NONNULLPOINTER;
97         std::string mChinaFont;
98 
99         FontSizeChoiceListModel *mFontSizeListModel A_NONNULLPOINTER;
100         Label *mFontSizeLabel;
101         int mFontSize;
102         DropDown *mFontSizeDropDown;
103 
104         FontSizeChoiceListModel *mNpcFontSizeListModel A_NONNULLPOINTER;
105         Label *mNpcFontSizeLabel;
106         int mNpcFontSize;
107         DropDown *mNpcFontSizeDropDown A_NONNULLPOINTER;
108 
109         Button *mInfoButton A_NONNULLPOINTER;
110         std::string mThemeInfo;
111 };
112 
113 #endif  // GUI_WIDGETS_TABS_SETUP_THEME_H
114