Method: MiniGL::TextField#initialize
- Defined in:
- lib/minigl/forms.rb
#initialize(x, y = nil, font = nil, img = nil, cursor_img = nil, disabled_img = nil, margin_x = 0, margin_y = 0, max_length = 100, focused = false, text = '', allowed_chars = nil, text_color = 0, disabled_text_color = 0, selection_color = 0, locale = 'en-us', params = nil, retro = nil, scale_x = 1, scale_y = 1, anchor = nil, &on_text_changed) ⇒ TextField
Creates a new text field.
Parameters:
- x
-
The x-coordinate where the text field will be drawn in the screen.
- y
-
The y-coordinate where the text field will be drawn in the screen.
- font
-
The
Gosu::Fontobject that will be used to draw the text inside the field. - img
-
The image of the text field. For a good result, you would likely want something like a rectangle, horizontally wide, vertically short, and with a color that contrasts with the
text_color. - cursor_img
-
An image for the blinking cursor that stands in the point where text will be inserted. If
nil, a simple black line will be drawn instead. - disabled_img
-
Image for the text field when it’s disabled. If
nil, a darkened version ofimgwill be used. - text_color
-
Color of the button text, in hexadecimal RRGGBB format.
- margin_x
-
The x offset, from the field x-coordinate, to draw the text.
- margin_y
-
The y offset, from the field y-coordinate, to draw the text.
- max_length
-
The maximum length of the text inside the field.
- focused
-
Whether the text field must be focused by default. If
false, focus can be granted by clicking inside the text field or by calling thefocusmethod. - text
-
The starting text. Must not be
nil. - allowed_chars
-
A string containing all characters that can be typed inside the text field. The complete set of supported characters is given by the string
"abcdefghijklmnopqrstuvwxyz1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ'-=/[]\\,.;\"_+?{}|<>:!@#$%¨&*()". - text_color
-
The color with which the text will be drawn, in hexadecimal RRGGBB format.
- disabled_text_color
-
The color with which the text will be drawn, when the text field is disabled, in hexadecimal RRGGBB format.
- selection_color
-
The color of the rectangle highlighting selected text, in hexadecimal RRGGBB format. The rectangle will always be drawn with 50% of opacity.
- locale
-
The locale to be used when detecting keys. By now, only ‘en-US’ and ‘pt-BR’ are partially supported. Default is ‘en-US’. If any different value is supplied, all typed characters will be mapped to ‘#’.
- params
-
An object containing any parameters you want passed to the
on_text_changedblock. When the text of the text field is changed, the following is called:@on_text_changed.call @text, @paramsThus,
paramswill be the second parameter. Note that this doesn’t force you to declare a block that takes parameters. - retro
-
Whether the images should be loaded with the ‘retro’ option set (see
Gosu::Imagefor details). If the value is omitted, theRes.retro_imagesvalue will be used. - scale_x
-
Horizontal scale to draw the component with.
- scale_y
-
Vertical scale to draw the component with.
- anchor
-
See parameter with the same name in
Panel#initializefor details. - on_text_changed
-
The block of code executed when the text in the text field is changed, either by user input or by calling
text=. The new text is passed as a first parameter to this block, followed byparams. Can benil.
Obs.: This method accepts named parameters, but x, y, font and img are mandatory.
630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 |
# File 'lib/minigl/forms.rb', line 630 def initialize(x, y = nil, font = nil, img = nil, cursor_img = nil, disabled_img = nil, margin_x = 0, margin_y = 0, max_length = 100, focused = false, text = '', allowed_chars = nil, text_color = 0, disabled_text_color = 0, selection_color = 0, locale = 'en-us', params = nil, retro = nil, scale_x = 1, scale_y = 1, anchor = nil, &on_text_changed) if x.is_a? Hash y = x[:y] font = x[:font] img = x[:img] cursor_img = x.fetch(:cursor_img, nil) disabled_img = x.fetch(:disabled_img, nil) margin_x = x.fetch(:margin_x, 0) margin_y = x.fetch(:margin_y, 0) max_length = x.fetch(:max_length, 100) focused = x.fetch(:focused, false) text = x.fetch(:text, '') allowed_chars = x.fetch(:allowed_chars, nil) text_color = x.fetch(:text_color, 0) disabled_text_color = x.fetch(:disabled_text_color, 0) selection_color = x.fetch(:selection_color, 0) locale = x.fetch(:locale, 'en-us') params = x.fetch(:params, nil) retro = x.fetch(:retro, nil) scale_x = x.fetch(:scale_x, 1) scale_y = x.fetch(:scale_y, 1) anchor = x.fetch(:anchor, nil) x = x[:x] end retro = Res.retro_images if retro.nil? @scale_x = scale_x @scale_y = scale_y @img = Res.img img, false, false, '.png', retro @w = @img.width * @scale_x @h = @img.height * @scale_y @anchor_offset_x = x; @anchor_offset_y = y @anchor, x, y = FormUtils.check_anchor(anchor, x, y, @w, @h) super x, y, font, text, text_color, disabled_text_color @cursor_img = Res.img(cursor_img, false, false, '.png', retro) if cursor_img @disabled_img = Res.img(disabled_img, false, false, '.png', retro) if disabled_img @max_length = max_length @focused = focused @text_x = x + margin_x * @scale_x @text_y = y + margin_y * @scale_y @selection_color = selection_color @nodes = [@text_x] send(:text=, text, false) if text @cur_node = 0 @cursor_visible = false @cursor_timer = 0 @k = [ Gosu::KbA, Gosu::KbB, Gosu::KbC, Gosu::KbD, Gosu::KbE, Gosu::KbF, Gosu::KbG, Gosu::KbH, Gosu::KbI, Gosu::KbJ, Gosu::KbK, Gosu::KbL, Gosu::KbM, Gosu::KbN, Gosu::KbO, Gosu::KbP, Gosu::KbQ, Gosu::KbR, Gosu::KbS, Gosu::KbT, Gosu::KbU, Gosu::KbV, Gosu::KbW, Gosu::KbX, Gosu::KbY, Gosu::KbZ, Gosu::Kb1, Gosu::Kb2, Gosu::Kb3, Gosu::Kb4, Gosu::Kb5, Gosu::Kb6, Gosu::Kb7, Gosu::Kb8, Gosu::Kb9, Gosu::Kb0, Gosu::KbNumpad1, Gosu::KbNumpad2, Gosu::KbNumpad3, Gosu::KbNumpad4, Gosu::KbNumpad5, Gosu::KbNumpad6, Gosu::KbNumpad7, Gosu::KbNumpad8, Gosu::KbNumpad9, Gosu::KbNumpad0, Gosu::KbSpace, Gosu::KbBackspace, Gosu::KbDelete, Gosu::KbLeft, Gosu::KbRight, Gosu::KbHome, Gosu::KbEnd, Gosu::KbLeftShift, Gosu::KbRightShift, Gosu::KbBacktick, Gosu::KbMinus, Gosu::KbEqual, Gosu::KbBracketLeft, Gosu::KbBracketRight, Gosu::KbBackslash, Gosu::KbSemicolon, Gosu::KbApostrophe, Gosu::KbComma, Gosu::KbPeriod, Gosu::KbSlash, Gosu::KbNumpadAdd, Gosu::KbNumpadSubtract, Gosu::KbNumpadMultiply, Gosu::KbNumpadDivide ] @user_allowed_chars = allowed_chars self.locale = locale @on_text_changed = on_text_changed @params = params end |