LINUX.ORG.RU

Рисовалка диаграмм на tcl/tk?

 , ,


1

3

Есть у кого-нибудь? Не гуглится. Я нашёл пакет diagrams в tcl/tk, но нет примера, есть только документация. Также есть пример приложения, но я не смог его запустить (оно не принял параметры, которые у него в доке заявлены, по исходникам за 5 минут тоже не разобрался).

★★★★★

$ ls -l /usr/share/doc/tklib/examples/diagrams
total 24
-rw-r--r-- 1 root root  314 Jan  6  2023 draw_anchor.tcl
-rw-r--r-- 1 root root 1612 Jan  6  2023 draw_chemical.tcl
-rw-r--r-- 1 root root 6026 Jan  6  2023 draw_circle.tcl
-rw-r--r-- 1 root root  522 Jan  6  2023 draw_fraction.tcl
-rw-r--r-- 1 root root 1595 Jan  6  2023 draw_heater.tcl

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

Там какая-то путаница. В tklib eсть diagram, а в примерах исп. Diagrams

 Modules included:
   autoscroll: automatically maps scrollbars when they are needed;
   canvas: provides a canvas with map background based on square tiles;
   chatwidget: a composite widget for chat applications;
   controlwidget: widgets for displaying and controlling numerical values;
   crosshair: provides commands to (de)activate and track crosshairs;
              on canvas widgets;
   ctext: a text widget with syntax highlighting support;
   cursor: provides a few cursor routines;
   datefield: an entry widget for the purpose of date entry;

!!!   Diagrams: helps drawing diagrams, like flowcharts;
...
futurama ★★★★★
()
Последнее исправление: futurama (всего исправлений: 1)
Ответ на: комментарий от futurama

Да, я пытался найти Diagrams, но не нашёл их. API вроде разное. Но в общем я понял, что там очень мало и вообще задача, которую я хотел решить за два дня, за это время мной не решится. Так что не склалось.

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

Нашёл вот что: https://github.com/stepan-mitkin/drakon_editor

Похоже на то, что надо: достаточно убогое, чтобы можно было попытаться разобраться, и при том всё же достаточно фичастое, чтобы можно было назвать редактором.

den73 ★★★★★
() автор топика

Как человек, написавший в свое время редактор специализированных диаграмм, могу сказать, что это дело сложное - написать хороший редактор. Там теория графов и те же k-d деревья встают в полный рост. Я бы особо не надеялся найти готовый высокого качества

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

Я понимаю, поэтому и не пытаюсь написать сам. Т.е. не про k-d деревья (хотя алгоритмы можно брать из книжки, если понятно, что именно сейчас надо применить), а просто там много разных объектов с непростой логикой работы с ними. Просто даже тупо пунктов меню много.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от blex

Уже рассматривал, ChatGPT говорит, что LibreOffice Draw и dia не особо для этого заточены. Ну и так в основном, всё, что находится на гитхабе - это js, т.е. в лучшем случае электрон, а в худшем - веб. Наверное, возможный вариант - это переписать что-то с js, хотя не уверен, что переписывать с js на tcl будет легко и приятно. Электрон не вызывает энтузиазма, а веб - и подавно.

Мне нужна обратная связь, т.е. я хочу, чтобы по нажатию на сущность можно было что-то сделать в основной программе, или чтобы диаграмма генерировалась на основании данных из основной программы, а дальше можно было дорабатывать.

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

Этот уже как раз нашёл на гитхабе, хотя это другая ссылка, там вроде ещё что-то есть. Похоже, товарищи бросили tcl/tk и перешли на js.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

или чтобы диаграмма генерировалась на основании данных из основной программы, а дальше можно было дорабатывать.

Например, использовать внешнюю программу plantuml (она на java) для генерации картинки диаграммы из простого текста. Пример из http://real-world-plantuml.com/umls/4524739456401408:

@startuml
start
:Init Phase;
:Transfer Phase;
note right
  long running activity,
  process requires signal to proceed
end note
:Termination Phase;
stop
@enduml
sigurd ★★★★★
()
Ответ на: комментарий от futurama

Рисовать по текстовым данным, а потом манипулировать, т.е. добавлять новые узлы, открывая ссылки из существующих квадратиков, в этом случае узлы должны присылаться мне из моего приложения. Или удалять (фактически только скрывать, а не удалять) узлы, которые мне неинтересно смотреть в данный момент. Ну и двигать (или чтобы была кнопка «переверстай всю картинку»).

Что-то типа проводника с файлами, когда я могу сворачивать и разворачивать директории, но структура не древовидная, а более общий граф.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 2)

как пример, можешь посмотреть Drakon Editor С. Митькина.

он на tcl, но под венду – похоже заточен под ActiveTcl.

и даже работает – в смысле, позволяет нарисовать жизнеритмы бизнес-процессы дракон-схемы алгоритмов и скодогенерировать в 20 разных языков.

которые даже запускаются и работают.

по кодогенерации там правда есть особенности, например если кодогенерирует в Lua то строит корутины которые можно было бы по другому оттранслировать.

сами «диагармы метапроговы» дракон-схемы хранятся в формате SQLite базы.

с абсолютными координатами, похоже.

вообще-то было бы лучше что-то типа расширений TeX использовать или в тот же сам tcl/tk чтобы было посемантичее.

но оно в целом работает, в большинстве случаев сразу «из коробки»

переписать из ActiveTcl под обычный tcl или tclkits было бы лучше, конечно же.

ещё есть UniConvertor где делали конвертор Visio форматов и прочих векторных.

там тоже tcl.

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

в смысле, Drakon Editor «из коробки» заработал лично у меня только под ActiveTcl.

под линукс оно по идее тоже должно работать если установить все зависимости.

хотя сейчас по инструкции из BFG можно попробовать собрать сборку через tcltkits и kitcreator:

# BFG: a multiprotocol «small web» browser in Tcl/Tk

BFG (stands for Back/Forward/Go) is a free (absolutely), open-source, cross-platform, single-script, self-contained GUI client for a number of "small web" protocols like Gopher, Finger, Nex, Spartan and Gemini.

BFG is written in under 1000 SLOC of Tcl 8.6 and depends upon Tcllib, Tk (obviously) and TclTLS.

Note: the TclTLS dependency can be turned off in the configuration file at the expense of losing Gemini and Gopher-over-TLS support. It is generally not recommended to do this unless you have troubles installing TclTLS onto your system.

### Can you build a binary distribution of BFG?

The main idea of BFG is to be as portable as possible, so no, binaries will not be distributed here.
However, you always can do it yourself. Here's how.

1. Obtain the tclkits for your host and target platforms, e.g. build them [here](https://kitcreator.rkeene.org/kitcreator).
Make sure you're building the target tclkit with Metakit, Tcllib, Tk and TLS packages enabled.
Optionally you can select "TLS: Statically link to LibSSL" and/or "TLS: Build LibreSSL for this platform".
If the host and target platform are the same, you still need two kit binaries (just make a copy).

2. Download `sdx.kit` from somewhere, e.g. from [here](https://codeberg.org/luxferre/StreamGoose/raw/branch/main/tcldep/sdx.kit)

3. Put the two binaries and `sdx.kit` into the same directory as `bfg.tcl`, then run from this directory:

[/path/to/host/tclkit] sdx.kit qwrap bfg.tcl -runtime [/path/to/target/tclkit]

A file just named `bfg` should appear, this is your executable.

4. If building for Windows, rename `bfg` to `bfg.exe`.
anonymous
()

ещё есть рисовалки диаграмм которые с виду вроде не на tcl/tk но на выходе умеют сохраняться в tcl который эту диагарму метапрогову как раз и отрисовывает.

как бы не тот же Dia или чуть ли не xfig, или редактор на Ada диаграмм для TeX под Win32 (умеет сохранять в TeX/pstricks, ещё пару расширений и как бы не tcl тоже)

название не помню но автор кажется автор LEA editor или какой-то IDE под Аду на Win32, там еще встроенный интерпретатор ады был в этой самой IDE.

в общем, можно поискать обычные редакторы диаграмм которые умеют сохранять в tcl.

ещё в SQLite документации есть какой-то свой генератор диагарм метапроговых синтаксических диаграмм типа BNF с картинками – на tcl, как и большинство обвязки для компиляции самого SQLite

можно там посмотреть.

anonymous
()
Ответ на: комментарий от den73

в смысле, вот эти синтаксические диаграммы из SQLite отрисовываются инструментом, написанном на tcl.

можешь там посмотреть.

там какой-то декларативный язык был типа pic из troff или вот Pikchr

pikchr userman

то ли SQLite то ли fossil, там один и тот же автор: pikchr.md

https://wiki.tcl-lang.org/page/Pikchr

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

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

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

я пробовал генерировать, в основном получается неплохо, с задачей справляется.

иногда правда получается странно – типа скодогенерированного Lua с корутинами.

но, там шаблоны настраиваются в общем-то.

anonymous
()
Ответ на: комментарий от rebforce

спасибо, кстати за ссылку на BFG на tcl/tk для swall web, читаю им гофер и gemini.

вот, кстати. подобный клиент было бы неплохо написать и на REBOL3 и на RED.

на REBOL3 кстати был какой-то проприетарный форк который потом полуоткрыли в котором делали я так понял что-то типа редактора планировок DWG, только на реболе.

ещё на ребол есть makedoc/makedocpro и что-то (wetangle?) подобное литературно-грамотное.

вообще, надо бы написать что-то типа makedoc/asciidoc подобное, литературно-грамотное с отрисовывалкой «диагарм метапроговых» sic(k)p? метапрог ориджин(аль)

например, pikchr прикрутить.

RED здесь при том, что акторная модель и ёксель в 13 строчек с реактором и лайвкодингом.

REBOL3 в принципе то же самое, только реактор/акторная модель немного другая.

опять же, комбо хит если совместить с gemini/gopher клиентом типа BFG только на реболе (или, даже лучше на конпелируемом RED+RED/System)

опять же, диалекты VID для view и Draw для аналогичного pikchr.

в общем: странно, что ещё на реболе редактор «диагарм» (дабл комбо пятипалый пёс :)) ещё никто пока не написал (насколько я знаю).

на реболе в iOS были какие-то реблеты и где-то там был пиксельный редактор типа Ms Paint.

про векторный редактор на реболе – не помню такого.

опять же, напрашивается:

  1. акторная модель или реактор и livecoding (хотя бы примерно такой как лучше в RED, хуже как в REBOL3)

  2. внятный DSL для отрисовки , что-то типа pikchr с наворотами. но более декларативный в стиле «функциональной геометрии» и высокоуровневый.

типа TeX/Asymptote – чтобы можно было композицию макроикон делать из отдельных икон.

хотя бы как в pikchr или PIC типа точек привязки nwse и т.п.

формат схем в Drakon Editor в этом смысле плохо подходит – там а) SQLite б) координаты картинок или точек привязки всю дорогу

  1. какая-то литературно-грамотная запускалка типа makedoc лучше ближе к asciidoc для всего этого

в общем, литературно-грамотный метапрог для отрисовки «диаГАРМ метапроговых» (с) sic – вот прицепились же псы пятилапые

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

в pandoc, по крайней мере можно впендюрить: pandoc-tcl-filter

а вообще, ежели вдруг внезапно время появится: хотелось бы например на limbo под inferno переписать troff, pic и наколбасить какой-то литературно-грамотный метапрог.

или например на RED.

anonymous
()