格式化器与文件选择器的实现与测试
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
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



