Class: Iup::Text
- Includes:
- ButtonCallback, DragDropAttributes
- Defined in:
- lib/wrapped/text.rb
Overview
A Text control is one of the more complex controls, because it can be displayed in a variety of ways:
(1) a single line, for inputting a single line of text.
Text.new do
'horizontal'
nc 5
end
(2) a multi-line control, to act more like an editor.
Text.new do
multiline 'yes'
'yes'
size '200x100'
end
(3) a spin box, for selecting one of several values.
Text.new do
spin 'yes'
spinmax 20
spinmin 10
'horizontal'
spin_cb ->(v){
puts "spin control is now #{v}"
DEFAULT
}
end
Attributes
- alignment
-
Sets the alignment of text within control, options ALEFT, ACENTER, ARIGHT or none.
- append
-
write-only appends given string to end of text.
- autohide
-
If set, scrollbars are only shown if necessary, values ‘yes’ / ‘no’.
- border
-
Sets border around text, values ‘yes’ / ‘no’.
- canfocus
-
If set, the control can gain focus, values ‘yes’ / ‘no’.
- caret
-
‘col’ in single-line mode, sets column number of caret; ‘lin,col’ in multi-line mode, sets line and column number of caret.
- caretpos
-
Index of character of the insertion point.
- clipboard
-
‘clear’ / ‘copy’ / ‘cut’ / ‘paste’, write-only access the clipboard with the current selection.
- count
-
read-only number of characters in text.
- expand
-
Allows control to fill available space in indicated direction. Values ‘no’ / ‘horizontal’ / ‘vertical’ / ‘yes’.
- formatting
-
Set to ‘yes’ in multi-line mode, to allow control to use formatting of text.
- insert
-
write-only Places a given string at current caret position, overwriting any current selection.
- linecount
-
read-only returns number of lines of text.
- linevalue
-
read-only returns line of text where the caret is.
- mask
-
Defines a mask to filter text input.
- multiline
-
‘no’ / ‘yes’
- nc
-
Maximum number of characters allowed for keyboard input (0 allows an indefinite number).
- overwrite
-
‘off’ / ‘on’, used when formatting=yes.
- padding
-
Margin in x and y directions, value as “mxn”.
- password
-
‘yes’ / ‘no’, if set, masks the input text as “*”.
- position
-
read-only returns position in pixels within client window as “x,y”.
- rastersize
-
Size of the list, in pixels, value as “widthxheight”.
- readonly
-
‘yes’ / ‘no’.
- screenposition
-
read-only returns position in pixels on screen as “x,y”.
- scrollbar
-
In multi-line mode, selects ‘no’ / ‘horizontal’ / ‘vertical’ / ‘yes’ (for both) scrollbars.
- scrollto
-
write-only ‘col’ Scrolls to make given column number visible, in single-line mode. ‘lin/col’ Scrolls to make line and column number visible, in multi-line mode.
- scrolltopos
-
write-only Scrolls to make character ‘number’ visible.
- selectedtext
-
Reads or overwrites the current selection. Does nothing if no text is selected.
- selection
-
Selects text as ‘col1:col2’ (single-line) / ‘lin1,col1:lin2,col2’ (multi-line) / ‘all’ / ‘none’.
- selectionpos
-
Selects text between character positions: ‘pos1:pos2’ / ‘all’ / ‘none’.
- spin
-
‘no’ / ‘yes’, attaches a spin control to the text box.
- spinalign
-
‘right’ / ‘left’, with respect to the text (GTK always ‘right’).
- spinauto
-
‘yes’ / ‘no’, updates value of control when spin buttons used. When ‘no’, “spin_cb” must adjust the value.
- spininc
-
Increment value, defaults to 1.
- spinmax
-
Maximum spin value, defaults to 100.
- spinmin
-
Minimum spin value, defaults to 1.
- spinvalue
-
Current value of spin, defaults to 1.
- spinwrap
-
‘no’ / ‘yes’, automatically wraps spin at ends of range, when set.
- tabsize
-
In multi-line mode, controls number of spaces used for a tab, defaults to 8.
- tip
-
Tooltip string.
- value
-
Retrieves or sets the text.
- valuemasked
-
Retrieves or sets the text, applying
MASKwhen setting. - visiblecolumns
-
The minimum number of visible columns, defaults to 5.
- visiblelines
-
The minimum number of visible lines, when dropdown=no.
- wordwrap
-
‘no’ / ‘yes’, when multiline=yes.
– TODO Formatting
Instance Attribute Summary
Attributes inherited from Widget
Instance Method Summary collapse
-
#action(callback) ⇒ Object
Action generated when the text is edited, but before its value is actually changed.
-
#caret_cb(callback) ⇒ Object
Action generated when the caret/cursor position is changed.
-
#initialize(&block) ⇒ Text
constructor
A new instance of Text.
-
#motion_cb(callback) ⇒ Object
Action generated when the mouse is moved.
-
#spin_cb(callback) ⇒ Object
Action generated when a spin button is pressed.
-
#valuechanged_cb(callback) ⇒ Object
Called after the value was interactively changed by the user.
Methods included from ButtonCallback
Methods included from DragDropAttributes
#dragbegin_cb, #dragdata_cb, #dragdatasize_cb, #dragend_cb, #dropdata_cb, #dropmotion_cb
Methods included from AttributeBuilders
#define_attribute, #define_id_attribute, #define_id_readonly, #define_id_writeonly, #define_property_attribute, #define_property_writeonly, #define_readonly, #define_writeonly
Methods inherited from Widget
#assign_handle, #enterwindow_cb, #getfocus_cb, #help_cb, #k_any, #killfocus_cb, #leavewindow_cb, #map_cb, #open_controls, #unmap_cb
Methods included from CallbackSetter
Constructor Details
#initialize(&block) ⇒ Text
Returns a new instance of Text.
102 103 104 105 106 107 |
# File 'lib/wrapped/text.rb', line 102 def initialize &block @handle = IupLib.IupText nil # run any provided block on instance, to set up further attributes self.instance_eval &block if block_given? end |
Instance Method Details
#action(callback) ⇒ Object
Action generated when the text is edited, but before its value is actually changed. action takes a 2-argument callback, the character typed and the new value.
160 161 162 163 164 165 166 167 168 |
# File 'lib/wrapped/text.rb', line 160 def action callback unless callback.arity == 2 raise ArgumentError, 'action callback must take 2 argument: (character, new-text)' end cb = Proc.new do |ih, c, text| callback.call c, text end define_callback cb, 'ACTION', :is_i end |
#caret_cb(callback) ⇒ Object
Action generated when the caret/cursor position is changed. caret_cb takes a callback which accepts 3 arguments (line, column, position) of caret
174 175 176 177 178 179 180 181 182 |
# File 'lib/wrapped/text.rb', line 174 def caret_cb callback unless callback.arity == 3 raise ArgumentError, 'caret_cb callback must take 3 arguments: (line, column, position)' end cb = Proc.new do |ih, lin, col, pos| callback.call lin, col, pos end define_callback cb, 'CARET_CB', :iii_i end |
#motion_cb(callback) ⇒ Object
Action generated when the mouse is moved. Callback takes 3 arguments: (x, y, state)
- x
-
x position of mouse
- y
-
y position of mouse
- state
-
status of mouse buttons and certain keyboard keys at the moment the event was generated.
– TODO: include functions, as in button_cb
192 193 194 195 196 197 198 199 200 |
# File 'lib/wrapped/text.rb', line 192 def motion_cb callback unless callback.arity == 3 raise ArgumentError, 'motion_cb callback must take 3 arguments: (x, y, state)' end cb = Proc.new do |ih, x, y, state| callback.call x, y, state end define_callback cb, 'MOTION_CB', :iis_i end |
#spin_cb(callback) ⇒ Object
Action generated when a spin button is pressed. Valid only when SPIN=YES. spin takes a 1-argument callback, the value of spin.
204 205 206 207 208 209 210 211 212 |
# File 'lib/wrapped/text.rb', line 204 def spin_cb callback unless callback.arity == 1 raise ArgumentError, 'spin_cb callback must take 1 argument, the value' end cb = Proc.new do |ih, val| callback.call val end define_callback cb, 'SPIN_CB', :i_i end |
#valuechanged_cb(callback) ⇒ Object
Called after the value was interactively changed by the user.
215 216 217 218 219 220 221 222 223 |
# File 'lib/wrapped/text.rb', line 215 def valuechanged_cb callback unless callback.arity.zero? raise ArgumentError, 'valuechanged_cb callback must take 0 arguments' end cb = Proc.new do |ih| callback.call end define_callback cb, 'VALUECHANGED_CB', :plain end |