Newer
Older
/***********************************************************************
* FXRuby -- the Ruby language bindings for the FOX GUI toolkit.
* Copyright (c) 2001-2009 by Lyle Johnson. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* For further information please contact the author by e-mail
* at "lyle@lylejohnson.name".
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
***********************************************************************/
/// Input dialog options
enum {
INPUTDIALOG_STRING = 0, /// Ask for a string
INPUTDIALOG_INTEGER = 0x01000000, /// Ask for an integer number
INPUTDIALOG_REAL = 0x02000000, /// Ask for a real number
INPUTDIALOG_PASSWORD = 0x04000000 /// Do not reveal key-in
};
class FXTextField;
/**
* An Input Dialog is a simple dialog which is used
* to obtain a text string, integer, or real number from the user.
* A password mode allows the key-in to remain hidden.
*/
class FXInputDialog : public FXDialogBox {
protected:
FXTextField *input; // Text field widget
FXdouble limlo; // Lower limit
FXdouble limhi; // Upper limit
protected:
FXInputDialog(){}
private:
FXInputDialog(const FXInputDialog&);
public:
long onCmdAccept(FXObject*,FXSelector,void* PTR_IGNORE);
public:
%extend {
/// Construct input dialog box with given caption, icon, and prompt text
FXInputDialog(FXWindow* owner,const FXString& caption,const FXString& label,FXIcon* icon=NULL,FXuint opts=INPUTDIALOG_STRING,FXint x=0,FXint y=0,FXint w=0,FXint h=0){
return new FXRbInputDialog(owner,caption,label,icon,opts,x,y,w,h);
}
/// Construct free floating input dialog box with given caption, icon, and prompt text
FXInputDialog(FXApp* app,const FXString& caption,const FXString& label,FXIcon* icon=NULL,FXuint opts=INPUTDIALOG_STRING,FXint x=0,FXint y=0,FXint w=0,FXint h=0){
return new FXRbInputDialog(app,caption,label,icon,opts,x,y,w,h);
}
}
/// Get input string
FXString getText() const;
/// Set input string
void setText(const FXString& text);
/// Change number of visible columns of text
void setNumColumns(FXint num);
/// Return number of visible columns of text
FXint getNumColumns() const;
/// Change limits
void setLimits(FXdouble lo,FXdouble hi);
%extend {
// Return limits
VALUE getLimits() {
FXdouble lo, hi;
self->getLimits(lo, hi);
VALUE result = rb_ary_new();
rb_ary_push(result, rb_float_new(lo));
rb_ary_push(result, rb_float_new(hi));
return result;
}
}
/**
* Prompt for a string, start with the initial value.
* Return TRUE if the new value is accepted, and false otherwise.
*/
%extend {
static VALUE getString(const FXString& initial,FXWindow* owner,const FXString& caption,const FXString& label,FXIcon* icon=NULL){
FXString result(initial);
if(FXInputDialog::getString(result,owner,caption,label,icon)){
return to_ruby(result);
}
else{
return Qnil;
}
}
/**
* Prompt for a string, in free floating window.
*/
static VALUE getString(const FXString& initial,FXApp* app,const FXString& caption,const FXString& label,FXIcon* icon=NULL){
FXString result(initial);
if(FXInputDialog::getString(result,app,caption,label,icon)){
return to_ruby(result);
}
else{
return Qnil;
}
}
}
/**
* Prompt for an integer number, start with the given initial value.
* Return TRUE if the new value is accepted, and false otherwise.
* The input is constrained between lo and hi.
*/
%extend {
static VALUE getInteger(FXint initial,FXWindow* owner,const FXString& caption,const FXString& label,FXIcon* icon=NULL,FXint lo=-2147483647,FXint hi=2147483647){
FXint result=initial;
if(FXInputDialog::getInteger(result,owner,caption,label,icon,lo,hi)){
return to_ruby(result);
}
else{
return Qnil;
}
}
static VALUE getInteger(FXint initial,FXApp* app,const FXString& caption,const FXString& label,FXIcon* icon=NULL,FXint lo=-2147483647,FXint hi=2147483647){
FXint result=initial;
if(FXInputDialog::getInteger(result,app,caption,label,icon,lo,hi)){
return to_ruby(result);
}
else{
return Qnil;
}
}
}
/**
* Prompt for an real number, start with the given initial value.
* Return TRUE if the new value is accepted, and false otherwise.
* The input is constrained between lo and hi.
*/
%extend {
static VALUE getReal(FXdouble initial,FXWindow* owner,const FXString& caption,const FXString& label,FXIcon* icon=NULL,FXdouble lo=-1.797693134862315e+308,FXdouble hi=1.797693134862315e+308){
FXdouble result=initial;
if(FXInputDialog::getReal(result,owner,caption,label,icon,lo,hi)){
return to_ruby(result);
}
else{
return Qnil;
}
}
static VALUE getReal(FXdouble initial,FXApp* app,const FXString& caption,const FXString& label,FXIcon* icon=NULL,FXdouble lo=-1.797693134862315e+308,FXdouble hi=1.797693134862315e+308){
FXdouble result=initial;
if(FXInputDialog::getReal(result,app,caption,label,icon,lo,hi)){
return to_ruby(result);
}
else{
return Qnil;
}
}
}
};
DECLARE_FXOBJECT_VIRTUALS(FXInputDialog)
DECLARE_FXID_VIRTUALS(FXInputDialog)
DECLARE_FXDRAWABLE_VIRTUALS(FXInputDialog)
DECLARE_FXWINDOW_VIRTUALS(FXInputDialog)
DECLARE_FXTOPWINDOW_VIRTUALS(FXInputDialog)
DECLARE_FXDIALOGBOX_VIRTUALS(FXInputDialog)