ltk 0.15.0.1 → 0.15.0.2
raw patch · 6 files changed
+206/−252 lines, 6 filesdep −gtkPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies removed: gtk
API changes (from Hackage documentation)
- Default: instance (Default alpha, Default beta) => Default (alpha, beta)
- Default: instance (Default alpha, Default beta, Default gamma) => Default (alpha, beta, gamma)
- Default: instance Default (Maybe alpha)
- Default: instance Default Bool
- Default: instance Default Int
- Default: instance Default Text
- Default: instance Default [alpha]
- Default: instance Default alpha => Default (Either alpha beta)
- Graphics.UI.Editor.Basics: eventText :: GUIEvent -> Text
- Graphics.UI.Editor.Basics: gtkReturn :: GUIEvent -> Bool
- Graphics.UI.Editor.Basics: instance Bounded GUIEventSelector
- Graphics.UI.Editor.Basics: instance Enum GUIEventSelector
- Graphics.UI.Editor.Basics: instance Eq GUIEventSelector
- Graphics.UI.Editor.Basics: instance Event GUIEvent GUIEventSelector
- Graphics.UI.Editor.Basics: instance EventSelector GUIEventSelector
- Graphics.UI.Editor.Basics: instance EventSource Notifier GUIEvent IO GUIEventSelector
- Graphics.UI.Editor.Basics: instance Ord GUIEventSelector
- Graphics.UI.Editor.Basics: instance Show GUIEventSelector
- Graphics.UI.Editor.Basics: selector :: GUIEvent -> GUIEventSelector
- Graphics.UI.Editor.Composite: instance Default Dependency
- Graphics.UI.Editor.Composite: instance Default PackageName
- Graphics.UI.Editor.Composite: instance Default Version
- Graphics.UI.Editor.Composite: instance Default Version1
- Graphics.UI.Editor.Composite: instance Default Version2
- Graphics.UI.Editor.Composite: instance Default VersionRange
- Graphics.UI.Editor.Composite: instance Eq Version1
- Graphics.UI.Editor.Composite: instance Eq Version2
- Graphics.UI.Editor.Composite: instance Show Version1
- Graphics.UI.Editor.Composite: instance Show Version2
- Graphics.UI.Editor.DescriptionPP: applicator :: FieldDescriptionPP alpha gamma -> alpha -> alpha -> gamma ()
- Graphics.UI.Editor.DescriptionPP: fieldEditor :: FieldDescriptionPP alpha gamma -> alpha -> IO (Widget, Injector alpha, alpha -> Extractor alpha, Notifier)
- Graphics.UI.Editor.DescriptionPP: fieldParser :: FieldDescriptionPP alpha gamma -> alpha -> CharParser () alpha
- Graphics.UI.Editor.DescriptionPP: fieldPrinter :: FieldDescriptionPP alpha gamma -> alpha -> Doc
- Graphics.UI.Editor.DescriptionPP: parameters :: FieldDescriptionPP alpha gamma -> Parameters
- Graphics.UI.Editor.Parameters: instance Eq Direction
- Graphics.UI.Editor.Parameters: instance Eq HorizontalAlign
- Graphics.UI.Editor.Parameters: instance Eq Parameter
- Graphics.UI.Editor.Parameters: instance Show Direction
- Graphics.UI.Editor.Parameters: instance Show HorizontalAlign
- Graphics.UI.Editor.Parameters: instance Show Parameter
- Graphics.UI.Editor.Simple: instance BinClass Widget
- Graphics.UI.Editor.Simple: instance ButtonClass Widget
- Graphics.UI.Editor.Simple: instance ContainerClass Widget
- Graphics.UI.Frame.Panes: activePane :: FrameState delta -> Maybe (PaneName, Connections)
- Graphics.UI.Frame.Panes: currentPage :: PaneLayout -> Int
- Graphics.UI.Frame.Panes: detachedId :: PaneLayout -> Maybe Text
- Graphics.UI.Frame.Panes: detachedSize :: PaneLayout -> Maybe (Int, Int)
- Graphics.UI.Frame.Panes: instance Eq (IDEPane delta)
- Graphics.UI.Frame.Panes: instance Eq PaneDirection
- Graphics.UI.Frame.Panes: instance Eq PaneLayout
- Graphics.UI.Frame.Panes: instance Eq PanePathElement
- Graphics.UI.Frame.Panes: instance Ord (IDEPane delta)
- Graphics.UI.Frame.Panes: instance Read PaneDirection
- Graphics.UI.Frame.Panes: instance Read PaneLayout
- Graphics.UI.Frame.Panes: instance Read PanePathElement
- Graphics.UI.Frame.Panes: instance Show (FrameState delta)
- Graphics.UI.Frame.Panes: instance Show (IDEPane delta)
- Graphics.UI.Frame.Panes: instance Show Connection
- Graphics.UI.Frame.Panes: instance Show Notebook
- Graphics.UI.Frame.Panes: instance Show PaneDirection
- Graphics.UI.Frame.Panes: instance Show PaneLayout
- Graphics.UI.Frame.Panes: instance Show PanePathElement
- Graphics.UI.Frame.Panes: instance Show UIManager
- Graphics.UI.Frame.Panes: instance Show Window
- Graphics.UI.Frame.Panes: layout :: FrameState delta -> PaneLayout
- Graphics.UI.Frame.Panes: paneGroups :: PaneLayout -> Map Text PaneLayout
- Graphics.UI.Frame.Panes: paneMap :: FrameState delta -> Map PaneName (PanePath, Connections)
- Graphics.UI.Frame.Panes: panePathFromNB :: FrameState delta -> !(Map Notebook PanePath)
- Graphics.UI.Frame.Panes: paneTabs :: PaneLayout -> Maybe PaneDirection
- Graphics.UI.Frame.Panes: panes :: FrameState delta -> Map PaneName (IDEPane delta)
- Graphics.UI.Frame.Panes: uiManager :: FrameState delta -> UIManager
- Graphics.UI.Frame.Panes: windows :: FrameState delta -> [Window]
- Text.PrinterParser: fieldParser :: FieldDescriptionS alpha -> alpha -> CharParser () alpha
- Text.PrinterParser: fieldPrinter :: FieldDescriptionS alpha -> alpha -> Doc
- Text.PrinterParser: instance Pretty Text
- Text.PrinterParser: parameters :: FieldDescriptionS alpha -> Parameters
+ Default: instance (Default.Default alpha, Default.Default beta) => Default.Default (alpha, beta)
+ Default: instance (Default.Default alpha, Default.Default beta, Default.Default gamma) => Default.Default (alpha, beta, gamma)
+ Default: instance Default.Default (GHC.Base.Maybe alpha)
+ Default: instance Default.Default Data.Text.Internal.Text
+ Default: instance Default.Default GHC.Types.Bool
+ Default: instance Default.Default GHC.Types.Int
+ Default: instance Default.Default [alpha]
+ Default: instance Default.Default alpha => Default.Default (Data.Either.Either alpha beta)
+ Graphics.UI.Editor.Basics: [eventText] :: GUIEvent -> Text
+ Graphics.UI.Editor.Basics: [gtkReturn] :: GUIEvent -> Bool
+ Graphics.UI.Editor.Basics: [selector] :: GUIEvent -> GUIEventSelector
+ Graphics.UI.Editor.Basics: instance Control.Event.Event Graphics.UI.Editor.Basics.GUIEvent Graphics.UI.Editor.Basics.GUIEventSelector
+ Graphics.UI.Editor.Basics: instance Control.Event.EventSelector Graphics.UI.Editor.Basics.GUIEventSelector
+ Graphics.UI.Editor.Basics: instance Control.Event.EventSource Graphics.UI.Editor.Basics.Notifier Graphics.UI.Editor.Basics.GUIEvent GHC.Types.IO Graphics.UI.Editor.Basics.GUIEventSelector
+ Graphics.UI.Editor.Basics: instance GHC.Classes.Eq Graphics.UI.Editor.Basics.GUIEventSelector
+ Graphics.UI.Editor.Basics: instance GHC.Classes.Ord Graphics.UI.Editor.Basics.GUIEventSelector
+ Graphics.UI.Editor.Basics: instance GHC.Enum.Bounded Graphics.UI.Editor.Basics.GUIEventSelector
+ Graphics.UI.Editor.Basics: instance GHC.Enum.Enum Graphics.UI.Editor.Basics.GUIEventSelector
+ Graphics.UI.Editor.Basics: instance GHC.Show.Show Graphics.UI.Editor.Basics.GUIEventSelector
+ Graphics.UI.Editor.Composite: instance Default.Default Data.Version.Version
+ Graphics.UI.Editor.Composite: instance Default.Default Distribution.Package.Dependency
+ Graphics.UI.Editor.Composite: instance Default.Default Distribution.Package.PackageName
+ Graphics.UI.Editor.Composite: instance Default.Default Distribution.Version.VersionRange
+ Graphics.UI.Editor.Composite: instance Default.Default Graphics.UI.Editor.Composite.Version1
+ Graphics.UI.Editor.Composite: instance Default.Default Graphics.UI.Editor.Composite.Version2
+ Graphics.UI.Editor.Composite: instance GHC.Classes.Eq Graphics.UI.Editor.Composite.Version1
+ Graphics.UI.Editor.Composite: instance GHC.Classes.Eq Graphics.UI.Editor.Composite.Version2
+ Graphics.UI.Editor.Composite: instance GHC.Show.Show Graphics.UI.Editor.Composite.Version1
+ Graphics.UI.Editor.Composite: instance GHC.Show.Show Graphics.UI.Editor.Composite.Version2
+ Graphics.UI.Editor.DescriptionPP: [applicator] :: FieldDescriptionPP alpha gamma -> alpha -> alpha -> gamma ()
+ Graphics.UI.Editor.DescriptionPP: [fieldEditor] :: FieldDescriptionPP alpha gamma -> alpha -> IO (Widget, Injector alpha, alpha -> Extractor alpha, Notifier)
+ Graphics.UI.Editor.DescriptionPP: [fieldParser] :: FieldDescriptionPP alpha gamma -> alpha -> CharParser () alpha
+ Graphics.UI.Editor.DescriptionPP: [fieldPrinter] :: FieldDescriptionPP alpha gamma -> alpha -> Doc
+ Graphics.UI.Editor.DescriptionPP: [parameters] :: FieldDescriptionPP alpha gamma -> Parameters
+ Graphics.UI.Editor.Parameters: instance GHC.Classes.Eq Graphics.UI.Editor.Parameters.Direction
+ Graphics.UI.Editor.Parameters: instance GHC.Classes.Eq Graphics.UI.Editor.Parameters.HorizontalAlign
+ Graphics.UI.Editor.Parameters: instance GHC.Classes.Eq Graphics.UI.Editor.Parameters.Parameter
+ Graphics.UI.Editor.Parameters: instance GHC.Show.Show Graphics.UI.Editor.Parameters.Direction
+ Graphics.UI.Editor.Parameters: instance GHC.Show.Show Graphics.UI.Editor.Parameters.HorizontalAlign
+ Graphics.UI.Editor.Parameters: instance GHC.Show.Show Graphics.UI.Editor.Parameters.Parameter
+ Graphics.UI.Editor.Simple: instance Graphics.UI.Gtk.Types.BinClass Graphics.UI.Gtk.Types.Widget
+ Graphics.UI.Editor.Simple: instance Graphics.UI.Gtk.Types.ButtonClass Graphics.UI.Gtk.Types.Widget
+ Graphics.UI.Editor.Simple: instance Graphics.UI.Gtk.Types.ContainerClass Graphics.UI.Gtk.Types.Widget
+ Graphics.UI.Frame.Panes: [activePane] :: FrameState delta -> Maybe (PaneName, Connections)
+ Graphics.UI.Frame.Panes: [currentPage] :: PaneLayout -> Int
+ Graphics.UI.Frame.Panes: [detachedId] :: PaneLayout -> Maybe Text
+ Graphics.UI.Frame.Panes: [detachedSize] :: PaneLayout -> Maybe (Int, Int)
+ Graphics.UI.Frame.Panes: [layout] :: FrameState delta -> PaneLayout
+ Graphics.UI.Frame.Panes: [paneGroups] :: PaneLayout -> Map Text PaneLayout
+ Graphics.UI.Frame.Panes: [paneMap] :: FrameState delta -> Map PaneName (PanePath, Connections)
+ Graphics.UI.Frame.Panes: [panePathFromNB] :: FrameState delta -> !(Map Notebook PanePath)
+ Graphics.UI.Frame.Panes: [paneTabs] :: PaneLayout -> Maybe PaneDirection
+ Graphics.UI.Frame.Panes: [panes] :: FrameState delta -> Map PaneName (IDEPane delta)
+ Graphics.UI.Frame.Panes: [uiManager] :: FrameState delta -> UIManager
+ Graphics.UI.Frame.Panes: [windows] :: FrameState delta -> [Window]
+ Graphics.UI.Frame.Panes: instance GHC.Classes.Eq (Graphics.UI.Frame.Panes.IDEPane delta)
+ Graphics.UI.Frame.Panes: instance GHC.Classes.Eq Graphics.UI.Frame.Panes.PaneDirection
+ Graphics.UI.Frame.Panes: instance GHC.Classes.Eq Graphics.UI.Frame.Panes.PaneLayout
+ Graphics.UI.Frame.Panes: instance GHC.Classes.Eq Graphics.UI.Frame.Panes.PanePathElement
+ Graphics.UI.Frame.Panes: instance GHC.Classes.Ord (Graphics.UI.Frame.Panes.IDEPane delta)
+ Graphics.UI.Frame.Panes: instance GHC.Read.Read Graphics.UI.Frame.Panes.PaneDirection
+ Graphics.UI.Frame.Panes: instance GHC.Read.Read Graphics.UI.Frame.Panes.PaneLayout
+ Graphics.UI.Frame.Panes: instance GHC.Read.Read Graphics.UI.Frame.Panes.PanePathElement
+ Graphics.UI.Frame.Panes: instance GHC.Show.Show (Graphics.UI.Frame.Panes.FrameState delta)
+ Graphics.UI.Frame.Panes: instance GHC.Show.Show (Graphics.UI.Frame.Panes.IDEPane delta)
+ Graphics.UI.Frame.Panes: instance GHC.Show.Show Graphics.UI.Editor.Basics.Connection
+ Graphics.UI.Frame.Panes: instance GHC.Show.Show Graphics.UI.Frame.Panes.PaneDirection
+ Graphics.UI.Frame.Panes: instance GHC.Show.Show Graphics.UI.Frame.Panes.PaneLayout
+ Graphics.UI.Frame.Panes: instance GHC.Show.Show Graphics.UI.Frame.Panes.PanePathElement
+ Graphics.UI.Frame.Panes: instance GHC.Show.Show Graphics.UI.Gtk.Types.Notebook
+ Graphics.UI.Frame.Panes: instance GHC.Show.Show Graphics.UI.Gtk.Types.UIManager
+ Graphics.UI.Frame.Panes: instance GHC.Show.Show Graphics.UI.Gtk.Types.Window
+ Text.PrinterParser: [fieldParser] :: FieldDescriptionS alpha -> alpha -> CharParser () alpha
+ Text.PrinterParser: [fieldPrinter] :: FieldDescriptionS alpha -> alpha -> Doc
+ Text.PrinterParser: [parameters] :: FieldDescriptionS alpha -> Parameters
+ Text.PrinterParser: instance Text.PrinterParser.Pretty Data.Text.Internal.Text
- Graphics.UI.Editor.Basics: propagateAsChanged :: EventSource alpha GUIEvent m GUIEventSelector => alpha -> [GUIEventSelector] -> m ()
+ Graphics.UI.Editor.Basics: propagateAsChanged :: (EventSource alpha GUIEvent m GUIEventSelector) => alpha -> [GUIEventSelector] -> m ()
- Graphics.UI.Editor.Simple: staticListEditor :: Eq beta => [beta] -> (beta -> Text) -> Editor beta
+ Graphics.UI.Editor.Simple: staticListEditor :: (Eq beta) => [beta] -> (beta -> Text) -> Editor beta
- Graphics.UI.Editor.Simple: staticListMultiEditor :: Eq beta => [beta] -> (beta -> Text) -> Editor [beta]
+ Graphics.UI.Editor.Simple: staticListMultiEditor :: (Eq beta) => [beta] -> (beta -> Text) -> Editor [beta]
- Graphics.UI.Frame.ViewFrame: getActivePanePathOrStandard :: PaneMonad alpha => StandardPath -> alpha (PanePath)
+ Graphics.UI.Frame.ViewFrame: getActivePanePathOrStandard :: PaneMonad alpha => StandardPath -> alpha PanePath
- Graphics.UI.Frame.ViewFrame: getPanes :: RecoverablePane alpha beta delta => delta ([alpha])
+ Graphics.UI.Frame.ViewFrame: getPanes :: RecoverablePane alpha beta delta => delta [alpha]
- Graphics.UI.Frame.ViewFrame: getUIAction :: PaneMonad alpha => Text -> (Action -> a) -> alpha (a)
+ Graphics.UI.Frame.ViewFrame: getUIAction :: PaneMonad alpha => Text -> (Action -> a) -> alpha a
- Graphics.UI.Frame.ViewFrame: widgetGet :: PaneMonad alpha => [Text] -> (Widget -> b) -> alpha (b)
+ Graphics.UI.Frame.ViewFrame: widgetGet :: PaneMonad alpha => [Text] -> (Widget -> b) -> alpha b
Files
- ltk.cabal +3/−10
- src/Graphics/UI/Editor/Composite.hs +37/−48
- src/Graphics/UI/Editor/Simple.hs +28/−28
- src/Graphics/UI/Frame/Panes.hs +1/−1
- src/Graphics/UI/Frame/ViewFrame.hs +130/−158
- src/Text/PrinterParser.hs +7/−7
ltk.cabal view
@@ -1,5 +1,5 @@ name: ltk-version: 0.15.0.1+version: 0.15.0.2 cabal-version: >= 1.8 build-type: Simple license: GPL@@ -19,10 +19,6 @@ type: git location: https://github.com/leksah/ltk -Flag gtk3- description: Use Gtk3- default: True- Library build-depends: Cabal >=1.6.0 && <1.23, base >=4.0.0.0 && <4.9, containers >=0.2 && <0.6, filepath >=1.1.0 && <1.5,@@ -31,11 +27,8 @@ pretty >=1.0.1.0 && <1.2, transformers >=0.2.2.0 && <0.5, ghc -any - if flag(gtk3)- build-depends: gtk3 >=0.13.2 && <0.14- cpp-options: -DMIN_VERSION_gtk=MIN_VERSION_gtk3- else- build-depends: gtk >=0.13.2 && <0.14+ build-depends: gtk3 >=0.13.2 && <0.14+ cpp-options: -DMIN_VERSION_gtk=MIN_VERSION_gtk3 exposed-modules: Default MyMissing Control.Event Graphics.UI.Editor.Basics Graphics.UI.Editor.Composite
src/Graphics/UI/Editor/Composite.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} ----------------------------------------------------------------------------- --@@ -116,9 +115,9 @@ noti2 <- emptyNotifier noti3 <- emptyNotifier mapM_ (propagateEvent notifier [noti1,noti2,noti3]) (Clicked : allGUIEvents)- r1@(frame1,inj1,ext1) <- (fst p1) (snd p1) noti1- r2@(frame2,inj2,ext2) <- (fst p2) (snd p2) noti2- r3@(frame3,inj3,ext3) <- (fst p3) (snd p3) noti3+ r1@(frame1,inj1,ext1) <- fst p1 (snd p1) noti1+ r2@(frame2,inj2,ext2) <- fst p2 (snd p2) noti2+ r3@(frame3,inj3,ext3) <- fst p3 (snd p3) noti3 mkEditor (\widget (v1,v2,v3) -> do core <- readIORef coreRef@@ -295,7 +294,7 @@ hasChild <- hasChildEditor childRef (childWidget,inj2,ext2) <- getChildEditor childRef childEdit childParams cNoti children <- containerGetChildren vBox- unless (elem childWidget children) $+ unless (childWidget `elem` children) $ boxPackEnd vBox childWidget PackNatural 0 inj2 getDefault widgetShowAll childWidget@@ -550,7 +549,7 @@ -- and a nontrivial: -- [("Package",\(Dependency str _) -> [cellText := str]) -- ,("Version",\(Dependency _ vers) -> [cellText := showVersionRange vers])])-data ColumnDescr row = ColumnDescr Bool [(Text,(row -> [AttrOp CellRendererText]))]+data ColumnDescr row = ColumnDescr Bool [(Text, row -> [AttrOp CellRendererText])] -- -- | An editor with a subeditor, of which a list of items can be selected@@ -588,12 +587,12 @@ activateEvent listStore notifier (Just (\ w h -> do res <- after (castToTreeModel w) rowInserted (\ _ _ ->- h >> return ())+ void h) return (ConnectC res))) MayHaveChanged activateEvent listStore notifier (Just (\ w h -> do res <- after (castToTreeModel w) rowDeleted (\ _ ->- h >> return ())+ void h) return (ConnectC res))) MayHaveChanged treeView <- treeViewNewWithModel listStore let minSize = getParameter paraMinSize parameters@@ -601,9 +600,7 @@ sw <- scrolledWindowNew Nothing Nothing containerAdd sw treeView scrolledWindowSetPolicy sw PolicyAutomatic PolicyAutomatic-#ifdef MIN_VERSION_gtk3 scrolledWindowSetMinContentHeight sw (snd minSize)-#endif sel <- treeViewGetSelection treeView treeSelectionSetMode sel SelectionSingle mapM_ (\(str,func) -> do@@ -635,10 +632,9 @@ Nothing -> return () Just replaceF -> do cont <- listStoreToList listStore- mapM_ (listStoreRemove listStore)- $ map fst- $ filter (\(_,e) -> replaceF v e)- $ zip [0..] cont+ mapM_ (listStoreRemove listStore . fst)+ . filter (\(_,e) -> replaceF v e)+ $ zip [0..] cont case mbSort of Nothing -> do listStoreAppend listStore v@@ -696,7 +692,7 @@ filesEditor :: Maybe FilePath -> FileChooserAction -> Text -> Editor [FilePath] filesEditor fp act label p = multisetEditor- (ColumnDescr False [("",(\row -> [cellText := T.pack row]))])+ (ColumnDescr False [("", \ row -> [cellText := T.pack row])]) (fileEditor fp act label, emptyParams) (Just sort) (Just (==))@@ -706,7 +702,7 @@ textsEditor :: (Text -> Bool) -> Bool -> Editor [Text] textsEditor validation trimBlanks p = multisetEditor- (ColumnDescr False [("",(\row -> [cellText := row]))])+ (ColumnDescr False [("", \ row -> [cellText := row])]) (textEditor validation trimBlanks, emptyParams) (Just sort) (Just (==))@@ -730,7 +726,7 @@ return (wid,pinj,pext) dependenciesEditor :: [PackageIdentifier] -> Editor [Dependency]-dependenciesEditor packages p noti =+dependenciesEditor packages p = multisetEditor (ColumnDescr True [("Package",\(Dependency (PackageName str) _) -> [cellText := T.pack str]) ,("Version",\(Dependency _ vers) -> [cellText := T.pack $ display vers])])@@ -746,41 +742,40 @@ $ paraDirection <<<- ParaDirection Vertical $ paraPack <<<- ParaPack PackGrow $ p)- noti versionRangeEditor :: Editor VersionRange versionRangeEditor para noti = do (wid,inj,ext) <- maybeEditor- ((eitherOrEditor- (pairEditor- (comboSelectionEditor v1 (T.pack . show), emptyParams)- (versionEditor, paraName <<<- ParaName "Enter Version" $ emptyParams),- (paraDirection <<<- ParaDirection Vertical- $ paraName <<<- ParaName "Simple"- $ paraOuterAlignment <<<- ParaOuterAlignment (0.0, 0.0, 0.0, 0.0)- $ paraOuterPadding <<<- ParaOuterPadding (0, 0, 0, 0)- $ paraInnerAlignment <<<- ParaInnerAlignment (0.0, 0.0, 0.0, 0.0)- $ paraInnerPadding <<<- ParaInnerPadding (0, 0, 0, 0)- $ emptyParams))- (tupel3Editor- (comboSelectionEditor v2 (T.pack . show), emptyParams)- (versionRangeEditor, paraShadow <<<- ParaShadow ShadowIn $ emptyParams)- (versionRangeEditor, paraShadow <<<- ParaShadow ShadowIn $ emptyParams),- paraName <<<- ParaName "Complex"- $ paraDirection <<<- ParaDirection Vertical- $ paraOuterAlignment <<<- ParaOuterAlignment (0.0, 0.0, 0.0, 0.0)- $ paraOuterPadding <<<- ParaOuterPadding (0, 0, 0, 0)- $ paraInnerAlignment <<<- ParaInnerAlignment (0.0, 0.0, 0.0, 0.0)- $ paraInnerPadding <<<- ParaInnerPadding (0, 0, 0, 0)- $ emptyParams) "Select version range"), emptyParams)+ (eitherOrEditor+ (pairEditor (comboSelectionEditor v1 (T.pack . show), emptyParams)+ (versionEditor,+ paraName <<<- ParaName "Enter Version" $ emptyParams),+ paraDirection <<<- ParaDirection Vertical $+ paraName <<<- ParaName "Simple" $+ paraOuterAlignment <<<- ParaOuterAlignment (0.0, 0.0, 0.0, 0.0) $+ paraOuterPadding <<<- ParaOuterPadding (0, 0, 0, 0) $+ paraInnerAlignment <<<- ParaInnerAlignment (0.0, 0.0, 0.0, 0.0) $+ paraInnerPadding <<<- ParaInnerPadding (0, 0, 0, 0) $ emptyParams)+ (tupel3Editor+ (comboSelectionEditor v2 (T.pack . show), emptyParams)+ (versionRangeEditor,+ paraShadow <<<- ParaShadow ShadowIn $ emptyParams)+ (versionRangeEditor,+ paraShadow <<<- ParaShadow ShadowIn $ emptyParams),+ paraName <<<- ParaName "Complex" $+ paraDirection <<<- ParaDirection Vertical $+ paraOuterAlignment <<<- ParaOuterAlignment (0.0, 0.0, 0.0, 0.0) $+ paraOuterPadding <<<- ParaOuterPadding (0, 0, 0, 0) $+ paraInnerAlignment <<<- ParaInnerAlignment (0.0, 0.0, 0.0, 0.0) $+ paraInnerPadding <<<- ParaInnerPadding (0, 0, 0, 0) $ emptyParams)+ "Select version range",+ emptyParams) False "Any Version" (paraDirection <<<- ParaDirection Vertical $ para) noti let vrinj AnyVersion = inj Nothing-#if MIN_VERSION_Cabal(1,8,0) vrinj (WildcardVersion v) = inj (Just (Left (WildcardVersionS,v)))-#endif vrinj (ThisVersion v) = inj (Just (Left (ThisVersionS,v))) vrinj (LaterVersion v) = inj (Just (Left (LaterVersionS,v))) vrinj (EarlierVersion v) = inj (Just (Left (EarlierVersionS,v)))@@ -800,9 +795,7 @@ Nothing -> return (Just AnyVersion) Just Nothing -> return (Just AnyVersion) Just (Just (Left (ThisVersionS,v))) -> return (Just (ThisVersion v))-#if MIN_VERSION_Cabal(1,8,0) Just (Just (Left (WildcardVersionS,v))) -> return (Just (WildcardVersion v))-#endif Just (Just (Left (LaterVersionS,v))) -> return (Just (LaterVersion v)) Just (Just (Left (EarlierVersionS,v))) -> return (Just (EarlierVersion v)) @@ -814,11 +807,7 @@ -> return (Just (IntersectVersionRanges v1 v2)) return (wid,vrinj,vrext) where-#if MIN_VERSION_Cabal(1,8,0) v1 = [ThisVersionS,WildcardVersionS,LaterVersionS,ThisOrLaterVersionS,EarlierVersionS,ThisOrEarlierVersionS]-#else- v1 = [ThisVersionS,LaterVersionS,ThisOrLaterVersionS,EarlierVersionS,ThisOrEarlierVersionS]-#endif v2 = [UnionVersionRangesS,IntersectVersionRangesS] data Version1 = ThisVersionS | WildcardVersionS | LaterVersionS | ThisOrLaterVersionS | EarlierVersionS | ThisOrEarlierVersionS
src/Graphics/UI/Editor/Simple.hs view
@@ -76,12 +76,10 @@ -- | An invisible editor without any effect -- noEditor :: alpha -> Editor alpha-noEditor proto parameters notifier =+noEditor proto = mkEditor (\ widget _ -> return ()) (return (Just proto))- parameters- notifier -- -- | Editor for a boolean value in the form of a check button@@ -164,11 +162,15 @@ case core of Nothing -> do box <- vBoxNew True 2- let label0 = if length labels > 0 then labels !! 0 else T.pack (show (vals !! 0))+ let label0 = case labels ++ map (T.pack . show) vals of+ (x:_) -> x+ _ -> error "enumEditor" button0 <- radioButtonNewWithLabel label0 buttons <- mapM (\ v -> do let n = fromEnum v- let label = if length labels > n then labels !! n else T.pack (show v)+ let label = case drop n labels of+ (l:_) -> l+ _ -> T.pack (show v) radio <- if n == 0 then return button0 else radioButtonNewWithLabelFromWidget button0 label@@ -183,17 +185,17 @@ buttons)) (Clicked:genericGUIEvents) propagateAsChanged notifier [Clicked] mapM_ (\(b,n) -> toggleButtonSetActive b (n == fromEnum enumValue))- (zip buttons [0..length buttons - 1])+ (zip buttons [0..]) writeIORef coreRef (Just buttons)- Just buttons -> do+ Just buttons -> mapM_ (\(b,n) -> toggleButtonSetActive b (n == fromEnum enumValue))- (zip buttons [0..length buttons - 1]))+ (zip buttons [0..])) (do core <- readIORef coreRef case core of Nothing -> return Nothing Just buttons -> do boolArray <- mapM toggleButtonGetActive buttons- let mbInd = findIndex (== True) boolArray+ let mbInd = elemIndex True boolArray let res = case mbInd of Nothing -> Nothing Just i -> Just (vals !! i)@@ -336,10 +338,10 @@ Nothing -> do spin <- spinButtonNewWithRange min max step widgetSetName spin (getParameter paraName parameters)- mapM_ (activateEvent (castToWidget spin) notifier Nothing) (genericGUIEvents)+ mapM_ (activateEvent (castToWidget spin) notifier Nothing) genericGUIEvents activateEvent (castToWidget spin) notifier (Just (\ w h -> do- res <- afterValueSpinned (castToSpinButton w) (h >> return ())+ res <- afterValueSpinned (castToSpinButton w) (void h) return (unsafeCoerce res))) MayHaveChanged containerAdd widget spin spinButtonSetValue spin (fromIntegral v)@@ -405,12 +407,12 @@ Nothing -> do combo <- comboBoxNewText widgetSetSizeRequest combo 200 (-1)- mapM_ (\o -> comboBoxAppendText combo (showF o)) list+ mapM_ (comboBoxAppendText combo . showF) list widgetSetName combo (getParameter paraName parameters) mapM_ (activateEvent (castToWidget combo) notifier Nothing) genericGUIEvents activateEvent (castToWidget combo) notifier (Just (\ w h -> do- res <- on (castToComboBox w) changed (h >> return ())+ res <- on (castToComboBox w) changed (void h) return (unsafeCoerce res))) MayHaveChanged comboBoxSetActive combo 1 containerAdd widget combo@@ -452,7 +454,7 @@ mapM_ (activateEvent (castToWidget combo) notifier Nothing) genericGUIEvents activateEvent (castToWidget combo) notifier (Just (\ w h -> do- res <- on (castToComboBox w) changed (h >> return ())+ res <- on (castToComboBox w) changed (void h) return (unsafeCoerce res))) MayHaveChanged comboBoxSetActive combo 1 containerAdd widget combo@@ -561,7 +563,7 @@ $ \row -> [ cellText := showF (snd row)] treeViewSetHeadersVisible listView False listStoreClear listStore- mapM_ (listStoreAppend listStore) $ map (\e -> (elem e objs,e)) list+ mapM_ (listStoreAppend listStore . (\ e -> (e `elem` objs, e))) list let minSize = getParameter paraMinSize parameters uncurry (widgetSetSizeRequest listView) minSize sw <- scrolledWindowNew Nothing Nothing@@ -578,7 +580,7 @@ listStoreSetValue listStore i (not (fst val),snd val) listView `on` keyPressEvent $ do name <- eventKeyName- liftIO $ do+ liftIO $ case name of "Return" -> do sel <- treeViewGetSelection listView@@ -590,15 +592,15 @@ _ -> return False writeIORef coreRef (Just (listView,listStore)) Just (listView,listStore) -> do- let model = map (\e -> (elem e objs,e)) list+ let model = map (\e -> (e `elem` objs,e)) list listStoreClear listStore- mapM_ (listStoreAppend listStore) $ map (\e -> (elem e objs,e)) list)+ mapM_ (listStoreAppend listStore . (\ e -> (e `elem` objs, e))) list) (do core <- readIORef coreRef case core of Nothing -> return Nothing Just (listView,listStore) -> do model <- listStoreToList listStore- return (Just (map snd $ filter (\e -> fst e) model)))+ return (Just (map snd $ filter fst model))) parameters notifier @@ -621,9 +623,9 @@ propagateAsChanged notifier [KeyPressed,ButtonPressed] sel <- treeViewGetSelection listView treeSelectionSetMode sel- (case getParameter paraMultiSel parameters of- True -> SelectionMultiple- False -> SelectionSingle)+ (if getParameter paraMultiSel parameters+ then SelectionMultiple+ else SelectionSingle) renderer <- cellRendererTextNew col <- treeViewColumnNew treeViewAppendColumn listView col@@ -639,9 +641,7 @@ containerAdd sw listView scrolledWindowSetPolicy sw PolicyAutomatic PolicyAutomatic containerAdd widget sw-#ifdef MIN_VERSION_gtk3 scrolledWindowSetMinContentHeight sw (snd minSize)-#endif treeSelectionUnselectAll sel let mbInd = elemIndex obj list case mbInd of@@ -742,10 +742,10 @@ -- Nothing -> fn -- Just rel -> makeRelative rel fn entrySetText entry (T.pack fn)- triggerEvent notifier (GUIEvent {+ triggerEvent notifier GUIEvent { selector = MayHaveChanged, eventText = "",- gtkReturn = True})+ gtkReturn = True} return (e{gtkReturn=True}) --@@ -764,7 +764,7 @@ mapM_ (activateEvent (castToWidget fs) notifier Nothing) (Clicked: genericGUIEvents) activateEvent (castToWidget fs) notifier (Just (\ w h -> do- res <- onFontSet (castToFontButton w) (h >> return ())+ res <- onFontSet (castToFontButton w) (void h) return (unsafeCoerce res))) MayHaveChanged containerAdd widget fs case mbValue of@@ -801,7 +801,7 @@ mapM_ (activateEvent (castToWidget cs) notifier Nothing) (Clicked: genericGUIEvents) activateEvent (castToWidget cs) notifier (Just (\ w h -> do- res <- onColorSet (castToColorButton w) (h >> return ())+ res <- onColorSet (castToColorButton w) (void h) return (unsafeCoerce res))) MayHaveChanged containerAdd widget cs colorButtonSetColor cs c
src/Graphics/UI/Frame/Panes.hs view
@@ -69,7 +69,7 @@ -- data PaneDirection = TopP | BottomP | LeftP | RightP deriving (Eq,Show,Read)- + -- -- | Description of a window layout -- Horizontal: top bottom Vertical: left right
src/Graphics/UI/Frame/ViewFrame.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE CPP #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE NoMonomorphismRestriction #-} {-# LANGUAGE FlexibleInstances #-} @@ -141,16 +140,12 @@ import System.Glib (GObjectClass(..), isA) import Graphics.UI.Gtk.Layout.Notebook (gTypeNotebook) import System.CPUTime (getCPUTime) -import Graphics.UI.Gtk.Gdk.EventM (Modifier(..)) -#ifdef MIN_VERSION_gtk3 +import Graphics.UI.Gtk.Gdk.EventM+ (Modifier(..), eventModifierMouse, TimeStamp(..)) import Graphics.UI.Gtk.General.CssProvider (cssProviderNew, cssProviderLoadFromString) import Graphics.UI.Gtk.General.StyleContext (styleContextAddProvider) import Graphics.UI.Gtk.General.Enums (Align(..)) -#else -import Graphics.UI.Gtk (rcParseString) -#endif import MyMissing (forceJust, forceHead) -import Graphics.UI.Gtk.Gdk.EventM (TimeStamp(..)) import Graphics.UI.Editor.MakeEditor (mkField, FieldDescription(..), buildEditor) import Graphics.UI.Editor.Simple (stringEditor, textEditor, okCancelFields) @@ -166,6 +161,9 @@ import qualified Control.Monad.Reader as Gtk (liftIO) import qualified Data.Text as T (pack, stripPrefix, unpack) import Data.Monoid ((<>)) +import Graphics.UI.Gtk.Abstract.Widget (buttonReleaseEvent) +import Data.Foldable (forM_)+import Control.Arrow (Arrow(..)) --import Debug.Trace (trace) trace (a::Text) b = b @@ -173,28 +171,11 @@ groupPrefix = "_group_" withoutGroupPrefix :: Text -> Text -withoutGroupPrefix s = case groupPrefix `T.stripPrefix` s of - Nothing -> s - Just s' -> s' +withoutGroupPrefix s = fromMaybe s (groupPrefix `T.stripPrefix` s) initGtkRc :: IO () -#ifdef MIN_VERSION_gtk3 initGtkRc = return () -#else -initGtkRc = rcParseString ("style \"leksah-close-button-style\"\n" ++ - "{\n" ++ - " GtkButton::default-border = 0\n" ++ - " GtkButton::default-outside-border = 0\n" ++ - " GtkButton::inner-border = 0\n" ++ - " GtkWidget::focus-padding = 0\n" ++ - " GtkWidget::focus-line-width = 0\n" ++ - " xthickness = 0\n" ++ - " ythickness = 0\n" ++ - " padding = 0\n" ++ - "}\n" ++ - "widget \"*.leksah-close-button\" style \"leksah-close-button-style\"") -#endif removePaneAdmin :: RecoverablePane alpha beta delta => alpha -> delta () removePaneAdmin pane = do @@ -219,29 +200,28 @@ setPaneMapSt (Map.insert (paneName pane) (pp, conn) paneMap') setPanesSt (Map.insert (paneName pane) (PaneC pane) panes') return True - else do - trace ("ViewFrame>addPaneAdmin:pane with this name already exist" <> paneName pane) $ - return False + else trace+ ("ViewFrame>addPaneAdmin:pane with this name already exist" <>+ paneName pane)+ $ return False getPanePrim :: RecoverablePane alpha beta delta => delta (Maybe alpha) getPanePrim = do selectedPanes <- getPanes - if null selectedPanes || length selectedPanes > 1 - then return Nothing - else (return (Just $ head selectedPanes)) + if null selectedPanes || length selectedPanes > 1+ then return Nothing+ else return (Just $ head selectedPanes) -getPanes :: RecoverablePane alpha beta delta => delta ([alpha]) +getPanes :: RecoverablePane alpha beta delta => delta [alpha] getPanes = do panes' <- getPanesSt - return (catMaybes - $ map (\(PaneC p) -> cast p) - $ Map.elems panes') + return (mapMaybe (\ (PaneC p) -> cast p) (Map.elems panes')) -notebookInsertOrdered :: PaneMonad alpha => (NotebookClass self, WidgetClass child) - => self - -> child -- child - the Widget to use as the contents of the page. +notebookInsertOrdered :: PaneMonad alpha => (NotebookClass self, WidgetClass child) + => self + -> child -- child - the Widget to use as the contents of the page. -> Text - -> Maybe Label -- the label for the page as Text or Label + -> Maybe Label -- the label for the page as Text or Label -> Bool -> alpha () notebookInsertOrdered nb widget labelStr mbLabel isGroup = do @@ -251,11 +231,12 @@ menuLabel <- liftIO $ labelNew (Just labelStr) numPages <- liftIO $ notebookGetNPages nb mbWidgets <- liftIO $ mapM (notebookGetNthPage nb) [0 .. (numPages-1)] - let widgets = map (\v -> forceJust v "ViewFrame.notebookInsertOrdered: no widget") mbWidgets + let widgets = map (`forceJust` "ViewFrame.notebookInsertOrdered: no widget") mbWidgets labelStrs <- liftIO $ mapM widgetGetName widgets - let pos = case findIndex (\ s -> withoutGroupPrefix s > withoutGroupPrefix labelStr) labelStrs of - Just i -> i - Nothing -> -1 + let pos = fromMaybe (-1)+ (findIndex+ (\ s -> withoutGroupPrefix s > withoutGroupPrefix labelStr)+ labelStrs) labelBox <- if isGroup then groupLabel labelStr else mkLabelBox label labelStr liftIO $ do markLabel nb labelBox False @@ -286,7 +267,6 @@ Just i -> imageNewFromPixbuf i Nothing -> imageNewFromStock stockClose IconSizeMenu -#ifdef MIN_VERSION_gtk3 provider <- cssProviderNew cssProviderLoadFromString provider ( ".button {\n" <> @@ -306,13 +286,13 @@ context <- widgetGetStyleContext image styleContextAddProvider context provider 600 widgetSetVAlign tabButton AlignCenter - widgetSetVAlign lbl AlignCenter -#endif + widgetSetVAlign lbl AlignCenter+ containerSetBorderWidth tabButton 0 containerAdd tabButton image - boxPackStart innerBox tabButton PackNatural 0 boxPackStart innerBox lbl PackGrow 0 + boxPackStart innerBox tabButton PackNatural 5 containerAdd labelBox innerBox dragSourceSet labelBox [Button1] [ActionCopy,ActionMove] @@ -325,13 +305,17 @@ return (tabButton,labelBox) cl <- runInIO closeHandler liftIO $ on tb buttonActivated (cl ()) + liftIO $ on lb buttonReleaseEvent $ do + modifiers <- eventModifierMouse + let middleButton = Button2 + when (middleButton `elem` modifiers) (liftIO $ cl ()) + return False return lb where closeHandler :: PaneMonad alpha => () -> alpha () closeHandler _ = case groupPrefix `T.stripPrefix` paneName of - Just group -> do - closeGroup group + Just group -> closeGroup group Nothing -> do (PaneC pane) <- paneFromName paneName closePane pane @@ -358,7 +342,7 @@ Nothing -> return () Just container -> do children <- containerGetChildren container - let label = castToLabel $ forceHead (tail children) "ViewFrame>>markLabel: empty children" + let label = castToLabel $ forceHead children "ViewFrame>>markLabel: empty children" (text :: Text) <- widgetGetName topWidget labelSetUseMarkup (castToLabel label) True labelSetMarkup (castToLabel label) @@ -372,7 +356,7 @@ bufs <- getPanesSt let ind = foldr (\(PaneC buf) ind -> if primPaneName buf == bn - then max ind ((getAddedIndex buf) + 1) + then max ind (getAddedIndex buf + 1) else ind) 0 (Map.elems bufs) if ind == 0 @@ -451,21 +435,20 @@ mbPanePath <- getActivePanePath case mbPanePath of Nothing -> return () - Just panePath -> do - viewSplit' panePath dir + Just panePath -> viewSplit' panePath dir viewSplit' :: PaneMonad alpha => PanePath -> Direction -> alpha () viewSplit' panePath dir = do l <- getLayout case layoutFromPath panePath l of - (TerminalP _ _ _ (Just _) _) -> trace ("ViewFrame>>viewSplit': can't split detached: ") return () + (TerminalP _ _ _ (Just _) _) -> trace "ViewFrame>>viewSplit': can't split detached: " return () _ -> do - activeNotebook <- (getNotebook' "viewSplit") panePath + activeNotebook <- getNotebook' "viewSplit" panePath ind <- liftIO $ notebookGetCurrentPage activeNotebook mbPD <- do mbParent <- liftIO $ widgetGetParent activeNotebook case mbParent of - Nothing -> trace ("ViewFrame>>viewSplit': parent not found: ") return Nothing + Nothing -> trace "ViewFrame>>viewSplit': parent not found: " return Nothing Just parent -> do (nb,paneDir) <- do let (name,altname,paneDir, @@ -495,8 +478,8 @@ widgetSetName nb (altname :: Text) panedPack2 newpane nb True True nbIndex <- if parent `isA` gTypeNotebook - then notebookPageNum ((castToNotebook' "viewSplit'1") parent) activeNotebook - else trace ("ViewFrame>>viewSplit': parent not a notebook: ") return Nothing + then notebookPageNum (castToNotebook' "viewSplit'1" parent) activeNotebook + else trace "ViewFrame>>viewSplit': parent not a notebook: " return Nothing containerRemove (castToContainer parent) activeNotebook widgetSetName activeNotebook (name :: Text) panedPack1 newpane activeNotebook True True @@ -506,11 +489,11 @@ | dir `elem` [TopP, LeftP] -> liftIO $ panedPack1 (castToPaned parent) np True True | otherwise -> liftIO $ panedPack2 (castToPaned parent) np True True (GroupP group:_, Just n) -> do - liftIO $ notebookInsertPage ((castToNotebook' "viewSplit' 2") parent) np group n + liftIO $ notebookInsertPage (castToNotebook' "viewSplit' 2" parent) np group n label <- groupLabel group - liftIO $ notebookSetTabLabel ((castToNotebook' "viewSplit' 3") parent) np label + liftIO $ notebookSetTabLabel (castToNotebook' "viewSplit' 3" parent) np label label2 <- groupMenuLabel group - liftIO $ notebookSetMenuLabel ((castToNotebook' "viewSplit' 4") parent) np label2 + liftIO $ notebookSetMenuLabel (castToNotebook' "viewSplit' 4" parent) np label2 return () ([], _) -> do liftIO $ boxPackStart (castToBox parent) np PackGrow 0 @@ -521,9 +504,9 @@ widgetGrabFocus activeNotebook case nbi of Just n -> do - notebookSetCurrentPage ((castToNotebook' "viewSplit' 5") parent) n + notebookSetCurrentPage (castToNotebook' "viewSplit' 5" parent) n return () - _ -> trace ("ViewFrame>>viewSplit': parent not a notebook2: ")return () + _ -> trace "ViewFrame>>viewSplit': parent not a notebook2: "return () return (nb,paneDir) handleFunc <- runInIO (handleNotebookSwitch nb) liftIO $ after nb switchPage handleFunc @@ -547,40 +530,37 @@ viewCollapse :: PaneMonad alpha => alpha () viewCollapse = do mbPanePath <- getActivePanePath - case mbPanePath of - Nothing -> return () - Just panePath -> do - viewCollapse' panePath + forM_ mbPanePath viewCollapse' viewCollapse' :: PaneMonad alpha => PanePath -> alpha () viewCollapse' panePath = trace "viewCollapse' called" $ do layout1 <- getLayoutSt case layoutFromPath panePath layout1 of - (TerminalP _ _ _ (Just _) _) -> trace ("ViewFrame>>viewCollapse': can't collapse detached: ") + (TerminalP _ _ _ (Just _) _) -> trace "ViewFrame>>viewCollapse': can't collapse detached: " return () _ -> do let newPanePath = init panePath let mbOtherSidePath = otherSide panePath case mbOtherSidePath of - Nothing -> trace ("ViewFrame>>viewCollapse': no other side path found: ") return () + Nothing -> trace "ViewFrame>>viewCollapse': no other side path found: " return () Just otherSidePath -> do nbop <- getNotebookOrPaned otherSidePath castToWidget let nb = if nbop `isA` gTypeNotebook - then Just ((castToNotebook' "viewCollapse' 0") nbop) + then Just (castToNotebook' "viewCollapse' 0" nbop) else Nothing case nb of - Nothing -> trace ("ViewFrame>>viewCollapse': other side path not collapsedXX: ") $ + Nothing -> trace "ViewFrame>>viewCollapse': other side path not collapsedXX: " $ case layoutFromPath otherSidePath layout1 of - VerticalP _ _ _ -> do + VerticalP{} -> do viewCollapse' (otherSidePath ++ [SplitP LeftP]) viewCollapse' panePath - HorizontalP _ _ _ -> do + HorizontalP{} -> do viewCollapse' (otherSidePath ++ [SplitP TopP]) viewCollapse' panePath - otherwise -> trace ("ViewFrame>>viewCollapse': impossible1 ") return () + otherwise -> trace "ViewFrame>>viewCollapse': impossible1 " return () Just otherSideNotebook -> do paneMap <- getPaneMapSt - activeNotebook <- (getNotebook' "viewCollapse' 1") panePath + activeNotebook <- getNotebook' "viewCollapse' 1" panePath -- 1. Move panes and groups to one side (includes changes to paneMap and layout) let paneNamesToMove = map (\(w,(p,_)) -> w) $filter (\(w,(p,_)) -> otherSidePath == p) @@ -604,7 +584,7 @@ Nothing -> error "collapse: no grandparent" Just grandparent -> do nbIndex <- if grandparent `isA` gTypeNotebook - then liftIO $ notebookPageNum ((castToNotebook' "viewCollapse'' 1") grandparent) parent + then liftIO $ notebookPageNum (castToNotebook' "viewCollapse'' 1" grandparent) parent else return Nothing liftIO $ containerRemove (castToContainer grandparent) parent liftIO $ containerRemove (castToContainer parent) activeNotebook @@ -617,11 +597,11 @@ (SplitP dir, _) | dir == BottomP || dir == RightP -> liftIO $ panedPack2 (castToPaned grandparent) activeNotebook True True (GroupP group, Just n) -> do - liftIO $ notebookInsertPage ((castToNotebook' "viewCollapse'' 2") grandparent) activeNotebook group n + liftIO $ notebookInsertPage (castToNotebook' "viewCollapse'' 2" grandparent) activeNotebook group n label <- groupLabel group liftIO $ do - notebookSetTabLabel ((castToNotebook' "viewCollapse'' 3") grandparent) activeNotebook label - notebookSetCurrentPage ((castToNotebook' "viewCollapse'' 4") grandparent) n + notebookSetTabLabel (castToNotebook' "viewCollapse'' 3" grandparent) activeNotebook label + notebookSetCurrentPage (castToNotebook' "viewCollapse'' 4" grandparent) n return () _ -> error "collapse: Unable to find page index" liftIO $ widgetSetName activeNotebook $panePathElementToWidgetName lasPathElem @@ -639,9 +619,9 @@ getGroupsFrom :: PanePath -> PaneLayout -> [Text] getGroupsFrom path layout = case layoutFromPath path layout of - t@(TerminalP _ _ _ _ _) -> Map.keys (paneGroups t) - HorizontalP _ _ _ -> [] - VerticalP _ _ _ -> [] + t@(TerminalP{}) -> Map.keys (paneGroups t) + HorizontalP{} -> [] + VerticalP{} -> [] viewNewGroup :: PaneMonad alpha => alpha () viewNewGroup = do @@ -690,11 +670,7 @@ dia <- dialogNew set dia [ windowTransientFor := parent , windowTitle := ("Enter group name" :: Text) ] -#ifdef MIN_VERSION_gtk3 upper <- castToVBox <$> dialogGetContentArea dia -#else - upper <- castToVBox <$> dialogGetUpper dia -#endif lower <- castToHBox <$> dialogGetActionArea dia (widget,inj,ext,_) <- buildEditor moduleFields "" (widget2,_,_,notifier) <- buildEditor okCancelFields () @@ -707,7 +683,7 @@ boxPackStart lower widget2 PackNatural 7 widgetShowAll dia resp <- dialogRun dia - value <- ext ("") + value <- ext "" widgetDestroy dia case resp of ResponseOk | value /= Just "" -> return value @@ -716,10 +692,10 @@ moduleFields :: FieldDescription Text moduleFields = VFD emptyParams [ mkField - (paraName <<<- ParaName ("New group ") + (paraName <<<- ParaName "New group " $ emptyParams) id - (\ a b -> a) + const (textEditor (const True) True)] viewNest :: PaneMonad alpha => Text -> alpha () @@ -727,12 +703,11 @@ mbPanePath <- getActivePanePath case mbPanePath of Nothing -> return () - Just panePath -> do - viewNest' panePath group + Just panePath -> viewNest' panePath group viewNest' :: PaneMonad alpha => PanePath -> Text -> alpha () viewNest' panePath group = do - activeNotebook <- (getNotebook' "viewNest' 1") panePath + activeNotebook <- getNotebook' "viewNest' 1" panePath mbParent <- liftIO $ widgetGetParent activeNotebook case mbParent of Nothing -> return () @@ -761,7 +736,7 @@ Just path -> do panesMap <- getPaneMapSt let nameAndpathList = filter (\(a,pp) -> path `isPrefixOf` pp) - $ map (\(a,b) -> (a,fst b)) (Map.assocs panesMap) + $ map (second fst) (Map.assocs panesMap) continue <- case nameAndpathList of (_:_) -> liftIO $ do md <- messageDialogNew (Just mainWindow) [] MessageQuestion ButtonsYesNo @@ -773,9 +748,9 @@ otherwise -> return False [] -> return True when continue $ do - panes <- mapM paneFromName $ map fst nameAndpathList + panes <- mapM (paneFromName . fst) nameAndpathList results <- mapM (\ (PaneC p) -> closePane p) panes - when (foldr (&&) True results) $ do + when (and results) $ do nbOrPaned <- getNotebookOrPaned path castToWidget mbParent <- liftIO $ widgetGetParent nbOrPaned case mbParent of @@ -791,12 +766,11 @@ mbPanePath <- getActivePanePath case mbPanePath of Nothing -> return Nothing - Just panePath -> do - viewDetach' panePath (T.pack id) + Just panePath -> viewDetach' panePath (T.pack id) viewDetach' :: PaneMonad alpha => PanePath -> Text -> alpha (Maybe (Window,Widget)) viewDetach' panePath id = do - activeNotebook <- (getNotebook' "viewDetach'") panePath + activeNotebook <- getNotebook' "viewDetach'" panePath mbParent <- liftIO $ widgetGetParent activeNotebook case mbParent of Nothing -> return Nothing @@ -810,8 +784,7 @@ set window [ windowTitle := ("Leksah detached window" :: Text) , widgetName := Just id ] case size of - Just (width, height) -> do - windowSetDefaultSize window width height + Just (width, height) -> windowSetDefaultSize window width height Nothing -> do (Rectangle _ _ curWidth curHeight) <- widgetGetAllocation activeNotebook windowSetDefaultSize window curWidth curHeight @@ -839,7 +812,7 @@ setWindowsSt $ delete window windows return False Just pp -> do - nb <- (getNotebook' "handleReattach") pp + nb <- getNotebook' "handleReattach" pp parent <- getNotebookOrPaned (init pp) castToContainer liftIO $ containerRemove (castToContainer window) nb liftIO $ containerAdd parent nb @@ -849,7 +822,7 @@ case last pp of GroupP groupName -> do label <- groupLabel groupName - liftIO $ notebookSetTabLabel ((castToNotebook' "handleReattach") parent) nb label + liftIO $ notebookSetTabLabel (castToNotebook' "handleReattach" parent) nb label otherwise -> return () return False -- "now destroy the window" @@ -860,10 +833,10 @@ case mbPanePath of Nothing -> return Nothing Just panePath -> do - activeNotebook <- (getNotebook' "getActiveWindow") panePath + activeNotebook <- getNotebook' "getActiveWindow" panePath top <- liftIO $ widgetGetToplevel activeNotebook - if (top `isA` gTypeWindow) - then return . Just $ castToWindow top + if top `isA` gTypeWindow+ then return . Just $ castToWindow top else return Nothing getActiveScreen :: PaneMonad alpha => alpha (Maybe Screen) @@ -893,7 +866,7 @@ panes' <- getPanesSt foldM (\r (PaneC p) -> do n2 <- liftIO $ widgetGetName (getTopWidget p) - return (if n1 == n2 then (Just (PaneC p)) else r)) + return (if n1 == n2 then Just (PaneC p) else r)) Nothing (Map.elems panes') @@ -905,19 +878,16 @@ viewMove direction = do mbPane <- getActivePaneSt case mbPane of - Nothing -> do - return () + Nothing -> return () Just (paneName,_) -> do (PaneC pane) <- paneFromName paneName mbPanePath <- getActivePanePath case mbPanePath of - Nothing -> do - return () + Nothing -> return () Just panePath -> do layout <- getLayoutSt case findMoveTarget panePath layout direction of - Nothing -> do - return () + Nothing -> return () Just moveTo -> move moveTo pane -- @@ -930,7 +900,7 @@ canMove reversedPath = case head reversedPath of SplitP d | d == oppositeDir - -> SplitP direction : (tail reversedPath) + -> SplitP direction : tail reversedPath GroupP group -> [] _ -> canMove (tail reversedPath) basePath = reverse (canMove $ reverse panePath) @@ -945,7 +915,7 @@ move :: RecoverablePane alpha beta delta => PanePath -> alpha -> delta () move toPanePath pane = do let name = paneName pane - toNB <- (getNotebook' "move") toPanePath + toNB <- getNotebook' "move" toPanePath move' (name,toNB) -- @@ -958,16 +928,16 @@ layout <- getLayout frameState <- getFrameState case groupPrefix `T.stripPrefix` paneName of - Just group -> do + Just group -> case findGroupPath group layout of Nothing -> trace ("ViewFrame>>move': group not found: " <> group) return () Just fromPath -> do groupNBOrPaned <- getNotebookOrPaned fromPath castToWidget - fromNB <- (getNotebook' "move'") (init fromPath) - case toNB `Map.lookup` (panePathFromNB frameState) of + fromNB <- getNotebook' "move'" (init fromPath) + case toNB `Map.lookup` panePathFromNB frameState of Nothing -> trace "ViewFrame>>move': panepath for Notebook not found1" return () - Just toPath -> do - when (fromNB /= toNB && not (isPrefixOf fromPath toPath)) $ do + Just toPath -> + when (fromNB /= toNB && not (fromPath `isPrefixOf` toPath)) $ do mbNum <- liftIO $ notebookPageNum fromNB groupNBOrPaned case mbNum of Nothing -> trace "ViewFrame>>move': group notebook not found" return () @@ -984,8 +954,8 @@ Nothing -> case paneName `Map.lookup` panes of Nothing -> trace ("ViewFrame>>move': pane not found: " <> paneName) return () - Just (PaneC pane) -> do - case toNB `Map.lookup` (panePathFromNB frameState) of + Just (PaneC pane) -> + case toNB `Map.lookup` panePathFromNB frameState of Nothing -> trace "ViewFrame>>move': panepath for Notebook not found2" return () Just toPath -> case paneName `Map.lookup`paneMap of @@ -994,7 +964,7 @@ Just (fromPath,_) -> do let child = getTopWidget pane (fromPane,cid) <- guiPropertiesFromName paneName - fromNB <- (getNotebook' "move'") fromPane + fromNB <- getNotebook' "move'" fromPane when (fromNB /= toNB) $ do mbNum <- liftIO $ notebookPageNum fromNB child case mbNum of @@ -1033,15 +1003,17 @@ case mbParent of Just parent -> do setCurrentNotebookPages parent - if parent `isA` gTypeNotebook - then do - mbPageNum <- notebookPageNum ((castToNotebook' "setCurrentNotebookPage 1") parent) widget - case mbPageNum of - Just pageNum -> do - notebookSetCurrentPage ((castToNotebook' "setCurrentNotebookPage 2") parent) pageNum - return () - Nothing -> return () - else return () + when (parent `isA` gTypeNotebook) $ do+ mbPageNum <- notebookPageNum+ (castToNotebook' "setCurrentNotebookPage 1" parent)+ widget+ case mbPageNum of+ Just pageNum -> do+ notebookSetCurrentPage+ (castToNotebook' "setCurrentNotebookPage 2" parent)+ pageNum+ return ()+ Nothing -> return () Nothing -> return () -- @@ -1069,7 +1041,7 @@ p <- panePathForGroup id l <- getLayout return (getBestPanePath p l) - + -- -- | Construct a new notebook -- @@ -1105,8 +1077,8 @@ DragContext -> Point -> InfoId -> - TimeStamp -> - (SelectionDataM ()) + TimeStamp ->+ SelectionDataM () dragFunc nb func cont point id timeStamp = do mbText <- selectionDataGetText case mbText of @@ -1116,10 +1088,10 @@ return () terminalsWithPanePath :: PaneLayout -> [(PanePath,PaneLayout)] -terminalsWithPanePath pl = map (\ (pp,l) -> (reverse pp,l)) $ terminalsWithPP [] pl +terminalsWithPanePath pl = map (first reverse) $ terminalsWithPP [] pl where - terminalsWithPP pp t@(TerminalP groups _ _ _ _) = [(pp,t)] - ++ concatMap (terminalsFromGroup pp) (Map.toList groups) + terminalsWithPP pp t@(TerminalP groups _ _ _ _) = (pp, t) : concatMap (terminalsFromGroup pp)+ (Map.toList groups) terminalsWithPP pp (VerticalP l r _) = terminalsWithPP (SplitP LeftP : pp) l ++ terminalsWithPP (SplitP RightP : pp) r terminalsWithPP pp (HorizontalP t b _) = terminalsWithPP (SplitP TopP : pp) t @@ -1129,31 +1101,31 @@ findGroupPath :: Text -> PaneLayout -> Maybe PanePath findGroupPath group layout = let terminalPairs = terminalsWithPanePath layout - in case (filter filterFunc terminalPairs) of + in case filter filterFunc terminalPairs of [] -> Nothing - (pp,_) : [] -> Just (pp ++ [GroupP group]) + [(pp, _)] -> Just (pp ++ [GroupP group]) _ -> error ("ViewFrame>>group name not unique: " ++ T.unpack group) where - filterFunc (_,(TerminalP groups _ _ _ _)) = group `Set.member` Map.keysSet groups - filterFunc _ = error "ViewFrame>>findGroupPath: impossible" + filterFunc (_, TerminalP groups _ _ _ _) = group `Set.member` Map.keysSet groups + filterFunc _ = error "ViewFrame>>findGroupPath: impossible" findDetachedPath :: Text -> PaneLayout -> Maybe PanePath findDetachedPath id layout = let terminalPairs = terminalsWithPanePath layout - in case (filter filterFunc terminalPairs) of + in case filter filterFunc terminalPairs of [] -> Nothing - (pp,_) : [] -> Just pp + [(pp, _)] -> Just pp _ -> error ("ViewFrame>>window id not unique: " ++ T.unpack id) where - filterFunc (_,(TerminalP _ _ _ (Just lid) _)) = lid == id - filterFunc _ = False + filterFunc (_, TerminalP _ _ _ (Just lid) _) = lid == id + filterFunc _ = False allGroupNames :: PaneLayout -> Set Text allGroupNames pl = Set.unions $ map getFunc (terminalsWithPanePath pl) where - getFunc (_,(TerminalP groups _ _ _ _)) = Map.keysSet groups - getFunc _ = error "ViewFrame>>allGroupNames: impossible" + getFunc (_, TerminalP groups _ _ _ _) = Map.keysSet groups + getFunc _ = error "ViewFrame>>allGroupNames: impossible" -- @@ -1240,9 +1212,9 @@ Nothing -> return Nothing Just (paneName,_) -> do (pp,_) <- guiPropertiesFromName paneName - return (Just (pp)) + return (Just pp) -getActivePanePathOrStandard :: PaneMonad alpha => StandardPath -> alpha (PanePath) +getActivePanePathOrStandard :: PaneMonad alpha => StandardPath -> alpha PanePath getActivePanePathOrStandard sp = do mbApp <- getActivePanePath case mbApp of @@ -1259,7 +1231,7 @@ mbPanePath <- getActivePanePath case mbPanePath of Just panePath -> do - nb <- (getNotebook' "getActiveNotebook") panePath + nb <- getNotebook' "getActiveNotebook" panePath return (Just nb) Nothing -> return Nothing @@ -1418,38 +1390,38 @@ adjust' (SplitP LeftP:r) (VerticalP lp rp _) = VerticalP (adjust' r lp) rp 0 adjust' (SplitP RightP:r) (VerticalP lp rp _) = VerticalP lp (adjust' r rp) 0 adjust' p l = error $"inconsistent layout (adjust) " ++ show p ++ " " ++ show l - adjustPaneGroupLayout p group = adjust' p group + adjustPaneGroupLayout = adjust' -- -- | Get the widget from a list of strings -- -widgetFromPath :: Widget -> [Text] -> IO (Widget) +widgetFromPath :: Widget -> [Text] -> IO Widget widgetFromPath w [] = return w widgetFromPath w path = do children <- containerGetChildren (castToContainer w) chooseWidgetFromPath children path -chooseWidgetFromPath :: [Widget] -> [Text] -> IO (Widget) -chooseWidgetFromPath _ [] = error $"Cant't find widget (empty path)" +chooseWidgetFromPath :: [Widget] -> [Text] -> IO Widget +chooseWidgetFromPath _ [] = error "Cant't find widget (empty path)" chooseWidgetFromPath widgets (h:t) = do names <- mapM widgetGetName widgets - let mbiInd = findIndex (== h) names + let mbiInd = elemIndex h names case mbiInd of Nothing -> error $"Cant't find widget path " ++ show (h:t) ++ " found only " ++ show names Just ind -> widgetFromPath (widgets !! ind) t -widgetGet :: PaneMonad alpha => [Text] -> (Widget -> b) -> alpha (b) +widgetGet :: PaneMonad alpha => [Text] -> (Widget -> b) -> alpha b widgetGet strL cf = do windows <- getWindowsSt r <- liftIO $chooseWidgetFromPath (map castToWidget windows) strL return (cf r) -widgetGetRel :: Widget -> [Text] -> (Widget -> b) -> IO (b) +widgetGetRel :: Widget -> [Text] -> (Widget -> b) -> IO b widgetGetRel w sl cf = do r <- widgetFromPath w sl return (cf r) -getUIAction :: PaneMonad alpha => Text -> (Action -> a) -> alpha (a) +getUIAction :: PaneMonad alpha => Text -> (Action -> a) -> alpha a getUIAction str f = do uiManager <- getUiManagerSt liftIO $ do
src/Text/PrinterParser.hs view
@@ -201,13 +201,13 @@ -- | Things that can be pretty-printed class Pretty a where- -- | Pretty-print something in isolation.- pretty :: a -> PP.Doc- -- | Pretty-print something in a precedence context.- prettyPrec :: Int -> a -> PP.Doc- pretty = prettyPrec 0- prettyPrec _ = pretty- + -- | Pretty-print something in isolation.+ pretty :: a -> PP.Doc+ -- | Pretty-print something in a precedence context.+ prettyPrec :: Int -> a -> PP.Doc+ pretty = prettyPrec 0+ prettyPrec _ = pretty+ emptyPrinter :: () -> PP.Doc emptyPrinter _ = PP.empty