Napsal jsem další editor, specializovaných přímo na reStructuredText a Markdown v Pythonu, v GTK+3. Co mě k tomu vedlo, a jaký je výsledek se pokusím sepsat v následujícím článku, který může být považován za první oficiální představení tohoto nového editoru.
Vždy jich může být víc. A zrovna Formiko může být ten pravý pro Vás. Místo toho, abych zde ale psal, proč je Formiko ten nejlepší editor na světě, raději popíšu co mě k tomu vedlo.
Editor je psán v Pythonu, v GTK+ 3. Díky tomu jsem si vyzkoušel jak se píší aplikace pro GTK+ v Pythonu novým způsobem, tedy s PyGObject. A mohl jsem se tak pořádně seznámit s novými technikami tvorby aplikací v GTK+. Byla to zejména práce s Gtk.Application
, Gtk.WindowApplication
, Gtk.HeaderBar
, Gio.Menu
a především s Gio.Action
. Díky všem těmto zmíněným komponentám je aplikace "moderní" v tom smyslu, že zapadá do nového stylu a vzhledu ostatních GTK+ resp. GNOME aplikací.
Vedle těchto celkem běžných stavebních kamenů GTK+ knihovny, jsem se jakožto uživatel Vim editoru pokoušel o integraci editoru přímo do aplikace, což se mi podařilo.
absence mého oblíbeného editoru (i třeba Vim zkratek)
nemožnost nastavit vertikální rozdělení editoru (nakonec jej ale stejně nepoužívám)
absence dalších HTML generátorů (bude vysvětleno později).
Začal jsem tedy zkoušet vytvořit něco vlastního. Protože docutils znám i jako programátor, vím že je snadné jej použít. A že lze snadno rozšířit v podobě parserů například o Markdown.
Formiko - editační režim s GtkSourceView editorem.
Formiko je tedy grafický editor, který lze pustit ve třech režimech, jenž se ovládají parametrem v příkazové řádce:
Standardní ediční režim, kdy je aplikace rozdělena na editor (GtkSourceView) a prohlížeč vygenerovaného HTML (Webkit).
Editační režim Vim. Spouští se s parametrem
-v
. V takovém případě je použit jako editor grafický Vim kompilovaný pro GTK+. Renderování HTML má v takovém případě o něco horší odezvy, způsobené komunikací mezi Vim serverem a Vim klientem.Náhledový režim. Spouští se s parametrem
-p SOUBOR
. Aplikace je pak tvořena jen prohlížečem HTML, který periodicky kontroluje soubor, a při jeho změně je HTML vygenerováno znovu.
Formiko - editační režim s Vim editorem.
V současném stavu podporuje Formiko standardní docutils parsery i generátory HTML. Umí také používat Tiny HTML writer, Yet another HTML writer a HTML 5 writer. Parsovat umí zatím jen RST soubory a Markdown soubory díky Common Mark parser. Vzhledem k tomu, že to hlavní na editoru je prohlížeč, umí také tímto způsobem zobrazovat, resp. editovat HTML soubory.
Editor žádné zvláštní, vlastně ani standardní nastavení zatím nemá. Lze nastavit vertikální nebo horizontální rozvržení. Stran generování HTML lze vynutit parser nebo zvolit generátor (writer). A nakonec lze nastavit vlastní styl, který má generátor použít. Aplikace si pamatuje naposledy nastavené rozměry okna. Standardní editor používá zvýrazňování syntaxe. Pokud je použit Vim jako editor, vše co umí a jak je nastavený se projeví. Prohlížeč je zarolován na pozici kurzoru v editoru, alespoň pokud je to jen trochu možné, ne vždy to ale dopadne správně. To je vše. Pokud bude aplikace používaná, je možné že další nastavení přibudou dle požadavků.
Formiko - režim náhledu.
Podpora právě reStructuredTextu má právě dva důvody. V prvním případě Formiko používá právě docutils k parsování a následnému generování HTML. Tedy RST je podporováno nativně. Druhým důvodem je používání RST v Pythonu coby standard pro psaní dokumentace. A upřímně řečeno, mě přijde dostatečně bohatý na množství formátovacích technik. Nakonec i tento text je psán právě v RST, a HTML je z něj generováno až na serveru.
Editor lze instalovat standardním Pythoním způsobem přes pip, nebo ze zdrojových souborů python setup.py install
, nebo ze zdrojových souborů na GitHubu Je napsán pro Python 2.7 i 3. GTK+ knihovny včetně GtkSourceView a Webkitu je třeba doinstalovat samostatně stejně jako PyGObject. Ty ale budete mít pravděpodobně již v systému, zejména pokud používáte GNOME. Na MacOS ani ve Windows jsem editor zatím nezkoušel, nicméně i tam by měl fungovat za předpokladu, že bude mít všechny všechny knihovny k dispozici.
© 2024 Ondřej Tůma McBig. Ondřej Tůma | Based on: Morias | Twitter: mcbig_cz | RSS: články, twitter