2021/11/16

指導教員から「論文には卒研でやったこと全部書いてほしい」的なことを言われたので、備忘録として急遽ブログを書いてみる。

卒研の進捗

先日のNimにLSPがない問題から、先週はRustとValaを行き来していた。 しかし、RustのGTKバインディングgtk-rsが、gtkの内部実装を知っていないと、効率的にメモリを利用するアプリケーションを書くことが難しそうなので、最終的にはValaで実装することとした。

さらに、Valaのビルドコマンドを手打ちするのはつらいので、mesonを導入した。 mesonでvalacから生成されたCのコードを取得できるとうれしそうだけど、mesonにmakeのルールみたいなことはできるのか……?

というのが、先週と昨日までの成果。

階層構造のデータを扱うのは面倒そうだったので、今日はTODOリストをGTK4とValaで実装した。 制作中のものにはTODOリストも実装する予定であるというのもあり、練習がてら実装してみた。

入力したテキストをTreeViewへ追加するにあたって、間違った列へ挿入してしまったため、最初は項目が表示できなかった。

さらに、CheckBoxをCellRendererToggleTreeViewColumnへ追加したものの、状態が切り替わらない問題が発生した。 これはCellRendererToggleのtoggled signalを実装した。

GTKにはTreeStore/ListStoreで要素がどこにあるのかを示すTreePathという型のオブジェクトが示す要素から、TreeIterというリスト、階層構造から要素を取り出すためのイテレータがその要素を示すよう変換することに手間取った(端的に言えばTreePathとTreeIterとの相互変換)。

完成したのが以下の画像。

f:id:eniehack:20211116235848p:plain
TODOリスト完成図

ちなみに、文字の部分をクリックすると、編集もできる。 しかし、見ての通りWindowのサイズを変更しても、Widget達が付いてこない……。

追記始め: 2021/11/17 0:19

個人的には、Rustより、ValaやNimのCを中間言語とする言語のほうが、可搬性が高くて好きです。比較対象が間違っている気もしますが……。

追記終わり

記念日

恋人がいるわけではないので、そんなキラキラした記念日ではない。 単に好きなキャラクターの記念日らしい。

もうWHITE ALBUMの季節ですし、『WHITE ALBUM2』やりたいね……。

Advent Calendar関連

群馬高専 Advent Calendar 2021がそろそろ埋まりそうでうれしい。

adventar.org

ところで、Secure Scuttlebutt Protocol、高専放送大学間の単位変換やCPU自作のすゝめなど、もっと書きたい記事があるんだが、どうしたものか……。