mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
Moved WiimoteNew into Dolphin and eliminated the old wiimote plugin. Removed wiimote plugin support. Moved input dialog related InputUICommon stuff into DolphinWX. Removed now unused InputCommon files. UDPWiimote stuff is temporarily disabled until it is reorganized so Core won't depend on wx. Real wiimotes are now initialized on first need(wiimote diag open or game start) and left initialized until Dolphin exit.(maybe this will work better for Linux/OS X) (scons probably needs some fixes)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6270 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@ -1,257 +0,0 @@
|
||||
// Copyright (C) 2010 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _CONFIGBOX_H_
|
||||
#define _CONFIGBOX_H_
|
||||
|
||||
#define SLIDER_TICK_COUNT 100
|
||||
#define DETECT_WAIT_TIME 1500
|
||||
#define PREVIEW_UPDATE_TIME 25
|
||||
|
||||
// might have to change this setup for wiimote
|
||||
#define PROFILES_PATH "Profiles/"
|
||||
|
||||
#include <wx/wx.h>
|
||||
#include <wx/listbox.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/combobox.h>
|
||||
#include <wx/checkbox.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/spinctrl.h>
|
||||
|
||||
#include <sstream>
|
||||
#include <vector>
|
||||
|
||||
#include "ControllerInterface/ControllerInterface.h"
|
||||
#include "ControllerEmu.h"
|
||||
#include "InputConfig.h"
|
||||
#include "FileSearch.h"
|
||||
#include "UDPWrapper.h"
|
||||
|
||||
class PadSetting
|
||||
{
|
||||
protected:
|
||||
PadSetting(wxControl* const _control) : wxcontrol(_control) { wxcontrol->SetClientData(this); }
|
||||
|
||||
public:
|
||||
virtual void UpdateGUI() = 0;
|
||||
virtual void UpdateValue() = 0;
|
||||
|
||||
virtual ~PadSetting() {}
|
||||
|
||||
wxControl* const wxcontrol;
|
||||
};
|
||||
|
||||
class PadSettingExtension : public PadSetting
|
||||
{
|
||||
public:
|
||||
PadSettingExtension(wxWindow* const parent, ControllerEmu::Extension* const ext);
|
||||
void UpdateGUI();
|
||||
void UpdateValue();
|
||||
|
||||
ControllerEmu::Extension* const extension;
|
||||
};
|
||||
|
||||
class PadSettingSpin : public PadSetting
|
||||
{
|
||||
public:
|
||||
PadSettingSpin(wxWindow* const parent, ControllerEmu::ControlGroup::Setting* const setting)
|
||||
: PadSetting(new wxSpinCtrl(parent, -1, wxEmptyString, wxDefaultPosition
|
||||
, wxSize( 54, -1 ), 0, setting->low, setting->high, setting->value * 100))
|
||||
, value(setting->value) {}
|
||||
|
||||
void UpdateGUI();
|
||||
void UpdateValue();
|
||||
|
||||
ControlState& value;
|
||||
};
|
||||
|
||||
class PadSettingCheckBox : public PadSetting
|
||||
{
|
||||
public:
|
||||
PadSettingCheckBox(wxWindow* const parent, ControlState& _value, const char* const label);
|
||||
void UpdateGUI();
|
||||
void UpdateValue();
|
||||
|
||||
ControlState& value;
|
||||
};
|
||||
|
||||
class GamepadPage;
|
||||
|
||||
class ControlDialog : public wxDialog
|
||||
{
|
||||
public:
|
||||
ControlDialog(GamepadPage* const parent, InputPlugin& plugin, ControllerInterface::ControlReference* const ref);
|
||||
|
||||
wxStaticBoxSizer* CreateControlChooser(wxWindow* const parent, wxWindow* const eventsink );
|
||||
|
||||
void DetectControl(wxCommandEvent& event);
|
||||
void ClearControl(wxCommandEvent& event);
|
||||
void SetControl(wxCommandEvent& event);
|
||||
void SetDevice(wxCommandEvent& event);
|
||||
|
||||
void UpdateGUI();
|
||||
void UpdateListContents();
|
||||
void SelectControl(const std::string& name);
|
||||
|
||||
void SetSelectedControl(wxCommandEvent& event);
|
||||
void AppendControl(wxCommandEvent& event);
|
||||
|
||||
ControllerInterface::ControlReference* const control_reference;
|
||||
InputPlugin& m_plugin;
|
||||
wxComboBox* device_cbox;
|
||||
|
||||
wxTextCtrl* textctrl;
|
||||
wxListBox* control_lbox;
|
||||
wxSlider* range_slider;
|
||||
|
||||
private:
|
||||
GamepadPage* const m_parent;
|
||||
wxStaticText* m_bound_label;
|
||||
ControllerInterface::DeviceQualifier m_devq;
|
||||
};
|
||||
|
||||
class ExtensionButton : public wxButton
|
||||
{
|
||||
public:
|
||||
ExtensionButton( wxWindow* const parent, ControllerEmu::Extension* const ext )
|
||||
: wxButton( parent, -1, wxT("Configure"), wxDefaultPosition )
|
||||
, extension(ext) {}
|
||||
|
||||
ControllerEmu::Extension* const extension;
|
||||
};
|
||||
|
||||
class ControlButton : public wxButton
|
||||
{
|
||||
public:
|
||||
ControlButton( wxWindow* const parent, ControllerInterface::ControlReference* const _ref, const unsigned int width, const std::string& label = "" );
|
||||
|
||||
ControllerInterface::ControlReference* const control_reference;
|
||||
};
|
||||
|
||||
|
||||
class UDPConfigButton : public wxButton
|
||||
{
|
||||
public:
|
||||
UDPWrapper* const wrapper;
|
||||
UDPConfigButton( wxWindow* const parent, UDPWrapper * udp)
|
||||
: wxButton( parent, -1, wxT("Configure"), wxDefaultPosition )
|
||||
, wrapper(udp)
|
||||
{}
|
||||
};
|
||||
|
||||
class ControlGroupBox : public wxStaticBoxSizer
|
||||
{
|
||||
public:
|
||||
ControlGroupBox( ControllerEmu::ControlGroup* const group, wxWindow* const parent, wxWindow* const eventsink );
|
||||
~ControlGroupBox();
|
||||
|
||||
std::vector<PadSetting*> options;
|
||||
|
||||
ControllerEmu::ControlGroup* const control_group;
|
||||
wxStaticBitmap* static_bitmap;
|
||||
std::vector<ControlButton*> control_buttons;
|
||||
};
|
||||
|
||||
class ControlGroupsSizer : public wxBoxSizer
|
||||
{
|
||||
public:
|
||||
ControlGroupsSizer( ControllerEmu* const controller, wxWindow* const parent, wxWindow* const eventsink, std::vector<ControlGroupBox*>* const groups = NULL );
|
||||
|
||||
|
||||
};
|
||||
|
||||
class InputConfigDialog;
|
||||
|
||||
class GamepadPage : public wxNotebookPage
|
||||
{
|
||||
friend class InputConfigDialog;
|
||||
friend class ControlDialog;
|
||||
|
||||
public:
|
||||
GamepadPage( wxWindow* parent, InputPlugin& plugin, const unsigned int pad_num, InputConfigDialog* const config_dialog );
|
||||
|
||||
void UpdateGUI();
|
||||
|
||||
void RefreshDevices( wxCommandEvent& event );
|
||||
|
||||
void LoadProfile( wxCommandEvent& event );
|
||||
void SaveProfile( wxCommandEvent& event );
|
||||
void DeleteProfile( wxCommandEvent& event );
|
||||
|
||||
void ConfigControl( wxCommandEvent& event );
|
||||
void ClearControl( wxCommandEvent& event );
|
||||
void DetectControl( wxCommandEvent& event );
|
||||
|
||||
void ConfigExtension( wxCommandEvent& event );
|
||||
|
||||
void ConfigUDPWii( wxCommandEvent& event );
|
||||
|
||||
void SetDevice( wxCommandEvent& event );
|
||||
|
||||
void ClearAll( wxCommandEvent& event );
|
||||
void LoadDefaults( wxCommandEvent& event );
|
||||
|
||||
void AdjustControlOption( wxCommandEvent& event );
|
||||
void AdjustSetting( wxCommandEvent& event );
|
||||
|
||||
void GetProfilePath(std::string& path);
|
||||
|
||||
wxComboBox* profile_cbox;
|
||||
wxComboBox* device_cbox;
|
||||
|
||||
std::vector<ControlGroupBox*> control_groups;
|
||||
|
||||
protected:
|
||||
|
||||
ControllerEmu* const controller;
|
||||
|
||||
private:
|
||||
|
||||
ControlDialog* m_control_dialog;
|
||||
InputConfigDialog* const m_config_dialog;
|
||||
InputPlugin &m_plugin;
|
||||
};
|
||||
|
||||
class InputConfigDialog : public wxDialog
|
||||
{
|
||||
public:
|
||||
InputConfigDialog( wxWindow* const parent, InputPlugin& plugin, const std::string& name, const int tab_num = 0);
|
||||
//~InputConfigDialog();
|
||||
|
||||
bool Destroy();
|
||||
|
||||
void ClickSave( wxCommandEvent& event );
|
||||
|
||||
void UpdateDeviceComboBox();
|
||||
void UpdateProfileComboBox();
|
||||
|
||||
void UpdateControlReferences();
|
||||
void UpdateBitmaps(wxTimerEvent&);
|
||||
|
||||
private:
|
||||
|
||||
wxNotebook* m_pad_notebook;
|
||||
std::vector<GamepadPage*> m_padpages;
|
||||
InputPlugin& m_plugin;
|
||||
wxTimer* m_update_timer;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,349 +0,0 @@
|
||||
// Copyright (C) 2010 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "ConfigDiag.h"
|
||||
|
||||
void InputConfigDialog::UpdateBitmaps(wxTimerEvent& WXUNUSED(event))
|
||||
{
|
||||
wxFont small_font(6, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD);
|
||||
|
||||
m_plugin.controller_interface.UpdateInput();
|
||||
// don't want game thread updating input when we are using it here
|
||||
if (false == m_plugin.controller_interface.update_lock.TryEnter())
|
||||
return;
|
||||
|
||||
GamepadPage* const current_page = (GamepadPage*)m_pad_notebook->GetPage(m_pad_notebook->GetSelection());
|
||||
|
||||
std::vector< ControlGroupBox* >::iterator
|
||||
g = current_page->control_groups.begin(),
|
||||
ge = current_page->control_groups.end();
|
||||
for ( ; g != ge; ++g )
|
||||
{
|
||||
// if this control group has a bitmap
|
||||
if ( (*g)->static_bitmap )
|
||||
{
|
||||
wxMemoryDC dc;
|
||||
wxBitmap bitmap((*g)->static_bitmap->GetBitmap());
|
||||
dc.SelectObject(bitmap);
|
||||
dc.Clear();
|
||||
|
||||
dc.SetFont(small_font);
|
||||
dc.SetTextForeground(0xC0C0C0);
|
||||
|
||||
// label for sticks and stuff
|
||||
if (64 == bitmap.GetHeight())
|
||||
dc.DrawText(wxString::FromAscii((*g)->control_group->name).Upper(), 4, 2);
|
||||
|
||||
switch ( (*g)->control_group->type )
|
||||
{
|
||||
case GROUP_TYPE_TILT :
|
||||
case GROUP_TYPE_STICK :
|
||||
case GROUP_TYPE_CURSOR :
|
||||
{
|
||||
// this is starting to be a mess combining all these in one case
|
||||
|
||||
float x = 0, y = 0, z = 0;
|
||||
float xx, yy;
|
||||
|
||||
switch ((*g)->control_group->type)
|
||||
{
|
||||
case GROUP_TYPE_STICK :
|
||||
((ControllerEmu::AnalogStick*)(*g)->control_group)->GetState( &x, &y, 32.0, 32-1.5 );
|
||||
break;
|
||||
case GROUP_TYPE_TILT :
|
||||
((ControllerEmu::Tilt*)(*g)->control_group)->GetState( &x, &y, 32.0, 32-1.5 );
|
||||
break;
|
||||
case GROUP_TYPE_CURSOR :
|
||||
((ControllerEmu::Cursor*)(*g)->control_group)->GetState( &x, &y, &z );
|
||||
x *= (32-1.5); x+= 32;
|
||||
y *= (32-1.5); y+= 32;
|
||||
break;
|
||||
}
|
||||
|
||||
xx = (*g)->control_group->controls[3]->control_ref->State();
|
||||
xx -= (*g)->control_group->controls[2]->control_ref->State();
|
||||
yy = (*g)->control_group->controls[1]->control_ref->State();
|
||||
yy -= (*g)->control_group->controls[0]->control_ref->State();
|
||||
xx *= 32 - 1; xx += 32;
|
||||
yy *= 32 - 1; yy += 32;
|
||||
|
||||
// draw the shit
|
||||
|
||||
// ir cursor forward movement
|
||||
if (GROUP_TYPE_CURSOR == (*g)->control_group->type)
|
||||
{
|
||||
if (z)
|
||||
{
|
||||
dc.SetPen(*wxRED_PEN);
|
||||
dc.SetBrush(*wxRED_BRUSH);
|
||||
}
|
||||
else
|
||||
{
|
||||
dc.SetPen(*wxGREY_PEN);
|
||||
dc.SetBrush(*wxGREY_BRUSH);
|
||||
}
|
||||
dc.DrawRectangle( 0, 31 - z*31, 64, 2);
|
||||
}
|
||||
|
||||
// circle for visual aid for diagonal adjustment
|
||||
dc.SetPen(*wxLIGHT_GREY_PEN);
|
||||
dc.SetBrush(*wxWHITE_BRUSH);
|
||||
if ( GROUP_TYPE_STICK == (*g)->control_group->type )
|
||||
{
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
dc.DrawCircle( 32, 32, 32);
|
||||
}
|
||||
else
|
||||
dc.DrawRectangle( 16, 16, 32, 32 );
|
||||
|
||||
if ( GROUP_TYPE_CURSOR != (*g)->control_group->type )
|
||||
{
|
||||
// deadzone circle
|
||||
dc.SetBrush(*wxLIGHT_GREY_BRUSH);
|
||||
dc.DrawCircle( 32, 32, ((*g)->control_group)->settings[0]->value * 32 );
|
||||
}
|
||||
|
||||
// raw dot
|
||||
dc.SetPen(*wxGREY_PEN);
|
||||
dc.SetBrush(*wxGREY_BRUSH);
|
||||
// i like the dot better than the cross i think
|
||||
dc.DrawRectangle( xx - 2, yy - 2, 4, 4 );
|
||||
//dc.DrawRectangle( xx-1, 64-yy-4, 2, 8 );
|
||||
//dc.DrawRectangle( xx-4, 64-yy-1, 8, 2 );
|
||||
|
||||
// adjusted dot
|
||||
if (x!=32 || y!=32)
|
||||
{
|
||||
dc.SetPen(*wxRED_PEN);
|
||||
dc.SetBrush(*wxRED_BRUSH);
|
||||
dc.DrawRectangle( x-2, 64-y-2, 4, 4 );
|
||||
// i like the dot better than the cross i think
|
||||
//dc.DrawRectangle( x-1, 64-y-4, 2, 8 );
|
||||
//dc.DrawRectangle( x-4, 64-y-1, 8, 2 );
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
case GROUP_TYPE_FORCE :
|
||||
{
|
||||
float raw_dot[3];
|
||||
float adj_dot[3];
|
||||
const float deadzone = 32 * ((*g)->control_group)->settings[0]->value;
|
||||
|
||||
// adjusted
|
||||
((ControllerEmu::Force*)(*g)->control_group)->GetState( adj_dot, 32.0, 32-1.5 );
|
||||
|
||||
// raw
|
||||
for ( unsigned int i=0; i<3; ++i )
|
||||
{
|
||||
raw_dot[i] = (*g)->control_group->controls[i*2 + 1]->control_ref->State()
|
||||
- (*g)->control_group->controls[i*2]->control_ref->State();
|
||||
raw_dot[i] *= 32 - 1; raw_dot[i] += 32;
|
||||
}
|
||||
|
||||
// deadzone rect for forward/backward visual
|
||||
dc.SetBrush(*wxLIGHT_GREY_BRUSH);
|
||||
dc.SetPen(*wxLIGHT_GREY_PEN);
|
||||
dc.DrawRectangle( 0, 32 - deadzone, 64, deadzone * 2 );
|
||||
|
||||
// raw forward/background line
|
||||
dc.SetPen(*wxGREY_PEN);
|
||||
dc.SetBrush(*wxGREY_BRUSH);
|
||||
dc.DrawRectangle( 0, raw_dot[2] - 1, 64, 2 );
|
||||
|
||||
// adjusted forward/background line
|
||||
if ( adj_dot[2]!=32 )
|
||||
{
|
||||
dc.SetPen(*wxRED_PEN);
|
||||
dc.SetBrush(*wxRED_BRUSH);
|
||||
dc.DrawRectangle( 0, adj_dot[2] - 1, 64, 2 );
|
||||
}
|
||||
|
||||
// a rectangle, for looks i guess
|
||||
dc.SetBrush(*wxWHITE_BRUSH);
|
||||
dc.SetPen(*wxLIGHT_GREY_PEN);
|
||||
dc.DrawRectangle( 16, 16, 32, 32 );
|
||||
|
||||
// deadzone square
|
||||
dc.SetBrush(*wxLIGHT_GREY_BRUSH);
|
||||
dc.DrawRectangle( 32 - deadzone, 32 - deadzone, deadzone * 2, deadzone * 2 );
|
||||
|
||||
// raw dot
|
||||
dc.SetPen(*wxGREY_PEN);
|
||||
dc.SetBrush(*wxGREY_BRUSH);
|
||||
dc.DrawRectangle( raw_dot[1] - 2, raw_dot[0] - 2, 4, 4 );
|
||||
|
||||
// adjusted dot
|
||||
if ( adj_dot[1]!=32 || adj_dot[0]!=32 )
|
||||
{
|
||||
dc.SetPen(*wxRED_PEN);
|
||||
dc.SetBrush(*wxRED_BRUSH);
|
||||
dc.DrawRectangle( adj_dot[1]-2, adj_dot[0]-2, 4, 4 );
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
case GROUP_TYPE_BUTTONS :
|
||||
{
|
||||
const unsigned int button_count = ((unsigned int)(*g)->control_group->controls.size());
|
||||
|
||||
// draw the shit
|
||||
dc.SetPen(*wxGREY_PEN);
|
||||
|
||||
unsigned int * const bitmasks = new unsigned int[ button_count ];
|
||||
for (unsigned int n = 0; n<button_count; ++n)
|
||||
bitmasks[n] = (1 << n);
|
||||
|
||||
unsigned int buttons = 0;
|
||||
((ControllerEmu::Buttons*)(*g)->control_group)->GetState( &buttons, bitmasks );
|
||||
|
||||
for (unsigned int n = 0; n<button_count; ++n)
|
||||
{
|
||||
if ( buttons & bitmasks[n] )
|
||||
dc.SetBrush( *wxRED_BRUSH );
|
||||
else
|
||||
{
|
||||
unsigned char amt = 255 - (*g)->control_group->controls[n]->control_ref->State() * 128;
|
||||
dc.SetBrush(wxBrush(wxColor(amt, amt, amt)));
|
||||
}
|
||||
dc.DrawRectangle(n * 12, 0, 14, 12);
|
||||
|
||||
// text
|
||||
const char* const name = (*g)->control_group->controls[n]->name;
|
||||
// bit of hax so ZL, ZR show up as L, R
|
||||
dc.DrawText(wxString::FromAscii((name[1] && name[1] < 'a') ? name[1] : name[0]), n*12 + 2, 1);
|
||||
}
|
||||
|
||||
delete[] bitmasks;
|
||||
|
||||
}
|
||||
break;
|
||||
case GROUP_TYPE_TRIGGERS :
|
||||
{
|
||||
const unsigned int trigger_count = ((unsigned int)((*g)->control_group->controls.size()));
|
||||
|
||||
// draw the shit
|
||||
dc.SetPen(*wxGREY_PEN);
|
||||
ControlState deadzone = (*g)->control_group->settings[0]->value;
|
||||
|
||||
unsigned int* const trigs = new unsigned int[trigger_count];
|
||||
((ControllerEmu::Triggers*)(*g)->control_group)->GetState( trigs, 64 );
|
||||
|
||||
for ( unsigned int n = 0; n < trigger_count; ++n )
|
||||
{
|
||||
ControlState trig_r = (*g)->control_group->controls[n]->control_ref->State();
|
||||
|
||||
// outline
|
||||
dc.SetPen(*wxGREY_PEN);
|
||||
dc.SetBrush(*wxWHITE_BRUSH);
|
||||
dc.DrawRectangle(0, n*12, 64, 14);
|
||||
|
||||
// raw
|
||||
dc.SetBrush(*wxGREY_BRUSH);
|
||||
dc.DrawRectangle(0, n*12, trig_r*64, 14);
|
||||
|
||||
// deadzone affected
|
||||
dc.SetBrush(*wxRED_BRUSH);
|
||||
dc.DrawRectangle(0, n*12, trigs[n], 14);
|
||||
|
||||
// text
|
||||
dc.DrawText(wxString::FromAscii((*g)->control_group->controls[n]->name), 3, n*12 + 1);
|
||||
}
|
||||
|
||||
delete[] trigs;
|
||||
|
||||
// deadzone box
|
||||
dc.SetPen(*wxLIGHT_GREY_PEN);
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
dc.DrawRectangle(0, 0, deadzone*64, trigger_count*14);
|
||||
|
||||
}
|
||||
break;
|
||||
case GROUP_TYPE_MIXED_TRIGGERS :
|
||||
{
|
||||
const unsigned int trigger_count = ((unsigned int)((*g)->control_group->controls.size() / 2));
|
||||
|
||||
// draw the shit
|
||||
dc.SetPen(*wxGREY_PEN);
|
||||
ControlState thresh = (*g)->control_group->settings[0]->value;
|
||||
|
||||
for ( unsigned int n = 0; n < trigger_count; ++n )
|
||||
{
|
||||
dc.SetBrush(*wxRED_BRUSH);
|
||||
ControlState trig_d = (*g)->control_group->controls[n]->control_ref->State();
|
||||
|
||||
ControlState trig_a = trig_d > thresh ? 1
|
||||
: (*g)->control_group->controls[n+trigger_count]->control_ref->State();
|
||||
|
||||
dc.DrawRectangle(0, n*12, 64+20, 14);
|
||||
if ( trig_d <= thresh )
|
||||
dc.SetBrush(*wxWHITE_BRUSH);
|
||||
dc.DrawRectangle(trig_a*64, n*12, 64+20, 14);
|
||||
dc.DrawRectangle(64, n*12, 32, 14);
|
||||
|
||||
// text
|
||||
dc.DrawText(wxString::FromAscii((*g)->control_group->controls[n+trigger_count]->name), 3, n*12 + 1);
|
||||
dc.DrawText(wxString::FromAscii((*g)->control_group->controls[n]->name[0]), 64 + 3, n*12 + 1);
|
||||
}
|
||||
|
||||
// threshold box
|
||||
dc.SetPen(*wxLIGHT_GREY_PEN);
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
dc.DrawRectangle(thresh*64, 0, 128, trigger_count*14);
|
||||
|
||||
}
|
||||
break;
|
||||
case GROUP_TYPE_SLIDER:
|
||||
{
|
||||
const ControlState deadzone = (*g)->control_group->settings[0]->value;
|
||||
|
||||
ControlState state = (*g)->control_group->controls[1]->control_ref->State() - (*g)->control_group->controls[0]->control_ref->State();
|
||||
dc.SetPen(*wxGREY_PEN);
|
||||
dc.SetBrush(*wxGREY_BRUSH);
|
||||
dc.DrawRectangle(31 + state * 30, 0, 2, 14);
|
||||
|
||||
((ControllerEmu::Slider*)(*g)->control_group)->GetState(&state, 1);
|
||||
if (state)
|
||||
{
|
||||
dc.SetPen(*wxRED_PEN);
|
||||
dc.SetBrush(*wxRED_BRUSH);
|
||||
dc.DrawRectangle(31 + state * 30, 0, 2, 14);
|
||||
}
|
||||
|
||||
// deadzone box
|
||||
dc.SetPen(*wxLIGHT_GREY_PEN);
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
dc.DrawRectangle(32 - deadzone * 32, 0, deadzone * 64, 14);
|
||||
}
|
||||
break;
|
||||
default :
|
||||
break;
|
||||
}
|
||||
|
||||
// box outline
|
||||
// Windows XP color
|
||||
dc.SetPen(wxPen(_T("#7f9db9")));
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
dc.DrawRectangle(0, 0, bitmap.GetWidth(), bitmap.GetHeight());
|
||||
|
||||
dc.SelectObject(wxNullBitmap);
|
||||
(*g)->static_bitmap->SetBitmap(bitmap);
|
||||
}
|
||||
}
|
||||
|
||||
m_plugin.controller_interface.update_lock.Leave();
|
||||
}
|
@ -6,8 +6,6 @@ if not env['HAVE_WX']:
|
||||
Return()
|
||||
|
||||
files = [
|
||||
'ConfigDiag.cpp',
|
||||
'ConfigDiagBitmaps.cpp',
|
||||
'WXInputBase.cpp',
|
||||
]
|
||||
|
||||
|
Reference in New Issue
Block a user