首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为Ruby Shoes实现模糊事件

如何为Ruby Shoes实现模糊事件
EN

Stack Overflow用户
提问于 2012-07-17 21:41:16
回答 1查看 296关注 0票数 5

我正在试验红宝石鞋。我想让控件在你给它们焦点时变得可编辑,当它们松开时又变成文本。到目前为止,我有以下几点:

代码语言:javascript
复制
class NameBox < Shoes::Widget
  def initialize(model, opts = {})
    @model = model
    @para = para(value)
    self.click{ 
      edit
    }
    self.keypress{|key|
      display if key==:enter
    }
  end

  def display
    @ed && @ed.hide
    @para.show
    @para.text = value
  end

  def edit
    @ed ||= edit_line(value) {|e|
      @model.rename(e.text)
    }
    @para.hide
    @ed.text = value
    @ed.show
  end

  def value
    @model.name
  end
end

使用对象

代码语言:javascript
复制
class Model
  attr_reader :name
  def initialize(name)
    @name = name
  end
  def rename(new_name)
    @name = new_name
  end
end

Shoes.app do
  @variable = Model.new("1 2 3")
  stack do
    10.times{ name_box(@variable) }
  end
end

此实现意味着,如果您单击多个控件,它们都将是编辑框。

我希望的是一个模糊事件,可以让我把控件改回“显示”。这不存在,所以..您将如何实现它?

假设我将编写更多的控件,并且它们都必须遵守“一个焦点控件”的规则。

**对于奖励积分,解释为什么我不能放:

代码语言:javascript
复制
@ed ||= edit_line(value) {|e|
  @model.rename(e.text)
} 
@ed.hide()

在initialize和get @ed中隐藏。

EN

回答 1

Stack Overflow用户

发布于 2013-05-08 22:45:52

这个怎么样?

代码语言:javascript
复制
class NameBox < Shoes::Widget
  def initialize(model, opts = {})
    @model = model
    @para = para(value)
    self.click{ 
      edit
    }
  end

  def display
    @ed && @ed.hide
    @para.show
    @para.text = value
  end

  def edit
    @ed ||= edit_box(value, height: 30) {|e|
      e.text[-1] == "\n" ? display : @model.rename(e.text)
    }
    @para.hide
    @ed.text = value
    @ed.show
  end

  def value
    @model.name
  end
end

class Model
  attr_reader :name
  def initialize(name)
    @name = name
  end
  def rename(new_name)
    @name = new_name
  end
end

Shoes.app do
  @variable = Model.new("1 2 3")
  stack do
    10.times{ name_box(@variable) }
  end
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11523769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档