前提・実現したいこと
HaskellでGUIプログラミング(haskell-gi)を勉強しています。
サンプルプログラムを色々探して、表をtreeviewで表示できましたが単列の表となっております。
複数列(項目)の表を表示したいのですが、どのようにコーディングしたらよいのかわかりません。
該当のソースコード
Haskell
1{-# LANGUAGE OverloadedStrings #-} 2{-# LANGUAGE OverloadedLabels #-} 3{-# LANGUAGE ScopedTypeVariables #-} 4 5module Main where 6 7import Data.GI.Base 8import Control.Monad 9import Data.Text (Text, pack) 10import Data.GI.Base.GType (gtypeString) 11import qualified GI.Gtk as Gtk 12import qualified GI.Pango as Pango 13 14demoList::[Text] 15demoList = ["1 James","2 John","3 Robert","4 Michael","5 William","6 David","7 Richard","8 Joseph","9 Thomas","10 Charles"] 16 17setValuesToListStore :: Gtk.ListStore -> [Text] -> Int -> IO Gtk.TreeIter 18setValuesToListStore lsts artx counter = do 19 let stT::Text = artx !! counter 20 gv <- toGValue (Just stT) 21 if (counter == (length artx)-1) then Gtk.listStoreInsertWithValuesv lsts (-1) [0] [gv] 22 else do 23 m <- (Gtk.listStoreInsertWithValuesv lsts (-1) [0] [gv]) 24 setValuesToListStore lsts artx (counter + 1) 25 26main :: IO () 27main = do 28 void $ Gtk.init Nothing 29 30 window <- new Gtk.Window [] 31 on window #destroy Gtk.mainQuit 32 33 column <- new Gtk.TreeViewColumn [ #title := "Column name" ] 34 render <- new Gtk.CellRendererText [ #ellipsize := Pango.EllipsizeModeEnd 35 , #editable := False ] 36 #packStart column render True 37 #addAttribute column render "text" 0 38 39 mlistStore <- Gtk.listStoreNew [gtypeString] 40 41 setValuesToListStore mlistStore demoList 0 42 43 view <- new Gtk.TreeView[#enableTreeLines := True, #headersVisible := True] 44 lk <- (Gtk.treeViewSetModel view (Just mlistStore)) 45 46 #appendColumn view column 47 48 #expandAll view 49 #add window view 50 #showAll window 51 52 Gtk.main
試したこと
上記コード上の数字をいじってみましたが複数列にはなりませんでした。
haskell-giの基になるGTKを調べてみると、列の設定にはListStoreを使っているようで、haskell-giのListStoreを調べるとhttps://hackage.haskell.org/package/gi-gtk-4.0.4/docs/GI-Gtk-Objects-ListStore.htmlだとわかりましたが、具体的にどのようにコーディングしたらよいのかわかりませんでした。
「haskell-gi treeview liststore」などでググったり、GithubやQiitaを見てみましたが参考になるようなサイトやコードは見つけられませんでした。
補足情報(FW/ツールのバージョンなど)
lts: 18.0
stack: Version 2.7.1
haskell-gi: 0.25
OS: ArchLinux
GNOME: GNOME Shell 40.2
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/23 23:42 編集
2021/06/23 23:23
2021/06/24 00:30