From 2eb4c404499b11068e137527110bd55c72572d0d Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Sun, 16 Jun 2019 19:27:59 -0400 Subject: Test code to populate treeview. --- MeshSketch.hs | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/MeshSketch.hs b/MeshSketch.hs index 3253008..07e29e4 100644 --- a/MeshSketch.hs +++ b/MeshSketch.hs @@ -335,14 +335,27 @@ new = do panedPack1 panes g True True return panes +addToGroupsPane :: Gtk.ListStore -> Bool -> Text -> IO () +addToGroupsPane liststore isEnabled groupName = do + gvalue <- toGValue (Just groupName) + gtrue <- toGValue isEnabled + iter <- listStoreAppend liststore + listStoreSet liststore iter [0,1] [gtrue,gvalue] newGroupsListWidget = do liststore <- listStoreNew [gtypeBoolean,gtypeString] treeView <- treeViewNewWithModel liststore + treeViewSetHeadersVisible treeView False togc <- do togr <- cellRendererToggleNew togc <- treeViewColumnNew treeViewColumnPackStart togc togr False + setCellRendererToggleActive togr True + cellLayoutSetCellDataFunc togc togr $ Just $ \col cel store itr -> do + Just c <- castTo CellRendererToggle cel + gval <- treeModelGetValue store itr 0 + b <- fromGValue gval + setCellRendererToggleActive c b return togc groupc <- do groupr <- cellRendererTextNew @@ -352,16 +365,18 @@ newGroupsListWidget = do -- setCellRendererTextForegroundRgba groupr grey -- -- rGBAFree grey groupc <- treeViewColumnNew + cellLayoutSetCellDataFunc groupc groupr $ Just $ \col cel store itr -> do + Just c <- castTo CellRendererText cel + gval <- treeModelGetValue store itr 1 + mtxt <- fromGValue gval + case mtxt of Nothing -> clearCellRendererTextText c + Just txt -> setCellRendererTextText c txt -- treeViewColumnSetTitle groupc "group" treeViewColumnPackStart groupc groupr False return groupc one <- treeViewAppendColumn treeView togc two <- treeViewAppendColumn treeView groupc - iter <- listStoreAppend liststore - gvalue <- toGValue (Just "sample text" :: Maybe Text) - gtrue <- toGValue True - listStoreSetValue liststore iter 0 gtrue - listStoreSetValue liststore iter 1 gvalue + addToGroupsPane liststore False "sample text" return (treeView,liststore) @@ -408,7 +423,7 @@ onRealize mesh pipeline schema mm = do ] sige <- on w #event $ \ev -> do gLAreaMakeCurrent w gLAreaAttachBuffers w - onEvent w r ev + onEvent mm r ev sigr <- on w #render $ onRender w r sigs <- on w #resize $ onResize w r @@ -679,8 +694,9 @@ pushRing w st endpt h k c = do fitCurves st return d -onEvent :: IsWidget w => w -> Realized -> Event -> IO Bool -onEvent w realized ev = do +onEvent :: MeshSketch -> Realized -> Event -> IO Bool +onEvent mm realized ev = do + let w = mmWidget mm msrc <- eventGetSourceDevice ev inputSource <- forM msrc $ \src -> do src <- get src #inputSource @@ -723,6 +739,7 @@ onEvent w realized ev = do EventTypeButtonPress -> do widgetGrabFocus w + addToGroupsPane (mmListStore mm) True "clicked" bev <- get ev #button h <- get bev #x k <- get bev #y -- cgit v1.2.3