b1e59a6d60
This allows displaying values in percents (or also currency units and subunits, for example) without changing the actually stored value.
119 lines
2.8 KiB
C++
119 lines
2.8 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: validate.h
|
|
// Purpose: wxWidgets validation sample
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 04/01/98
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "wx/app.h"
|
|
#include "wx/combobox.h"
|
|
#include "wx/dialog.h"
|
|
#include "wx/dynarray.h"
|
|
#include "wx/frame.h"
|
|
#include "wx/listbox.h"
|
|
#include "wx/string.h"
|
|
|
|
// Define a new application type
|
|
class MyApp : public wxApp
|
|
{
|
|
public:
|
|
bool OnInit() wxOVERRIDE;
|
|
};
|
|
|
|
// Define a new frame type
|
|
class MyFrame : public wxFrame
|
|
{
|
|
public:
|
|
MyFrame(wxFrame *frame, const wxString&title, int x, int y, int w, int h);
|
|
|
|
void OnQuit(wxCommandEvent& event);
|
|
void OnTestDialog(wxCommandEvent& event);
|
|
void OnToggleBell(wxCommandEvent& event);
|
|
|
|
private:
|
|
wxListBox *m_listbox;
|
|
bool m_silent;
|
|
|
|
wxDECLARE_EVENT_TABLE();
|
|
};
|
|
|
|
class MyDialog : public wxDialog
|
|
{
|
|
public:
|
|
MyDialog(wxWindow *parent, const wxString& title,
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& size = wxDefaultSize,
|
|
const long style = wxDEFAULT_DIALOG_STYLE);
|
|
|
|
bool TransferDataToWindow() wxOVERRIDE;
|
|
wxTextCtrl *m_text;
|
|
wxComboBox *m_combobox;
|
|
|
|
wxTextCtrl *m_numericTextInt;
|
|
wxTextCtrl *m_numericTextDouble;
|
|
};
|
|
|
|
class MyData
|
|
{
|
|
public:
|
|
MyData();
|
|
|
|
// These data members are designed for transfer to and from
|
|
// controls, via validators. For instance, a text control's
|
|
// transferred value is a string:
|
|
wxString m_string, m_string2;
|
|
|
|
// Listboxes may permit multiple selections, so their state
|
|
// is transferred to an integer-array class.
|
|
wxArrayInt m_listbox_choices;
|
|
|
|
// Comboboxes differ from listboxes--validators transfer
|
|
// the string entered in the combobox's text-edit field.
|
|
wxString m_combobox_choice;
|
|
|
|
// variables handled by wxNumericTextValidator
|
|
int m_intValue;
|
|
unsigned short m_smallIntValue;
|
|
double m_doubleValue;
|
|
float m_percentValue;
|
|
|
|
bool m_checkbox_state;
|
|
int m_radiobox_choice;
|
|
};
|
|
|
|
class MyComboBoxValidator : public wxValidator
|
|
{
|
|
public:
|
|
MyComboBoxValidator(wxString* var) { m_var=var; }
|
|
|
|
virtual bool Validate(wxWindow* parent) wxOVERRIDE;
|
|
virtual wxObject* Clone() const wxOVERRIDE { return new MyComboBoxValidator(*this); }
|
|
|
|
// Called to transfer data to the window
|
|
virtual bool TransferToWindow() wxOVERRIDE;
|
|
|
|
// Called to transfer data from the window
|
|
virtual bool TransferFromWindow() wxOVERRIDE;
|
|
|
|
protected:
|
|
wxString* m_var;
|
|
};
|
|
|
|
enum
|
|
{
|
|
VALIDATE_DIALOG_ID = wxID_HIGHEST,
|
|
|
|
VALIDATE_TEST_DIALOG,
|
|
VALIDATE_TOGGLE_BELL,
|
|
|
|
VALIDATE_TEXT,
|
|
VALIDATE_TEXT2,
|
|
VALIDATE_LIST,
|
|
VALIDATE_CHECK,
|
|
VALIDATE_COMBO,
|
|
VALIDATE_RADIO
|
|
};
|