00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "setup.h"
00023
00024 #include "main.h"
00025
00026 #include "gui/setup_audio.h"
00027 #include "gui/setup_colors.h"
00028 #include "gui/setup_joystick.h"
00029 #include "gui/setup_keyboard.h"
00030 #include "gui/setup_players.h"
00031 #include "gui/setup_video.h"
00032
00033 #include "gui/widgets/button.h"
00034 #include "gui/widgets/label.h"
00035 #include "gui/widgets/tabbedarea.h"
00036
00037 #include "utils/dtor.h"
00038 #include "utils/gettext.h"
00039
00040 extern Window *chatWindow;
00041 extern Window *statusWindow;
00042 extern Window *buyDialog;
00043 extern Window *sellDialog;
00044 extern Window *buySellDialog;
00045 extern Window *inventoryWindow;
00046 extern Window *emoteWindow;
00047 extern Window *npcTextDialog;
00048 extern Window *npcStringDialog;
00049 extern Window *skillDialog;
00050 extern Window *minimap;
00051 extern Window *equipmentWindow;
00052 extern Window *tradeWindow;
00053 extern Window *helpWindow;
00054 extern Window *debugWindow;
00055 extern Window *itemShortcutWindow;
00056 extern Window *emoteShortcutWindow;
00057 #ifdef TMWSERV_SUPPORT
00058 extern Window *magicDialog;
00059 extern Window *guildWindow;
00060 #else
00061 extern Window *storageWindow;
00062 #endif
00063
00064 Setup::Setup():
00065 Window(_("Setup"))
00066 {
00067 setCloseButton(true);
00068 int width = 340;
00069 int height = 340;
00070 setContentSize(width, height);
00071
00072 static const char *buttonNames[] = {
00073 N_("Apply"), N_("Cancel"), N_("Reset Windows"), 0
00074 };
00075 int x = width;
00076 for (const char **curBtn = buttonNames; *curBtn; ++curBtn)
00077 {
00078 Button *btn = new Button(gettext(*curBtn), *curBtn, this);
00079 x -= btn->getWidth() + 5;
00080 btn->setPosition(x, height - btn->getHeight() - 5);
00081 add(btn);
00082
00083
00084 if (!strcmp(*curBtn, "Reset Windows"))
00085 mResetWindows = btn;
00086 }
00087
00088 TabbedArea *panel = new TabbedArea;
00089 panel->setDimension(gcn::Rectangle(5, 5, width - 10, height - 40));
00090
00091 mTabs.push_back(new Setup_Video);
00092 mTabs.push_back(new Setup_Audio);
00093 mTabs.push_back(new Setup_Joystick);
00094 mTabs.push_back(new Setup_Keyboard);
00095 mTabs.push_back(new Setup_Colors);
00096 mTabs.push_back(new Setup_Players);
00097
00098 for (std::list<SetupTab*>::iterator i = mTabs.begin(), i_end = mTabs.end();
00099 i != i_end; ++i)
00100 {
00101 SetupTab *tab = *i;
00102 panel->addTab(tab->getName(), tab);
00103 }
00104
00105 add(panel);
00106
00107 Label *version = new Label(FULL_VERSION);
00108 version->setPosition(5, height - version->getHeight() - 5);
00109 add(version);
00110
00111 center();
00112
00113 setInGame(false);
00114 }
00115
00116 Setup::~Setup()
00117 {
00118 delete_all(mTabs);
00119 }
00120
00121 void Setup::action(const gcn::ActionEvent &event)
00122 {
00123 if (event.getId() == "Apply")
00124 {
00125 setVisible(false);
00126 for_each(mTabs.begin(), mTabs.end(), std::mem_fun(&SetupTab::apply));
00127 }
00128 else if (event.getId() == "Cancel")
00129 {
00130 setVisible(false);
00131 for_each(mTabs.begin(), mTabs.end(), std::mem_fun(&SetupTab::cancel));
00132 }
00133 else if (event.getId() == "Reset Windows")
00134 {
00135
00136
00137 if (!statusWindow)
00138 return;
00139
00140 chatWindow->resetToDefaultSize();
00141 statusWindow->resetToDefaultSize();
00142 buyDialog->resetToDefaultSize();
00143 sellDialog->resetToDefaultSize();
00144 #ifdef EATHENA_SUPPORT
00145 buySellDialog->resetToDefaultSize();
00146 #endif
00147 inventoryWindow->resetToDefaultSize();
00148 emoteWindow->resetToDefaultSize();
00149 npcTextDialog->resetToDefaultSize();
00150 npcStringDialog->resetToDefaultSize();
00151 skillDialog->resetToDefaultSize();
00152 minimap->resetToDefaultSize();
00153 equipmentWindow->resetToDefaultSize();
00154 tradeWindow->resetToDefaultSize();
00155 helpWindow->resetToDefaultSize();
00156 debugWindow->resetToDefaultSize();
00157 itemShortcutWindow->resetToDefaultSize();
00158 emoteShortcutWindow->resetToDefaultSize();
00159 #ifdef TMWSERV_SUPPORT
00160 magicDialog->resetToDefaultSize();
00161 guildWindow->resetToDefaultSize();
00162 #else
00163 storageWindow->resetToDefaultSize();
00164 #endif
00165 }
00166 }
00167
00168 void Setup::setInGame(bool inGame)
00169 {
00170 mResetWindows->setEnabled(inGame);
00171 }
00172
00173 Setup* setupWindow;