LINUX.ORG.RU

Ну возьми, как тебе уже предлагали, средненькое гуи на tk и перепиши его по образу и подобию на c++/tk.

gaa ★★
()
Ответ на: комментарий от placement_new

>Да боюсь не так написать

не бойся, Патрик с тобой

>тут же как то в классы надо оформить итп Не просто же так перекодить

а ты попробуй. с чем возникнут вопросы - задавай, ответим. вообще же позиция мне непонятна - документация у проекта хорошая, Мацей на письма отвечает оперативно и по существу, ну а в крайнем случае всегда есть ЛОР :)

jtootf ★★★★★
()
Ответ на: комментарий от gaa

А этот врапер поддерживает расширение? То есть смогу я в будущем использовать через него новые tile? Или лучше чисто на C++/Tcl писать в таком случае?

placement_new ★★
() автор топика
Ответ на: комментарий от placement_new

>А этот врапер поддерживает расширение?

до. но хреново. в смысле - вручную дописываешь всё, чего недостаёт. автоматически ничего подхватывать он не умеет

>То есть смогу я в будущем использовать через него новые tile?

сможешь. если напишешь классы, оборачивающие Ttk

>Или лучше чисто на C++/Tcl писать в таком случае?

я делал именно так, куда как проще. хотя отладка в таком случае получается, естественно, двухуровневой - полезной практикой является отдельная ветка исходников на чистом Tcl/Tk, дублирующая втянутый в C++ функционал Tk

jtootf ★★★★★
()
Ответ на: комментарий от placement_new

> А почему на i.eval("package require Tk"); получаю can't find package Tk Хотя из под tclsh выполняется без проблем?

Наверно у тебя auto_path неправильный.

gaa ★★
()
Ответ на: комментарий от placement_new

> i.pkg_provide("Tk", "8.4");

Зачем!? Тебе ведь надо загрузить пакедж Tk, а не сделать вид что ты его загрузил. Так что только "package require"

> Теперь пишет что неизвастная команда wm. auto_path?


auto_path -- это переменная. В ней хранится список каталогов, в которых искать пакеджи.

gaa ★★
()
Ответ на: комментарий от placement_new

> Что т ничо не поиму Вставил такое i.eval("set auto_path /usr/lib/tk8.4"); Безрезультатно

обычно делают append а не set. Хотят попробуй посмотреть значение перпменной при вызове из cpptk и при вызове из tclsh

gaa ★★
()
Ответ на: комментарий от gaa

>Хотят попробуй посмотреть значение перпменной при вызове из cpptk и при вызове из tclsh

с подключением расширений там небольшая свистопляска. я вручную вызывал не то Tcl_Init, не ещё что-то связанное с поиском и обработкой init.tcl (вручную в смысле получая указатель на интерпретатор, а не работая через обёртку). хотя вообще в данном конкретном случае это вообще ни к чему

jtootf ★★★★★
()
Ответ на: комментарий от placement_new

>i.pkg_provide("Tk", "8.4");

эта строчка лишняя

>i.eval("package require Tk");

проверь подключаются ли у тебя сейчас расширения в принципе (с помощью сишного API и tcl.h). если нет - смотри код инициализации обьекта интерпретатора и добавляй туда инициализацию путей через

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

>инициализацию путей через...

...через, опять же, сишный API. Tcl_Init, или что-то более конкретное должно помочь. я не помню, писал ли я насчёт этого бага Собчаку, благо исправляется он очень просто

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

добавил в конструктор interpreter

if (Tcl_Init(interp_) == TCL_ERROR) throw tcl_error("bad init!");

Пакет видимо находит, вот только окошки не появляются.

placement_new ★★
() автор топика
Ответ на: комментарий от placement_new

А на сколько нормально такое решение?

m_interp.eval("lappend auto_path $env(HOME)/lib/BWidget-1.8.0"); // в конструкторе своей формы

placement_new ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.