Я пытаюсь создать новый элемент GUI в текстовом окне DrRacket, например, пиктограммах или синтаксических объектах. Насколько я могу судить, самый стандартный способ сделать это - с snip%
.Создание нового snip% с помощью Racket
К сожалению, документация для creating new snips, хотя и всеобъемлющая, немного непроницаема и оставляет некоторые вопросы, на которые нужно ответить.
Для начала, в чем разница между snip%
и snip-class%
? Почему их нужно разделить на два класса, а не просто объединить в один класс? Это потому, что несколько snips будут использовать один класс snip?
Второе, что такое snip-reader<%>
? Не только почему это должен быть отдельный класс, но почему модуль, который должен быть установлен, должен быть установлен? Если это действительно необходимо для нового класса, почему его нельзя просто передать напрямую. Зачем проходить весь этот процесс построения, а затем разбирать строку формы: "(lib ...)\n(lib ...)"
?
Я имею в виду, что для этого дизайна могут возникнуть какие-либо причины, и это может быть просто остатком старого API. Если да, то кто-нибудь думал о создании нового более последовательного API? Или, если есть причина для этого дизайна, можете ли вы, пожалуйста, рассказать мне, что это такое, поскольку документы, похоже, не так понятны.
Я имею в виду, на данный момент, я могу скопировать/вставить sample given in the docs на создание нового snip. Но мне сложно понять, что происходит здесь, поэтому я могу правильно их использовать.
Я знаю, что есть другие способы сделать это, но я также хочу иметь интерактивные кнопки и еще много чего.
Я знаю, что это не необходимость быть установлена как библиотека сама по себе, но в документации, кажется, сильно толкать вас в этом направлении.
Я подозреваю, что snip-reader% имеет класс, отдельный от snip%, чтобы обрабатывать snips в программах, отличных от gui (обратите внимание, что snip-reader% принадлежит wxme). – soegaard
FWIW: тот же шаблон дизайна используется в 'editor%' vs 'editor-class%' – soegaard
Я не могу найти 'editor-class%', но я могу найти 'editor-data-class%', is что вы тоже имеете в виду? –