Доброго! Раньше пользовался text, потом сделал свой виджет clcon_text с помощью snit (см. https://bitbucket.org/budden/clcon/src/default/clcon_text.tcl) . Это, по сути, наследник text с расширенным функционалом. Теперь хочу в нём заменить text на ctext. Но просто вот так вот в лоб не работает. Видимо, причина в том, что ctext - это рамка, а text в ней спрятан. При попытке тупо заменить в clcon_text text на ctext половина функционала ломается.
Хочу попробовать выкинуть ctext из игры, а взять его исходник и засунуть нужный мне функционал в мой clcon_text. Но если раньше у меня было именно наследование (к text добавлены новые методы и опции), то теперь получается агрегирование с делегированием.
Получится ли у меня сделать так, чтобы снаружи для программиста мой clcon_text продолжал выглядеть как text, хотя он на самом деле рамка? Смогу ли я при этом организовать с помощью snit доступ к самой рамке, если она вдруг мне понадобится. И правильно ли вообще так поступать? Может быть, мне нужно наоборот сделать явным, что я работаю с рамкой, а в ней живёт text? Это, правда, потребует глазами пройти весь код приложения и везде поправить пути - заменить text на frame.text . Но если это точно лучше, то я это сделаю.
Вот такой мутноватый вопрос.