123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- # Long text widget.
- module Zori
- class LongText
- include Widget
- include Draggable
- extend Forwardable
-
- BUTTON_BACKGROUND = [0x33, 0x33, 0xff, 0xaa]
- HOVER_BACKGROUND = [0x55, 0x55, 0xff, 0xaa]
- def initialize(params={}, &block)
- super(params, &block)
- text = params[:text]
- @margin = params[:margin] || 4
- @align = params[:align] || :left
- @text = text
- @bg = graph_box(@x, @y, @w, @h)
- @bg.border_thickness = 0
- @bg.border_color = [255, 255, 255, 128]
- @bg.background_color = BUTTON_BACKGROUND
- text_f = Eruta::ALIGN_LEFT
- if @align == :center
- text_f = Eruta::ALIGN_CENTER
- elsif @align == :right
- text_f = Eruta::ALIGN_RIGHT
- end
-
- @tg = graph_longtext(@x, @y, @w, @h, text)
- @tg.text_flags = text_f
- @tg.font = Eruta::Zori.font.id
- @tg.background_color = [0,0,0]
- @tg.color = [255,255, 64]
- @tg.margin = @margin
- @tg.page = 0
- end
- def on_mouse_axes(t, x, y, z, w, dx, dy, dz, dw)
- super
-
- # Check for hovering.
- if self.inside?(x, y)
- @bg.border_thickness = 1
- @bg.background_color = HOVER_BACKGROUND
- self.hover
- else
- @bg.border_thickness = 0
- @bg.background_color = BUTTON_BACKGROUND
- self.unhover
- end
- return false # don't consume the event
- end
-
- def on_mouse_button_down(t, x, y, z, w, b)
- super
- return false unless self.inside?(x, y)
- self.delay = self.delay / 10.0
- p self.line_start, self.line_stop, b
- if @action
- @action.call(self)
- end
- end
-
- def on_mouse_button_up(t, x, y, z, w, b)
- self.delay = self.delay * 10.0
- if @tg.paused && (b == 1)
- @tg.next_page
- end
- if (b==2)
- @tg.page = 0
- end
- return super
- end
-
- def can_drag?
- return true
- end
- def text=(t)
- @tg.text = t
- end
- def_delegator :@tg, :line_start=
- def_delegator :@tg, :line_stop=
- def_delegator :@tg, :delay=
- def_delegator :@tg, :line_start
- def_delegator :@tg, :line_stop
- def_delegator :@tg, :delay
- def_delegator :@tg, :page_lines=
- def_delegator :@tg, :page_lines
- def_delegator :@tg, :paused=
- def_delegator :@tg, :paused
- def_delegator :@tg, :page=
- def_delegator :@tg, :page
- def_delegator :@tg, :last_page
- def_delegator :@tg, :next_page
- def_delegator :@tg, :previous_page
- def_delegator :@tg, :"at_end?"
-
-
- end
- end
|