Упрощённо можно провести аналогию со страницей HTML со множеством Java-апплетов.
В основу среды разработки Blackbox заложена возможность редактирования составных документов ODC. Для того, чтобы показать содержимое документа из файлового менеджера, потребуется запустить ассоциированное с ним приложение, а именно blackbox.exe (не без помощи wine). При этом Blackbox загрузит программный каркас со всеми необходимыми компонентами для работы. Это не очень удобно и эффективно, особенно по той причине, что программа запускается при помощи программной прослойки wine.
Как-то случайно наткнувшись на утилиту odcread я подумал: а почему бы не использовать её для отображения файлов ODC в Linux как в терминале, так и в программе с GUI?
Для этого скомпилируем программу и самостоятельно установим (скопируем) исполняемый файл odcread в директорию /usr/local/bin (при помощи sudo).
Просмотр в программе Midnight Commander (mc)
Открываем в текстовом редакторе файл ~/.config/mc/mc.ext и добавляем туда следующие строки:# .odcВуаля! Теперь у нас есть возможность просматривать файлы ODC и в mc (в режиме parsing - F8).
regex/\.odc$
View=%view{ascii} /usr/local/bin/odcread %f
На этом можно остановиться, но я хотел получить возможность просмотра файлов прямиком из файлового менеджера Nautilus (GNOME).
Для того, чтобы просмотреть содержимое документов в файловом менеджере, нужно было каким-то образом отобразить. И я решил воспользоваться принципом конвейерной обработки данных, взяв stdout программы odcread за входные данные (stdin). Так я написал GTK+ просмотрщик текстовых файлов gpipeview.
Просмотр текстовых данных в gpipeview
Простенькая программа gpipeview на C с использованием библиотеки GTK+ получает поток данных через stdin и выводит содержимое в окне. Поддерживается буфер обмена, так что текст/код легко скопировать в другую программу.Код программы находится по адресу https://gist.github.com/romiras/b89b9dc371c998402bd5
Компилируется так:
gcc -o gpipeview gpipeview.c -Wall `pkg-config --libs --cflags gtk+-2.0`Перед компиляцией следует установить все библиотеки GTK+, необходимые для компиляции. Просмотреть их список можно лишь запустив
pkg-config --libs --cflags gtk+-2.0
Скомпилировав программу, скопируем её в директорию /usr/local/bin , затем создадим такой Shell-скрипт для запуска из командной строки (назовём его odcview):
#!/bin/shТаким образом, мы получаем возможность просмотра документов в графическом виде из командной строки:
VIEWER=/usr/local/bin/gpipeview
if [ -n "$1" ];then
odcread $1 | $VIEWER &
else
echo "First argument must be path to Oberon/F .ODC file."
exit 2
fi
odcview StdDialog.odc
Всё вроде как неплохо, но напрягает необходимость запуска просмотрщика из командной строки, ведь так?
Вот поэтому лучше зарегистрировать наш новый просмотрщик в системе.
Регистрация просмотрщика odcview в системе
Воспользуемся пакетом xdg-utils.Для регистрации нового MIME типа создадим в текстовом редакторе файл x-oberon-f.xml
<?xml version="1.0" encoding="UTF-8"?>Затем, открыв терминал в той же директории, запустим команду
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-oberon-f">
<comment xml:lang="en">Oberon/F compound document</comment>
<magic priority="50">
<match type="string" value="CDOo" offset="0"/>
</magic>
<magic priority="30">
<match type="string" value="Documents.StdDocument" offset="11"/>
</magic>
<glob pattern="*.odc"/>
<icon name="BlackBox_doc.png"/>
</mime-type>
</mime-info>
xdg-mime install x-oberon-f.xmlТеперь надо ассоциировать с этим MIME типом нашу пиктограмму
(взял с дистрибутива Blackbox, конечно)
таким образом:
xdg-icon-resource install --context mimetypes --size 32 BlackBox_doc.pngДалее, создаём в текстовом редакторе файл ~/.local/share/applications/odcview.desktop с таким содержанием:
[Desktop Entry]
Encoding=UTF-8
Type=Application
Categories=Development;
Name=odcview
Name[de]=odcview
Exec=/usr/local/bin/odcview %U
Terminal=false
Icon=BlackBox_doc.png
# Register additional MIME types here:
#MimeType=application/x-oberon-f
и регистрируем нашу программку в системе:
xdg-mime default odcview.desktop application/x-oberon-f
update-mime-database ~/.local/share/mimeПроверяем что всё зарегистрировано как положено и тип распознаётся системой:
update-desktop-database ~/.local/share/applications
xdg-mime query filetype testfile.odcДолжен быть такой вывод:
application/x-oberon-f
Окончательно, открываем в Nautilus папку с файлами ODC. При выборе правой кнопкой любого документа должен появиться пункт
Open With odcviewТеперь любой ODC документ можно просмотреть в файловом менеджере Nautilus без необходимости запускать каркас BlackBox в wine.
Комментариев нет:
Отправить комментарий