Главная

Нативный офис под Haiku

Недавно разработал проект нативного оффиса под Haiku. Планируется полностью модульный офис с возможностью создания составных документов и скриптования(скриптование пока не продумано). Офис состоит из основной программы и модулей, в которых реализован документ. Документы могут дыть вложены друг в друга, например изображение в текст. Существует два встроенных документа: invalid, который вставляется, если документ не был корректно загружен и document selector. При старте основная программа опрашивает модули и выводит список корневых документов:

Выбор корневого документа.

Ещё бывают не корневые документы, которые нет смысла вставлять в корень(таблицы, формулы, кнопки и т. п.). Они вставляются через меню View–>Insert.

Документы представляют из себя BView, которые взаимодействуют с основной программой. Во время редактирования активен только один документ, в остальные блокируется передача сообщений с помощью диспетчера фокуса. Активируется документ двойным кликом или нажатием, родительский документ активируется кликом вне активного документа или кнопкой. При попадании документа в фокус он может изменять среду основной программы: добавлять свои панели и пункты меню:

Векторный редактор.

Иконка в верхнем правом углу показывает тип корневого документа и работает как иконка папки в Tracker.

Документы сохраняются в файл путём архивации корневого документа. Ненативные документы требуется транслировать.

Картинки нарисованы в Wonderbrush. Референсные цвета и контролы с BeOS.

Ух ты!

Ух ты! Это же прямо как Gobe! Да, кстати, а какие отличия будут от Гоби? Преимущества, недостатки?

Некоторые

Некоторые различия будут. Основная программа должна быть простой и сама по себе ничего не редактировать. Она нужна для работы с модулями, управлением панелями и меню, масштабированием, фокусом и сохранением.
Панели и меню у системы динамические, которые даёт сам модуль редактора и они появляются только когда активен документ.
В некоторые редакторы нельзя вставлять документы(в электорнные таблицы и растровую графику).
Вместо презентаций редактор анимации.
Также различия в самих редакторах. список основных редакторов перечислен в первой картинке. В текстовом редакторе отличается механизм вставки документов в Gobе Productive. Чтобы документ обтекался в тексте его нужно вставить в текст, чтобы не обтекался — вне текста. Это соответствует принципу модульности и независимости редакторов.

Я бы предложил

Я бы предложил использовать максимум готовых элементов в проекте:
репликанты, bescript, ShowImage, MediaPlayer, TV, artpaint, stylededit, sum–it…
Вообщем мне представляется такой container (в БеОС демках есть) который мог бы создавать, сохранить и открыть собраные определёным образом репликанты в файл–архив.
Вон добавить в репликанты альфа слой и можно тогда бы просто наложить stylededit файл на картинку, в уголок видео репликант. Общались бы эти документы между собой при помощи bemesage, а поведение документа описивалось бы bescript'ом. По моему это реально (правда я не програмер, и моё понимание поверхностное), тем более почти все заготовки к этому есть.
… то есть любая прога которая умеет быть репликантом моглабы быть использована в таком документе контейнере.
… и импорт экспорт такого документа в HTML(ну может с дополнениями) тоже был бы возможен, думаю.

С репликантами

С репликантами появилась большая проблема: они не поддерживают накладывание друг на друга. http://dev.haiku–os.org/ticket/6246.

Так тракер

Так тракер неподдерживает перекрывание репликантов, а если специальный контейнер поддерживал бы такое?
Этоже не обязательно, чтоб такой сложный документ из репликантов лепился бы на десктоп (пока, хотябы).

Tracker никакого

Tracker никакого отношения к откисовке видов не имеет.

Скорее всего придётся писать свой аналог BView, или запрещать пересекать встроенныен документы во избежание багов.

ГдеВ

ГдеВпро то, каким образом будут поддерживаться стандартные форматы документов вроде open doc?
Врятли. Формат odc очень сложен. Его описание на ~800 страниц. В BeOS/Haiku есть система трансляторов, с помощью которой можно писать модули для преобразовывания файлов. Если кто захочет тот сможет написать нужный транслятор.

Будет лиВсвой формат?
Будет свой формат, основанный на BMessage.

ЧтоВоно будет уметь вообще?
Компоненты перечислены на первой картинке. Постараюсь сделать графическое описание каждого.

КакВтам сВпечатью?
Векторная печать видов встроена в BeOS/Haiku.

АВкак сВформулами?
Формулы представляют себя несколько встраеваемых объектов.

АВчто насчет Latex'a?
Планируется чисто графическое редактирование с возможностью вставки элементов горячими клавишами.

ЧтоВсВэлектронными таблицами?
Есть SumIt. Его нужно подогнать под репликант.

Какой язык автоматизации офисного хозяйства?
Пока не решено.

> Очевидно же,

> Очевидно же, чтоВodf, илиВopenxml неВпросто такВсложные, ониВкак быВмного чего могут.
Далеко не очевидно. Я уверен, что там полно избыточно сложных и костыльных конструкций.

> ВопросВ

> ВопросВ— описание внутреннего представления/своего формата (если ужВмы неВпользуемся odf/openxml) этого новоофиса гдеВпосмотреть можно?
Пока не до конца спланировано. Формат свой у каждого типа документов.

> И как будет

> И как будет решаться вопрос с интеграцией одного типа документов в другой?
С помощю BView или подобного механизма.

> BlackBox Component Builder. Основной рускоязычный ресурс: http://oberoncore.ru
Не поверишь — уже видел :)

> Коль с форматами пока ничего не ясно, советую разобраться как там сделаны т.н. составные документы.
Примерно также как BView, только основано на model view controller модели.

> А бардака

> А бардака не случится, с фокусами, перетаскиванием мышкой содержимого через несколько уровней вложенности и т.п.?
Для этого и нужен вышеупомянутый диспетчер фокуса. Принцип его работы описан в заголовке.

> И как впечатления?
Смотрел реализацию текста, но пока мало чего понял… В его реализации текста не хватает возможности привязывать встроенные виды к параграфу и просто к координатам.

>«закат в горах видел, да? вот такой же, только зеленый»
Паттерны на то и паттерны, чтобы объединять однотипные идеи.

>А на каком паттерне основан BView?
Точно не знаю, как это называется. В нём объеденены все 3 компонента из MVC. Для офиса это не очень удачно, т. к. иногда нужно работать только с определёнными компонентами, например только с моделью при импорте и экспорте или без контроллёра, если на документе нет фокуса. Думаю, что лучше надо делать модель MVC.

Посмотри

Посмотри GobeProductive. У него похожие принципы.

Выбор

Выбор документа — тоже документ. Стандартное меню показывается всегда.
Document возможно будет удалён.
Меню Window служит для переключения и расстановки окон.

Вариант с документом выбора документов не окончательный, возможно будет заменён обычным списком.

Да, кстати

Да, кстати лучше перед разработкой определиться, что нужно пользователю в главном окне(в каждом режиме, по разному все кнопочки…, то что нужно в своём режиме…).
А ты брал что–то за основу? Лучше бы пока делал чтобы хотя бы запускалась просто программа… — сразу с ТЕКСТОВОГО режима…, и брал бы упор на текст… мне кажется большие намерения у тебя), это огромный труд…, если за все браться… Делай пока текстовый редактор), ИМХО…., с подключением модулей естественно)

> Да, кстати

> Да, кстати лучше перед разработкой определиться, что нужно пользователю в главном окне
Примерный ГИП текстового редактора выложил ниже. Готов выслушать недочёты. Нужно разобраться что именно нужно в текстовом редакторе. Беосный стиль кнопок не в счёт, мне его рисовать было проще.

> в каждом режиме, по разному все кнопочки…, то что нужно в своём режиме…
Панели и дополнительные пункты меню выдаёт сам модуль. Эти дополнения должны появлятся при фокусе редактора данного типа. Панели прендставляют себя контейнер BView, который их расставляет по тем же правилам, что и слова в тексте. Панели могут быть с любой из 4 сторон. Панели таскать и модифицировать нельзя, они полностью динамические.

В Gobe Productive с этим было упущение — в нём панели зашиты в главном бинарнике.

> А ты брал что–то за основу?
Если про заброшенные проекты, то нет. Идейно офис основан на Gobe Productive и Blackbox.

> Лучше бы пока делал чтобы хотя бы запускалась просто программа… — сразу с ТЕКСТОВОГО режима…
Если пользователю лень сто раз нажимать на один и тот же пункт из списка типов документов, то можно создать пустой документ этого типа на рабочем столе и использовать его в качестве шаблона.

> и брал бы упор на текст…
Он тут пожалуй и есть самый сложный. Пока не совсем понятно с алгоритмом вывода текста.

>Поэтому

>Поэтому мне интересно чем он будет лучше? (а быть как архитектурно так и функционально лучше он просто обязан, ибо отстает). Если как таковой серьезной фичи нет, то ее обязательно нужно придумать.

Фича в полной модульности(можно писать свои редакторы например для специальных нужд), составных документах(документы полностью интегрируемые), скриптовании любого объекта и простоте. В чистом виде это есть только в BlackBox, но там нет требуемых редакторов и нужного функционала.

Сейчас

Сейчас нарисовал прототип текстового редактора.


Текстовый редактор.

Назначение кнопок на панели слева направо:
1) Название объекта для скриптования.
2) Сохранённые шаблоны шрифтов.
3) Начертание шрифта.
4) Размер шрифта.
5) Стиль шрифта.
6) Цвет шрифта.
7) Цвет фона.
8) Выравнивание.
9) Положение выделенного объекта.
10) Показывать скрытые объекты и символы.

Весь функционал редактора предоставлен через 3 панели(основная и две линейки). Стрелки на линейке обозначают параграфные отступы.

Чего не хватает и что не так?

Эта

Эта возможность никому не нужна.

Сейчас пока

Сейчас пока делаю MVC. Иерархию объектов делаю заново.

Побаловатся

Побаловатся конечно можно…
Всётаки, при любом решении, реально и необходимо для гайки крутить коффис, чтоб нативнее бегал.
На гайке он шустрее чем на убунте! даже счас! при всей кривости порта!
GTK тож надо портить…
Появится у гайки больше пользователей – будет больше и нативных програмеров, вон тогда и будет время для крутого и заточеного под все гаечные плюсы гаечного оффиса.

… и будет

… и будет второй линукс. Тогда уж сразу портировать X сервер под акселеранты и Gnome/KDE поверх и получить GNU/Haiku :) Кстати возможно, что ядро Haiku Linux нехило обгонит…

> На гайке он шустрее чем на убунте! даже счас! при всей кривости порта!
Я запускал бинарник с Haikuware. Грузится в районе минуты, не показывает иконки и падает. После выхода оставляет всякие ненужные линуксячие процессы. Работать невозможно. Ещё он систему засоряет, закидывая файлы куда не попадя так, что InstalledPackages не может его удалить.

Да нет, второй

Да нет, второй линух неполучится, только проги от линуха будут быстро запускатся и не тормозить на каждой извилине. Так можно получить полноценную рабочую станцию на Гайке, даже при ограниченой поддержке железа. Порты должны быть на нативную гравическую систему, конечно. Нужны професиональные проги под графику и оффис.
Нативные счас совсем не светят, так как разработчиков под гайку мало и те счас на разработке системы все.
Коффис шёл на альфе1, попробовать можно было. Сейчас, очевидно, нужен новый порт.
Также вариянт, это добротный порт Wine, тогда можно обойтись на гайке без qt и gtk портов.
Вообщем, мне счас, чтоб избавится от убунты, нужон типа sane, cups, inkscape, gimp, blender, типа avidemux, типа gnome–office или koffice, stardict, transmission, firefox3, vlc, flesh player и удобная запись DVD.
Koe что уже есть из этого, недоделаное обычно.
В остальном, со всекими мелкими утылями да игрульками можно обойтись BeOSovymi.
А убунта своими тормозами бесит, иногда работать невозможно, я уже и xfce поставил, мало толку, паралелную нагрузку линух с X не держит.

> Нужны

> Нужны професиональные проги под графику
> inkscape, gimp
Чем Wonderbrush не угодил? Он поддерживает и векторную и растровую графику. Также поддерживает экспорт в SVG. Кстати автору давно пора его открывать, а то он с ним ничего не делает. В него нужно добавить систему модулей эффектов и нормальный импорт SVG.

> sane, cups
Продвижения были. Некоторые сканеры и принтеры уже работают.

> firefox3
WebPositive уже неплохой.

> transmission
Уже есть.

> vlc
Тоже есть. Где–то даже бинарники новой верси видел. Чем MediaPlayer не устраивает?

> avidemux
Clockwerk

> stardict
Попробуй собрать qstardict.

> flesh player
Gnash уже портировали. Большее сделать не удастся, т. к оффициальный Flash player проприетарен.

> удобная запись DVD
Работы с DVD уже ведутся. Программы записи должны быть, надо искать.

Выходит реально нужно делать офис и новый порт Blender. Не так уж и много.

PS: поиск — это очень мощное срество в нужных руках.

Да это BeOS

Да это BeOS наследие, и то не всё работает.
Пока чисто гаичного нихрена ничего нормального нету.
Да и саму гайку ещё пилить и пилить.
Вот wine дал бы фору гайке над BeOSью…

> Да это BeOS

> Да это BeOS наследие.
Как будто в этом есть что–то плохое. Некоторые програмы написаны на все времена и до сих пор не устарели. Уделают немало новомодных проектов. Тот же WonderBrush.

> Пока чисто гаичного нихрена ничего нормального нету.
У Haiku расширенное BeOS API в отличие от SkyOS и Syllable. Фактически обновлённая переписаная BeOS. Что понимать под «чисто гаичного»? То, что не совместимо с BeOS? Ставить это как самоцель глупо.

> Вот wine дал бы фору гайке над BeOSью…
Не с тем боремся…
Для порта Wine нужно заново написать загрузчик PE образов. Это сложная задача, требуючая знаний внутренней архитектуры Haiku.

Из чисто

Из чисто гаечного нормального софта пока только qt проги. Но qt не допилен тоже пока.
Потeнциал у гайки бeзусловно есть и не малый. Но пока это только потенциал, а дела делать надо сегодня…

>> vlc >Тоже есть.

>> vlc
>Тоже есть. Где–то даже бинарники новой верси видел.
Где?

Уже не помню.

Уже не помню. Были какие–то экспериментальные бинарники, работающие на определённной версии Haiku. Ещё запускали Qt версию. Возможно это именно эти бинарники. В любом случае они у меня не пошли.
Лучше не портом VLC заниматься, а кодеки и модули к media_server делать.

>это добротный

>это добротный порт Wine–зачем?

Затем, чтобы

Затем, чтобы надобность портов отпала.
Wine по любому нужен.

Иными словами,

Иными словами, запускать почти все программы из–под громоздкого эмулятора?

В жопу

В жопу эмули
От кофиса так стошнило — до сих пор плющит

Тока свое- мелкошустрое и умное

А есси венду под гайку тащить -вообще выблюет навсегда

Венда и так покойница

Да, трансляторы можно и гобешные пользовать — для извратов
А вообще — совместимостью лучше не заморачиваться вообще
Гайкувэй онли

> Да,

> Да, трансляторы можно и гобешные пользовать — для извратов
В Gobe Productive свой проприетарный неизвестный формат. Если его не знать эти трансляторы бесполезны.

Думаю, хорошо

Думаю, хорошо былобы формат делать совместимым с оо, на сколько нужно, со временем дополняя (до поддержки всех 800 страниц), т.е. главное чтоб сделаный документ в гайковской проге можно былобы правильно открыть в других популярных офисных програмах. Или хотябы экспорт в такой формат.

да, с гобе

да, с гобе пролет
Тогда системные -те что есть в гайке

В абиворде Есть открытые
Но тогда абиворде повторять придется)

Э кмк не очень существенно — печать в пдф наконец)

Кстати

Кстати об извращениях и трансляторах: 2 года назад гео предлагал использовать чтения/записи документов трансляторы в сочетании с имеющимися редакторами, типа nvu. Насколько это реально?

Транслятор —

Транслятор — это переводчик. Просто переводчик из одного формата в другой. Если написать транслятор из DOC к какому–то общему знаменателю, то даже StyledEdit будет с DOC`ами работать.

Проблема в том, что чем такой транслятор писать — проще повеситься. Он будет сложнее, чем сам StyledEdit, и, может быть, даже сложнее, чем nvu.

> то даже StyledEdit

> то даже StyledEdit будет с DOC`ами работать.
StyledEdit не поддерживает важные опции форматирования — параграфы и встраивание. Какой транслятор не пиши, часть форматирования слетит.

А я и

А я и не говорил, что форматирование останется. Я говорил, что можно будет работать — то есть редактировать текст.

Скриптячить &mdas

Скриптячить — у гайки хей в системе есть
Вообще мысль ничего так
Как пример — можно офис под айпэд глянуть Pages

похож на идею первоначальную

Hey не годится

Hey не годится для скриптования. Это низкоуровневая программа для управления скриптуемыми объектами из sh скриптов. Для скриптования офиса нужен полноценный язык программирования. Думаю неплохо подходит Lua. Простой легковесный язык. Скриптовать можно примерно так:

require “System” -–Модуль стандартных интерфейсов среды
require “Text” -–Текстовый модуль

text = Text.New(«Text», {left=16, top=16, right=256, bottom=256}) -–Создать текстовый документ
text:Insert(«Hello, World!», {style="bold", size=16}) -–Вставить текст с жирным шрифтом и размером 16 пунктов

obj=System.GetObjectByName(«Text») -–Получить созданный объект по его имени; имя задаётся в редакторе или при создании объекта из скрипта
obj:Delete() -–Удалить объект

Но думаю об этом рано пока думать.

PS: администраторам сайта: откюлчите пожалуйста распознавание знаков препинания в коде.

Не знаю,

Не знаю, насколько Луа распространен

Яп предложил Бобик, но должок тянет

А так — отличный клей

Репликант

Репликант композитор (зачатки в BeOS):
Replicants on beos
*прога делающая картинку или видео репликантом называется MonoView (open source)

А

А к оринальному Gobe Productive SDK для создания своих объектов не было?

Вроде небыло.

Вроде небыло.

X512 как дела

X512 как дела на фронте?

До этого

До этого дня времени для разработки почти не было.

Пока сделал тестовую реализацию ГИП, использующую принцип иерархического фокуса похожий на фокус в BlackBox. Кстати как побочный эффект своего ГИП — портируемость, так что редактор уже не совсем нативен. BView используется как средство вывода пикселей и получения данных с устройств ввода. Реализация тестовая, API пока полностью не спроектирован, особенно сообщения и вывод графики.

Думаю как лучше делать принцип работы с графикой (ручная перерисовка обновлённых областей или запоминание комманд рисования и автоматическая отрисовка(как во Flash)) и какие возможности графики нужны(трансформации, стили заливки и обводки, отсечения и т. п).

Не нашел более

Не нашел более лучшей темы..
Словом, на Haiku портировали программу верстки Scribus, которая существует также в версиях для Windows, MacOS, OS/2, *BSD и Solaris:

http://haikuware.com/directory/view-details/productivity/desktop–publish…

http://www.scribus.net/canvas/Scribus

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <i> <img> <strong> <b> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Введите перечисленные символы, чтобы мы убедились, что вы не робот. Не требуется для зарегистрированных пользователей.
d
Y
M
z
h
T
Enter the code without spaces and pay attention to upper/lower case.