packages feed

gi-gtk-declarative 0.4.0 → 0.4.1

raw patch · 5 files changed

+26/−49 lines, 5 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- GI.Gtk.Declarative.Bin: class BinChild bin (child :: * -> *) | bin -> child
- GI.Gtk.Declarative.Bin: instance (GI.Gtk.Declarative.Bin.BinChild parent child, GI.Gtk.Declarative.EventSource.EventSource child) => GI.Gtk.Declarative.EventSource.EventSource (GI.Gtk.Declarative.Bin.Bin parent child)
- GI.Gtk.Declarative.Bin: instance (GI.Gtk.Declarative.Bin.BinChild parent child, GI.Gtk.Declarative.Patch.Patchable child) => GI.Gtk.Declarative.Patch.Patchable (GI.Gtk.Declarative.Bin.Bin parent child)
- GI.Gtk.Declarative.Bin: instance (GI.Gtk.Declarative.Bin.BinChild widget child, GI.Gtk.Declarative.Patch.Patchable child, GI.Gtk.Declarative.EventSource.EventSource child) => GI.Gtk.Declarative.Widget.FromWidget (GI.Gtk.Declarative.Bin.Bin widget child) GI.Gtk.Declarative.Widget.Widget
- GI.Gtk.Declarative.Bin: instance (a Data.Type.Equality.~ b, c Data.Type.Equality.~ d) => GI.Gtk.Declarative.Widget.FromWidget (GI.Gtk.Declarative.Bin.Bin a c) (GI.Gtk.Declarative.Bin.Bin b d)
- GI.Gtk.Declarative.Bin: instance GHC.Base.Functor (GI.Gtk.Declarative.Bin.Bin widget child)
- GI.Gtk.Declarative.Bin: instance GI.Gtk.Declarative.Bin.BinChild GI.Gtk.Objects.ApplicationWindow.ApplicationWindow GI.Gtk.Declarative.Widget.Widget
- GI.Gtk.Declarative.Bin: instance GI.Gtk.Declarative.Bin.BinChild GI.Gtk.Objects.Dialog.Dialog GI.Gtk.Declarative.Widget.Widget
- GI.Gtk.Declarative.Bin: instance GI.Gtk.Declarative.Bin.BinChild GI.Gtk.Objects.ListBoxRow.ListBoxRow GI.Gtk.Declarative.Widget.Widget
- GI.Gtk.Declarative.Bin: instance GI.Gtk.Declarative.Bin.BinChild GI.Gtk.Objects.MenuItem.MenuItem GI.Gtk.Declarative.Widget.Widget
- GI.Gtk.Declarative.Bin: instance GI.Gtk.Declarative.Bin.BinChild GI.Gtk.Objects.ScrolledWindow.ScrolledWindow GI.Gtk.Declarative.Widget.Widget
- GI.Gtk.Declarative.Bin: instance GI.Gtk.Declarative.Bin.BinChild GI.Gtk.Objects.Window.Window GI.Gtk.Declarative.Widget.Widget
- GI.Gtk.Declarative.Container.ListBox: instance GI.Gtk.Declarative.Container.Class.ToChildren GI.Gtk.Objects.ListBox.ListBox Data.Vector.Vector (GI.Gtk.Declarative.Bin.Bin GI.Gtk.Objects.ListBoxRow.ListBoxRow GI.Gtk.Declarative.Widget.Widget)
- GI.Gtk.Declarative.Container.Patch: instance GI.Gtk.Declarative.Container.Class.IsContainer GI.Gtk.Objects.ListBox.ListBox (GI.Gtk.Declarative.Bin.Bin GI.Gtk.Objects.ListBoxRow.ListBoxRow GI.Gtk.Declarative.Widget.Widget)
+ GI.Gtk.Declarative.Bin: instance (a Data.Type.Equality.~ b) => GI.Gtk.Declarative.Widget.FromWidget (GI.Gtk.Declarative.Bin.Bin a) (GI.Gtk.Declarative.Bin.Bin b)
+ GI.Gtk.Declarative.Bin: instance GHC.Base.Functor (GI.Gtk.Declarative.Bin.Bin widget)
+ GI.Gtk.Declarative.Bin: instance GI.Gtk.Objects.Bin.IsBin parent => GI.Gtk.Declarative.EventSource.EventSource (GI.Gtk.Declarative.Bin.Bin parent)
+ GI.Gtk.Declarative.Bin: instance GI.Gtk.Objects.Bin.IsBin parent => GI.Gtk.Declarative.Patch.Patchable (GI.Gtk.Declarative.Bin.Bin parent)
+ GI.Gtk.Declarative.Container.ListBox: instance GI.Gtk.Declarative.Container.Class.ToChildren GI.Gtk.Objects.ListBox.ListBox Data.Vector.Vector (GI.Gtk.Declarative.Bin.Bin GI.Gtk.Objects.ListBoxRow.ListBoxRow)
+ GI.Gtk.Declarative.Container.Patch: instance GI.Gtk.Declarative.Container.Class.IsContainer GI.Gtk.Objects.ListBox.ListBox (GI.Gtk.Declarative.Bin.Bin GI.Gtk.Objects.ListBoxRow.ListBoxRow)
- GI.Gtk.Declarative: bin :: (Patchable (Bin widget child), Typeable widget, Typeable child, Typeable event, Functor child, IsContainer widget, IsBin widget, IsWidget widget, FromWidget (Bin widget child) target) => (ManagedPtr widget -> widget) -> Vector (Attribute widget event) -> child event -> target event
+ GI.Gtk.Declarative: bin :: (Patchable (Bin widget), Typeable widget, Typeable event, IsContainer widget, IsBin widget, IsWidget widget, FromWidget (Bin widget) target) => (ManagedPtr widget -> widget) -> Vector (Attribute widget event) -> Widget event -> target event
- GI.Gtk.Declarative: data Bin widget child event
+ GI.Gtk.Declarative: data Bin widget event
- GI.Gtk.Declarative: menuItem :: (IsMenuItem item, Typeable event, BinChild item Widget, Typeable item, IsContainer item, IsBin item, IsWidget item) => (ManagedPtr item -> item) -> Vector (Attribute item event) -> Widget event -> MenuItem event
+ GI.Gtk.Declarative: menuItem :: (IsMenuItem item, Typeable event, Typeable item, IsContainer item, IsBin item, IsWidget item) => (ManagedPtr item -> item) -> Vector (Attribute item event) -> Widget event -> MenuItem event
- GI.Gtk.Declarative.Bin: [Bin] :: (Typeable widget, IsContainer widget, IsBin widget, IsWidget widget, Functor child) => (ManagedPtr widget -> widget) -> Vector (Attribute widget event) -> child event -> Bin widget child event
+ GI.Gtk.Declarative.Bin: [Bin] :: (Typeable widget, IsContainer widget, IsBin widget, IsWidget widget) => (ManagedPtr widget -> widget) -> Vector (Attribute widget event) -> Widget event -> Bin widget event
- GI.Gtk.Declarative.Bin: bin :: (Patchable (Bin widget child), Typeable widget, Typeable child, Typeable event, Functor child, IsContainer widget, IsBin widget, IsWidget widget, FromWidget (Bin widget child) target) => (ManagedPtr widget -> widget) -> Vector (Attribute widget event) -> child event -> target event
+ GI.Gtk.Declarative.Bin: bin :: (Patchable (Bin widget), Typeable widget, Typeable event, IsContainer widget, IsBin widget, IsWidget widget, FromWidget (Bin widget) target) => (ManagedPtr widget -> widget) -> Vector (Attribute widget event) -> Widget event -> target event
- GI.Gtk.Declarative.Bin: data Bin widget child event
+ GI.Gtk.Declarative.Bin: data Bin widget event
- GI.Gtk.Declarative.Container.MenuItem: menuItem :: (IsMenuItem item, Typeable event, BinChild item Widget, Typeable item, IsContainer item, IsBin item, IsWidget item) => (ManagedPtr item -> item) -> Vector (Attribute item event) -> Widget event -> MenuItem event
+ GI.Gtk.Declarative.Container.MenuItem: menuItem :: (IsMenuItem item, Typeable event, Typeable item, IsContainer item, IsBin item, IsWidget item) => (ManagedPtr item -> item) -> Vector (Attribute item event) -> Widget event -> MenuItem event

Files

gi-gtk-declarative.cabal view
@@ -1,5 +1,5 @@ name:                 gi-gtk-declarative-version:              0.4.0+version:              0.4.1 synopsis:             Declarative GTK+ programming in Haskell description:          A declarative programming model for GTK+ user                       interfaces, implementing support for various widgets
src/GI/Gtk/Declarative/Bin.hs view
@@ -1,21 +1,19 @@ {-# OPTIONS_GHC -fno-warn-unticked-promoted-constructors #-}-{-# LANGUAGE DataKinds              #-}-{-# LANGUAGE FlexibleContexts       #-}-{-# LANGUAGE FlexibleInstances      #-}-{-# LANGUAGE FunctionalDependencies #-}-{-# LANGUAGE GADTs                  #-}-{-# LANGUAGE MultiParamTypeClasses  #-}-{-# LANGUAGE OverloadedLabels       #-}-{-# LANGUAGE ScopedTypeVariables    #-}-{-# LANGUAGE TypeApplications       #-}-{-# LANGUAGE TypeFamilies           #-}-{-# LANGUAGE TypeOperators          #-}+{-# LANGUAGE DataKinds             #-}+{-# LANGUAGE FlexibleContexts      #-}+{-# LANGUAGE FlexibleInstances     #-}+{-# LANGUAGE GADTs                 #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedLabels      #-}+{-# LANGUAGE ScopedTypeVariables   #-}+{-# LANGUAGE TypeApplications      #-}+{-# LANGUAGE TypeFamilies          #-}+{-# LANGUAGE TypeOperators         #-}  -- | A declarative representation of 'Gtk.Bin' in GTK. module GI.Gtk.Declarative.Bin   ( Bin(..)   , bin-  , BinChild   ) where @@ -32,50 +30,37 @@ import           GI.Gtk.Declarative.Widget  --- | Supported 'Gtk.Bin's.-class BinChild bin (child :: * -> *) | bin -> child--instance BinChild Gtk.ScrolledWindow Widget where-instance BinChild Gtk.ListBoxRow Widget where-instance BinChild Gtk.Window Widget where-instance BinChild Gtk.ApplicationWindow Widget where-instance BinChild Gtk.Dialog Widget where-instance BinChild Gtk.MenuItem Widget where- -- | Declarative version of a /bin/ widget, i.e. a widget with exactly one -- child.-data Bin widget child event where+data Bin widget event where   Bin     :: ( Typeable widget        , Gtk.IsContainer widget        , Gtk.IsBin widget        , Gtk.IsWidget widget-       , Functor child        )     => (Gtk.ManagedPtr widget -> widget)     -> Vector (Attribute widget event)-    -> child event-    -> Bin widget child event+    -> Widget event+    -> Bin widget event -instance Functor (Bin widget child) where+instance Functor (Bin widget) where   fmap f (Bin ctor attrs child) =     Bin ctor (fmap f <$> attrs) (fmap f child)  -- | Construct a /bin/ widget, i.e. a widget with exactly one child. bin-  :: ( Patchable (Bin widget child)+  :: ( Patchable (Bin widget)      , Typeable widget-     , Typeable child      , Typeable event-     , Functor child      , Gtk.IsContainer widget      , Gtk.IsBin widget      , Gtk.IsWidget widget-     , FromWidget (Bin widget child) target+     , FromWidget (Bin widget) target      )   => (Gtk.ManagedPtr widget -> widget) -- ^ A bin widget constructor from the underlying gi-gtk library.   -> Vector (Attribute widget event)   -- ^ List of 'Attribute's.-  -> child event                       -- ^ The bin's child widget, whose type is decided by the 'BinChild' instance.+  -> Widget event                       -- ^ The bin's child widget   -> target event                      -- ^ The target, whose type is decided by 'FromWidget'. bin ctor attrs = fromWidget . Bin ctor attrs @@ -83,7 +68,7 @@ -- Patchable -- -instance (BinChild parent child, Patchable child) => Patchable (Bin parent child) where+instance Gtk.IsBin parent => Patchable (Bin parent) where   create (Bin ctor attrs child) = do     let collected = collectAttributes attrs     widget' <- Gtk.new ctor (constructProperties collected)@@ -128,8 +113,7 @@ -- EventSource -- -instance (BinChild parent child, EventSource child) =>-         EventSource (Bin parent child) where+instance Gtk.IsBin parent => EventSource (Bin parent) where   subscribe (Bin ctor props child) (SomeState st) cb =     case st of       StateTreeBin top childState -> do@@ -138,9 +122,5 @@         (<> handlers') <$> subscribe child childState cb       _ -> error "Cannot subscribe to Bin events with a non-bin state tree." -instance (a ~ b, c ~ d) => FromWidget (Bin a c) (Bin b d) where+instance a ~ b => FromWidget (Bin a) (Bin b) where   fromWidget = id--instance (BinChild widget child, Patchable child, EventSource child)-         => FromWidget (Bin widget child) Widget where-  fromWidget = Widget
src/GI/Gtk/Declarative/Container/ListBox.hs view
@@ -10,6 +10,5 @@  import           GI.Gtk.Declarative.Bin import           GI.Gtk.Declarative.Container.Class-import           GI.Gtk.Declarative.Widget -instance ToChildren Gtk.ListBox Vector (Bin Gtk.ListBoxRow Widget)+instance ToChildren Gtk.ListBox Vector (Bin Gtk.ListBoxRow)
src/GI/Gtk/Declarative/Container/MenuItem.hs view
@@ -36,8 +36,8 @@ data MenuItem event where   -- | A single menu item in a 'Gtk.Menu'.   MenuItem-    :: (Gtk.IsMenuItem item, BinChild item Widget, Typeable item)-    => Bin item Widget event+    :: (Gtk.IsMenuItem item, Gtk.IsBin item, Typeable item)+    => Bin item event     -> MenuItem event   -- | A sub menu in a 'Gtk.Menu', with a text label and the list of   -- child menu items.@@ -56,7 +56,6 @@ menuItem   :: ( Gtk.IsMenuItem item      , Typeable event-     , BinChild item Widget      , Typeable item      , Gtk.IsContainer item      , Gtk.IsBin item@@ -98,7 +97,7 @@     \case       MenuItem item -> create item       SubMenu label subMenu' -> newSubMenuItem label (create subMenu')-  patch state (MenuItem (c1 :: Bin i1 Widget e1)) (MenuItem (c2 :: Bin i2 Widget e2)) =+  patch state (MenuItem (c1 :: Bin i1 e1)) (MenuItem (c2 :: Bin i2 e2)) =     case eqT @i1 @i2 of       Just Refl -> patch state c1 c2       Nothing   -> Replace (create c2)
src/GI/Gtk/Declarative/Container/Patch.hs view
@@ -31,7 +31,6 @@ import           GI.Gtk.Declarative.Container.Class import           GI.Gtk.Declarative.Patch import           GI.Gtk.Declarative.State-import           GI.Gtk.Declarative.Widget  -- | Patch all children in a container. This does not feature any ID checking, -- as seen in React, so reordering children in a container can produce many@@ -116,7 +115,7 @@ padMaybes :: Int -> Vector a -> Vector (Maybe a) padMaybes len xs = Vector.generate len (xs !?) -instance IsContainer Gtk.ListBox (Bin Gtk.ListBoxRow Widget) where+instance IsContainer Gtk.ListBox (Bin Gtk.ListBoxRow) where   appendChild box _ widget' =     Gtk.listBoxInsert box widget' (-1)   replaceChild box _ i old new = do