gi-gtk-declarative 0.3.0 → 0.4.0
raw patch · 8 files changed
+39/−33 lines, 8 files
Files
- CHANGELOG.md +2/−0
- bench/Benchmark.hs +5/−3
- gi-gtk-declarative.cabal +5/−4
- src/GI/Gtk/Declarative/Container.hs +12/−13
- src/GI/Gtk/Declarative/Container/Box.hs +2/−1
- src/GI/Gtk/Declarative/Container/Class.hs +7/−7
- src/GI/Gtk/Declarative/Container/ListBox.hs +2/−1
- src/GI/Gtk/Declarative/Container/MenuItem.hs +4/−4
CHANGELOG.md view
@@ -1,3 +1,5 @@+* 0.4.0+ - Use `Vector` instead of `[]` for child widgets * 0.3.0 - Add user documentation - Use record for `BoxChild` properties (breaking change!)
bench/Benchmark.hs view
@@ -8,6 +8,8 @@ import Criterion.Main import Data.Functor ((<&>)) import Data.Text+import Data.Vector (Vector)+import qualified Data.Vector as Vector import qualified GI.Gdk as Gdk import qualified GI.GLib.Constants as GLib @@ -16,7 +18,7 @@ import GI.Gtk.Declarative import GI.Gtk.Declarative.State -testView :: [Int] -> Widget ()+testView :: Vector Int -> Widget () testView ns = bin Window [] $ container Box [] $ ns <&> \n -> BoxChild defaultBoxChildProperties { expand = True , fill = True@@ -37,7 +39,7 @@ main :: IO () main = do _ <- Gtk.init Nothing- let initialView = testView [1 .. 100]+ let initialView = testView (Vector.enumFromN 1 100) initialState <- create initialView #showAll =<< someStateWidget initialState _ <- forkOS $ do@@ -49,7 +51,7 @@ void $ testPatch s1 initialView initialView , bench "Modify (diff)" . whnfIO . replicateM_ 10 $ do s1 <- testPatch initialState initialView initialView- void $ testPatch s1 initialView (testView [2 .. 101])+ void $ testPatch s1 initialView (testView (Vector.enumFromN 2 101)) ] ] Gtk.mainQuit
gi-gtk-declarative.cabal view
@@ -1,5 +1,5 @@ name: gi-gtk-declarative-version: 0.3.0+version: 0.4.0 synopsis: Declarative GTK+ programming in Haskell description: A declarative programming model for GTK+ user interfaces, implementing support for various widgets@@ -8,14 +8,14 @@ a reusable library for multiple application architectures and styles. - See [the project README](https://github.com/owickstrom/gi-gtk-declarative#readme)- for more information.+ See [the project website](https://owickstrom.github.io/gi-gtk-declarative/)+ for user guides and more information. license: MPL-2.0 license-file: LICENSE author: Oskar Wickström maintainer: oskar.wickstrom@gmail.com copyright: Oskar Wickström-homepage: https://github.com/owickstrom/gi-gtk-declarative+homepage: https://owickstrom.github.io/gi-gtk-declarative/ bug-reports: https://github.com/owickstrom/gi-gtk-declarative/issues category: Graphics build-type: Simple@@ -77,5 +77,6 @@ , gi-gtk-declarative , random , text+ , vector ghc-options: -Wall -O2 -rtsopts -with-rtsopts=-N -threaded default-language: Haskell2010
src/GI/Gtk/Declarative/Container.hs view
@@ -1,17 +1,16 @@ {-# OPTIONS_GHC -fno-warn-unticked-promoted-constructors #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DefaultSignatures #-}-{-# LANGUAGE DeriveFunctor #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FunctionalDependencies #-}-{-# LANGUAGE GADTs #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLabels #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TypeApplications #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DefaultSignatures #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-} -- | Implementations for common "Gtk.Container".
src/GI/Gtk/Declarative/Container/Box.hs view
@@ -19,6 +19,7 @@ ) where +import Data.Vector (Vector) import Data.Word (Word32) import qualified GI.Gtk as Gtk @@ -54,4 +55,4 @@ instance EventSource BoxChild where subscribe BoxChild{..} = subscribe child -instance ToChildren Gtk.Box [] BoxChild+instance ToChildren Gtk.Box Vector BoxChild
src/GI/Gtk/Declarative/Container/Class.hs view
@@ -1,15 +1,15 @@-{-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE DefaultSignatures #-} {-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} -- | Shared interfaces for containers. module GI.Gtk.Declarative.Container.Class where -import qualified GI.Gtk as Gtk-import Data.Vector (Vector)-import qualified Data.Vector as Vector-import Data.Int (Int32)+import Data.Int (Int32)+import Data.Vector (Vector)+import qualified GI.Gtk as Gtk -- | Describes supported GTK+ containers and their specialized APIs for -- appending and replacing child widgets.@@ -37,5 +37,5 @@ class ToChildren widget parent child | widget -> parent, widget -> child where toChildren :: (Gtk.ManagedPtr widget -> widget) -> parent (child event) -> Children child event - default toChildren :: parent ~ [] => (Gtk.ManagedPtr widget -> widget) -> parent (child event) -> Children child event- toChildren _ = Children . Vector.fromList+ default toChildren :: parent ~ Vector => (Gtk.ManagedPtr widget -> widget) -> parent (child event) -> Children child event+ toChildren _ = Children
src/GI/Gtk/Declarative/Container/ListBox.hs view
@@ -5,10 +5,11 @@ module GI.Gtk.Declarative.Container.ListBox where +import Data.Vector (Vector) import qualified GI.Gtk as Gtk import GI.Gtk.Declarative.Bin import GI.Gtk.Declarative.Container.Class import GI.Gtk.Declarative.Widget -instance ToChildren Gtk.ListBox [] (Bin Gtk.ListBoxRow Widget)+instance ToChildren Gtk.ListBox Vector (Bin Gtk.ListBoxRow Widget)
src/GI/Gtk/Declarative/Container/MenuItem.hs view
@@ -46,11 +46,11 @@ instance Functor MenuItem where fmap f (MenuItem item) = MenuItem (fmap f item)- fmap f (SubMenu label subMenu')=SubMenu label (fmap f subMenu')+ fmap f (SubMenu label subMenu') = SubMenu label (fmap f subMenu') -instance ToChildren Gtk.Menu [] MenuItem+instance ToChildren Gtk.Menu Vector MenuItem -instance ToChildren Gtk.MenuBar [] MenuItem+instance ToChildren Gtk.MenuBar Vector MenuItem -- | Construct a single menu item for a 'Gtk.Menu'. menuItem@@ -73,7 +73,7 @@ subMenu :: (Typeable event) => Text- -> [MenuItem event]+ -> Vector (MenuItem event) -> MenuItem event subMenu label = SubMenu label . container Gtk.Menu mempty