00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "gui/setup_joystick.h"
00023
00024 #include "gui/widgets/button.h"
00025 #include "gui/widgets/checkbox.h"
00026 #include "gui/widgets/label.h"
00027 #include "gui/widgets/layouthelper.h"
00028
00029 #include "configuration.h"
00030 #include "joystick.h"
00031
00032 #include "utils/gettext.h"
00033
00034 extern Joystick *joystick;
00035
00036 Setup_Joystick::Setup_Joystick():
00037 mCalibrateLabel(new Label(_("Press the button to start calibration"))),
00038 mCalibrateButton(new Button(_("Calibrate"), "calibrate", this)),
00039 mJoystickEnabled(new CheckBox(_("Enable joystick")))
00040 {
00041 setName(_("Joystick"));
00042
00043 mOriginalJoystickEnabled = !config.getValue("joystickEnabled", false);
00044 mJoystickEnabled->setSelected(mOriginalJoystickEnabled);
00045
00046 mJoystickEnabled->addActionListener(this);
00047
00048
00049 LayoutHelper h(this);
00050 ContainerPlacer place = h.getPlacer(0, 0);
00051
00052 place(0, 0, mJoystickEnabled);
00053 place(0, 1, mCalibrateLabel);
00054 place.getCell().matchColWidth(0, 0);
00055 place = h.getPlacer(0, 1);
00056 place(0, 0, mCalibrateButton);
00057
00058 setDimension(gcn::Rectangle(0, 0, 325, 75));
00059 }
00060
00061 void Setup_Joystick::action(const gcn::ActionEvent &event)
00062 {
00063 if (!joystick)
00064 {
00065 return;
00066 }
00067
00068 if (event.getSource() == mJoystickEnabled)
00069 {
00070 joystick->setEnabled(mJoystickEnabled->isSelected());
00071 }
00072 else
00073 {
00074 if (joystick->isCalibrating())
00075 {
00076 mCalibrateButton->setCaption(_("Calibrate"));
00077 mCalibrateLabel->setCaption
00078 (_("Press the button to start calibration"));
00079 joystick->finishCalibration();
00080 }
00081 else
00082 {
00083 mCalibrateButton->setCaption(_("Stop"));
00084 mCalibrateLabel->setCaption(_("Rotate the stick"));
00085 joystick->startCalibration();
00086 }
00087 }
00088 }
00089
00090 void Setup_Joystick::cancel()
00091 {
00092 if (joystick)
00093 {
00094 joystick->setEnabled(mOriginalJoystickEnabled);
00095 }
00096 mJoystickEnabled->setSelected(mOriginalJoystickEnabled);
00097 }
00098
00099 void Setup_Joystick::apply()
00100 {
00101 config.setValue("joystickEnabled",
00102 joystick ? joystick->isEnabled() : false);
00103 }
00104