指導教員から「論文には卒研でやったこと全部書いてほしい」的なことを言われたので、備忘録として急遽ブログを書いてみる。
卒研の進捗
先日のNimにLSPがない問題から、先週はRustとValaを行き来していた。 しかし、RustのGTKバインディングのgtk-rsが、gtkの内部実装を知っていないと、効率的にメモリを利用するアプリケーションを書くことが難しそうなので、最終的にはValaで実装することとした。
さらに、Valaのビルドコマンドを手打ちするのはつらいので、mesonを導入した。
mesonでvalac
から生成されたCのコードを取得できるとうれしそうだけど、mesonにmakeのルールみたいなことはできるのか……?
というのが、先週と昨日までの成果。
階層構造のデータを扱うのは面倒そうだったので、今日はTODOリストをGTK4とValaで実装した。
制作中のものにはTODOリストも実装する予定であるというのもあり、練習がてら実装してみた。
入力したテキストをTreeViewへ追加するにあたって、間違った列へ挿入してしまったため、最初は項目が表示できなかった。
さらに、CheckBoxをCellRendererToggle
をTreeViewColumn
へ追加したものの、状態が切り替わらない問題が発生した。
これはCellRendererToggle
のtoggled signalを実装した。
GTKにはTreeStore/ListStoreで要素がどこにあるのかを示すTreePath
という型のオブジェクトが示す要素から、TreeIter
というリスト、階層構造から要素を取り出すためのイテレータがその要素を示すよう変換することに手間取った(端的に言えばTreePathとTreeIterとの相互変換)。
完成したのが以下の画像。
ちなみに、文字の部分をクリックすると、編集もできる。 しかし、見ての通りWindowのサイズを変更しても、Widget達が付いてこない……。
追記始め: 2021/11/17 0:19
個人的には、Rustより、ValaやNimのCを中間言語とする言語のほうが、可搬性が高くて好きです。比較対象が間違っている気もしますが……。
追記終わり
記念日
恋人がいるわけではないので、そんなキラキラした記念日ではない。 単に好きなキャラクターの記念日らしい。
🎂今日(11/16)は、杉浦小春(WHITE ALBUM2)の誕生日です!https://t.co/A2bR15Gaam
— アクアプラス (@AQUAPLUS_JP) 2021年11月15日
もうWHITE ALBUMの季節ですし、『WHITE ALBUM2』やりたいね……。
Advent Calendar関連
群馬高専 Advent Calendar 2021がそろそろ埋まりそうでうれしい。
ところで、Secure Scuttlebutt Protocol、高専放送大学間の単位変換やCPU自作のすゝめなど、もっと書きたい記事があるんだが、どうしたものか……。