【发布时间】:2017-04-27 14:10:33
【问题描述】:
我正在尝试在 DrRacket 的文本窗口中创建一个新的 GUI 元素,例如图片或语法对象。据我所知,最标准的做法是使用snip%。1
不幸的是,creating new snips 的文档虽然全面,但有点难以理解,还有一些问题需要回答。
首先,snip% 和 snip-class% 有什么区别?为什么需要将它们分成两个类,而不是简单地组合成一个类?是因为多个 snips 将使用一个 snip 类吗?
其次,snip-reader<%> 是什么?不仅为什么它需要是一个单独的类,而且为什么要安装提供它的模块?2 如果它确实需要是一个新类,为什么不能直接引用它直接到。为什么要经历构造然后解析形式的字符串的整个过程:"(lib ...)\n(lib ...)"?
我的意思是,这种设计现在可能有任何原因,它可能只是旧 API 的残余。如果是这样,有没有人想过制作一个新的更一致的 API?或者如果这种设计有原因,请告诉我它是什么,因为文档似乎没有说清楚。
我的意思是,截至目前,我可以在创建新片段时复制/粘贴 sample given in the docs。但是我很难理解这里的设计,所以我可以正确使用它们。
1我知道还有其他方法可以做到这一点,但我也想要有交互式按钮之类的。
2我知道它本身需要作为库安装,但文档似乎强烈推动您朝这个方向发展。
【问题讨论】:
-
我怀疑 snip-reader% 有一个与 snip% 分开的类,以便可以在非 gui 程序中处理 snips(请注意,snip-reader% 属于 wxme)。
-
FWIW:
editor%与editor-class%使用相同的设计模式 -
我找不到
editor-class%,但我可以找到editor-data-class%,你指的也是这个吗? -
是的 - 就是这个。
-
所以,问题在于,在查看该文档时,似乎假设我已经理解了 snip-class% ......:/
标签: user-interface graphics editor racket