Class: RubyCurses::Label
- Defined in:
- lib/rbhex/core/widgets/rwidget.rb
Overview
The preferred way of printing text on screen, esp if you want to modify it at run time. Use display_length to ensure no spillage. This can use text or text_variable for setting and getting data (inh from Widget). 2011-11-12 making it simpler, and single line only. The original multiline label
has moved to extras/multilinelabel.rb
Instance Attribute Summary
Attributes inherited from Widget
#_object_created, #col_offset, #cols_panned, #config, #curpos, #focussed, #form, #id, #key_label, #parent_component, #row_offset, #rows_panned, #state
Instance Method Summary collapse
-
#bind_hotkey ⇒ Object
for a button, fire it when label invoked without changing focus for other widgets, attempt to change focus to that field.
-
#getvalue ⇒ Object
get the value for the label.
-
#initialize(form, config = {}, &block) ⇒ Label
constructor
A new instance of Label.
- #label_for(field) ⇒ Object
-
#on_enter ⇒ Object
Added 2011-10-22 to prevent some naive components from putting focus here.
- #on_leave ⇒ Object
-
#repaint ⇒ Object
label’s repaint - I am removing wrapping and Array stuff and making it simple 2011-11-12.
Methods inherited from Widget
#action_manager, #changed, #click, #color_pair, #command, #destroy, #enter, #event_list, #focus, #get_preferred_size, #getvalue_for_paint, #handle_key, #height, #height=, #hide, #init_vars, #leave, #modified?, #move, #override_graphic, #process_key, #remove, #repaint_all, #repaint_required, #rowcol, #set_buffer_modified, #set_buffering, #set_form, #set_form_col, #set_form_row, #set_modified, #setformrowcol, #setrowcol, #show, #text_variable, #unbind_key
Methods included from Io
#__create_footer_window, #clear_this, #get_file, #print_this, #rb_getchar, #rb_gets, #rbgetstr, #warn
Methods included from Utils
#OLDdefine_key, #_process_key, #bind_key, #bind_keys, #clean_string!, #define_key, #define_prefix_command, #display_app_help, #get_attrib, #get_color, #keycode_tos, #last_line, #one_line_window, #parse_formatted_text, #print_key_bindings, #repeatm, #run_command, #shell_out, #shell_output, #suspend, #view, #wrap_text
Methods included from ConfigSetup
#cget, #config_setup, #configure, #variable_set
Methods included from EventHandler
#bind, #fire_handler, #fire_property_change
Constructor Details
#initialize(form, config = {}, &block) ⇒ Label
Returns a new instance of Label.
2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 |
# File 'lib/rbhex/core/widgets/rwidget.rb', line 2701 def initialize form, config={}, &block # this crap was used in position_label, find another way. where is it used ? #@row = config.fetch("row",-1) # why on earth this monstrosity ? 2011-11-5 #@col = config.fetch("col",-1) #@bgcolor = config.fetch("bgcolor", $def_bg_color) #@color = config.fetch("color", $def_fg_color) @text = config.fetch(:text, "NOTFOUND") @editable = false @focusable = false super @justify ||= :left @name ||= @text @repaint_required = true end |
Instance Method Details
#bind_hotkey ⇒ Object
for a button, fire it when label invoked without changing focus for other widgets, attempt to change focus to that field
2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 |
# File 'lib/rbhex/core/widgets/rwidget.rb', line 2735 def bind_hotkey if @mnemonic ch = @mnemonic.downcase()[0].ord ## 1.9 DONE # meta key mch = ?\M-a.getbyte(0) + (ch - ?a.getbyte(0)) ## 1.9 if (@label_for.is_a? RubyCurses::Button ) && (@label_for.respond_to? :fire) @form.bind_key(mch, "hotkey for button #{@label_for.text} ") { |_form, _butt| @label_for.fire } else $log.debug " bind_hotkey label for: #{@label_for}" @form.bind_key(mch, "hotkey for label #{text} ") { |_form, _field| @label_for.focus } end end end |
#getvalue ⇒ Object
get the value for the label
2718 2719 2720 |
# File 'lib/rbhex/core/widgets/rwidget.rb', line 2718 def getvalue @text_variable && @text_variable.value || @text end |
#label_for(field) ⇒ Object
2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 |
# File 'lib/rbhex/core/widgets/rwidget.rb', line 2721 def label_for field @label_for = field #$log.debug " label for: #{@label_for}" if @form bind_hotkey else @when_form ||= [] @when_form << lambda { bind_hotkey } end end |
#on_enter ⇒ Object
Added 2011-10-22 to prevent some naive components from putting focus here.
2794 2795 2796 |
# File 'lib/rbhex/core/widgets/rwidget.rb', line 2794 def on_enter raise "Cannot enter Label" end |
#on_leave ⇒ Object
2797 2798 2799 |
# File 'lib/rbhex/core/widgets/rwidget.rb', line 2797 def on_leave raise "Cannot leave Label" end |
#repaint ⇒ Object
label’s repaint - I am removing wrapping and Array stuff and making it simple 2011-11-12
2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 |
# File 'lib/rbhex/core/widgets/rwidget.rb', line 2751 def repaint return unless @repaint_required raise "Label row or col nil #{@row} , #{@col}, #{@text} " if @row.nil? || @col.nil? r,c = rowcol @bgcolor ||= $def_bg_color @color ||= $def_fg_color # value often nil so putting blank, but usually some application error value = getvalue_for_paint || "" if value.is_a? Array value = value.join " " end # ensure we do not exceed if @display_length if value.length > @display_length value = value[0..@display_length-1] end end len = @display_length || value.length #acolor = get_color $datacolor # the user could have set color_pair, use that, else determine color # This implies that if he sets cp, then changing col and bg won't have an effect ! # A general routine that only changes color will not work here. acolor = @color_pair || get_color($datacolor, @color, @bgcolor) #$log.debug "label :#{@text}, #{value}, r #{r}, c #{c} col= #{@color}, #{@bgcolor} acolor #{acolor} j:#{@justify} dlL: #{@display_length} " str = @justify.to_sym == :right ? "%*s" : "%-*s" # added 2008-12-22 19:05 @graphic ||= @form.window # clear the area @graphic.printstring r, c, " " * len , acolor, @attr if @justify.to_sym == :center padding = (@display_length - value.length)/2 value = " "*padding + value + " "*padding # so its cleared if we change it midway end @graphic.printstring r, c, str % [len, value], acolor, @attr if @mnemonic ulindex = value.index(@mnemonic) || value.index(@mnemonic.swapcase) @graphic.mvchgat(y=r, x=c+ulindex, max=1, Ncurses::A_BOLD|Ncurses::A_UNDERLINE, acolor, nil) end @repaint_required = false end |