16、格式化器与文件选择器的实现与测试

格式化器与文件选择器的实现与测试

1. 带两个特殊功能的格式化器

1.1 问题背景

在偏好面板的源列中,需要显示文件的完整路径名。但长字符串需要适应小空间,如果不做特殊处理,显示效果不佳。更好的做法是,单元格平时只显示文件名,编辑时显示完整路径名。同时,还希望实现两个便利功能:一是拒绝不以 .rb 结尾的路径名;二是检查文件是否实际存在。

1.2 格式化器代码

以下是格式化器的代码实现:

class BasenameFormatter < OSX::NSFormatter
  include OSX
  ib_outlet :cell
  def awakeFromNib; @cell.formatter = self;
  end

  def stringForObjectValue(o)
    return '' if o.nil?
    File.basename(o)
  end

  # TODO: 这是糟糕的设计 - 代码中有太多地方对源有一点了解。这些知识应该封装起来,放在远离 GUI 的地方。
  def getObjectValue_forString_errorDescription(objptr, s, errdesc)
    unless s.to_ruby =~ /\.rb$/
      return error("The Source must end in '.rb'. \n'#{s}' does not.",
                   errdesc)
    end
    unles
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值