LINUX.ORG.RU

Про коммон лисп и гуй.

 , мамкины макароны


1

3

Здесь будет типа моя персональная ЖЖшечка. Но и вопросы к аналитикам тоже будут, не беспокойтесь. Прочитал тут «Зеркало в зеркале» Энде, а на русском не нашел. И вот захотел попробовать перевести (совершенно новый вид деятельности для меня, надо сказать). И вот нужна прога примерно с такими функциями: Деление экрана пополам, с одной стороны оригинал, с другой перевод с возможностью редактировать на месте, разделение текстов на сегменты и выравнивание переведенного с переводимым, возможность оставлять куски не переведенного кода и делать пометки, онлайн словарь. Ну таких прог я нашел пару, но они на жабе и не собираются у меня (в портах жаба безальтернативно завязана на alsa почему-то).

Вот думаю, а если попытаться написать самому? Задача прямо таки не простая. И вот вопросы касательно гуйни в Common Lisp. Могу ли я к гую (например, cl-gtk2) прикрутить спеллчекер (вроде, обычно это GtkSpell)?

Пример использования у них прост:

GtkTextView* view = gtk_text_view_new ();
GtkSpellChecker* spell = gtk_spell_checker_new ();
gtk_spell_checker_set_language (spell, "en_US", NULL);
gtk_spell_checker_attach (GTK_TEXT_VIEW (view));

The GtkSpellChecker then watches modifications to the GtkTextView and 
tries to highlight the misspellings. The GtkSpellChecker is automatically 
destroyed when the GtkTextView to which it is attached is destroyed. 

Значит ли это, что мне просто нужно сделать обвязки для всех этих функций в CFFI или нужно что-то ещё? Я, например, не знаю, как там работает cl-gtk2.

Потом словарь не знаю, как делается. Хочется чтобы тоже с GTK была интеграция. Типа нажал правой кнопкой на слово, а там варианты перевода.

В общем, был бы русский перевод той книги, нафиг бы такой софт не нужен был.



Последнее исправление: HNO-Arzt_ (всего исправлений: 1)

Ответ на: комментарий от Deleted

Вариант, но я его почти не знаю, ентот emacs lisp

HNO-Arzt_
() автор топика

Вот минимальный код на cl-gtk2. Код пишу по памяти, не проверяя даже на компилируемость, поэтому может и не заработать. Также и не знаю, заработает ли cl-gtk2 сейчас. Кажется, что есть более живой форк cl-gtk2 - cl-cffi-gtk.

(use-package :cffi)
(use-package :gobject)
(use-package :gdk)
(use-package :glib)
(use-package :iter)
(use-package :pango)

;; надо вставить корректное название библиотеки
(load-foreign-library (:default "libgtkspell-2.0")) 

;; Описываем CLOS-класс gtk-spell-checker
;; этот CLOS-класс связан с GObject'овским классом GtkSpellChecker
(define-g-object-class "GtkSpellChecker" gtk-spell-checker
                       (:superclass g-object :export t :interfaces nil)
                       ())

;; Описываем сишную функцию
;; g-object - это определенный в cl-gtk2
;; CFFI'ный тип для передачи указателей на gobject
(defcfun (%gtk-spell-checker-set-language "gtk_spell_checker_set_language") :boolean
  (spell-checker g-object)
  (lang :string)
  (error :pointer))

;; Функция-обертка; добавляет обработку ошибок
(defun gtk-spell-checker-set-language (spell-checker lang)
  (with-g-error (error)
    (%gtk-spell-checker-set-language spell-checker lang error)))

;; Описание сишной функции
(defcfun gtk-spell-checker-attach :boolean
  (spell-checker g-object)
  (text-view g-object))

;; Создание и связывания виджета со спелчекером
(let ((view (make-instance 'text-view))
      (spell (make-instance 'gtk-spell-checker)))
  (gtk-spell-checker-set-language spell "en_US")
  (gtk-spell-checker-attach view spell))
dmitry_vk ★★★
()
Последнее исправление: dmitry_vk (всего исправлений: 1)

не знаю, как там работает cl-gtk2.

ты не смог нагуглить? ну и как теперь жить?

pseudo-cat ★★★
()
Ответ на: комментарий от dmitry_vk

Ога, define-g-object-class надо воспользоваться, значит. Спасибо

HNO-Arzt_
() автор топика
Ответ на: комментарий от Deleted

Напиши на ELisp и прикрути к GNU Emacs.

кастрюля чая товарищу!

psv1967 ★★★★★
()

на жабе и не собираются

щито

жаба безальтернативно завязана на alsa

а альсы у тебя нету
mvn clean install faceplam.java.class
почини систему вначале)))

Вариант, но я его почти не знаю, ентот emacs lisp

вот этот лисп подойдет

но вначале придется починить жабу

stevejobs ★★★★☆
()
Ответ на: комментарий от HNO-Arzt_

Боюсь даже представить, что это за система — не-линукс, но при этом порты намертво прибиты к alsa, и поправить этот печальный факт правкой *_DEPENDS невозможно. Предвижу какую-то мобильную версию убунты от microsoft для миковолновок, работающую на clisp. Есть какая-нибудь часть «кошмаров на улице вязов» про это? )

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от HNO-Arzt_

А что произойдет? Мне правда интересно. Во время распаковки файлов явы должен играть Имперский Марш, а выкидывание из зависимостей портит всю идею? Или она сегфолтится при запуске?

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

Как минимум надо генерировать новый plist

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