manatee-ircclient 0.0.5 → 0.0.6
raw patch · 2 files changed
+26/−27 lines, 2 filesdep ~manatee-core
Dependency ranges changed: manatee-core
Files
Manatee/Extension/IrcClient/DBus.hs view
@@ -25,7 +25,6 @@ import DBus.MatchRule import DBus.Message (Signal, signalBody) import DBus.Types-import Data.Maybe (fromMaybe) import Data.Text.Lazy (Text, empty) import Graphics.UI.Gtk.General.General import Language.Haskell.TH@@ -33,12 +32,14 @@ import Manatee.Core.TH import Manatee.Extension.IrcClient.Types import Manatee.Toolkit.General.DBus+import Manatee.Toolkit.General.Maybe import Manatee.Toolkit.General.Misc import Network.FastIRC.Types import System.Posix.Process import System.Posix.Types (ProcessID) import qualified Data.ByteString.Char8 as B+import qualified Control.Exception as Exc data IrcDaemonMember = Join | Part@@ -88,8 +89,8 @@ mkFunDec "checkIrcDaemonSignalArgs" (checkSignalArgs ''IrcDaemonMember ''IrcDaemonSignalArgs) -- | Unpack daemon signal from Variant list.--- unpackIrcDaemonSignalArgs_ :: IrcDaemonMember -> [Variant] -> Maybe IrcDaemonSignalArgs -mkFunDec "unpackIrcDaemonSignalArgs_" (unpackVariantList ''IrcDaemonMember ''IrcDaemonSignalArgs)+-- unpackIrcDaemonSignalArgs :: IrcDaemonMember -> [Variant] -> Maybe IrcDaemonSignalArgs +mkFunDec "unpackIrcDaemonSignalArgs" (unpackVariantList ''IrcDaemonMember ''IrcDaemonSignalArgs) -- | Pack daemon signal argument to Variant list. -- packIrcDaemonSignalArgs :: IrcDaemonSignalArgs -> [Variant]@@ -100,8 +101,8 @@ mkFunDec "checkIrcClientSignalArgs" (checkSignalArgs ''IrcClientMember ''IrcClientSignalArgs) -- | Unpack client signal from Variant list.--- unpackIrcClientSignalArgs_ :: IrcClientMember -> [Variant] -> Maybe IrcClientSignalArgs -mkFunDec "unpackIrcClientSignalArgs_" (unpackVariantList ''IrcClientMember ''IrcClientSignalArgs)+-- unpackIrcClientSignalArgs :: IrcClientMember -> [Variant] -> Maybe IrcClientSignalArgs +mkFunDec "unpackIrcClientSignalArgs" (unpackVariantList ''IrcClientMember ''IrcClientSignalArgs) -- | Pack client signal argument to Variant list. -- packIrcClientSignalArgs :: IrcClientSignalArgs -> [Variant]@@ -126,7 +127,7 @@ mkIrcDaemonMatchRule :: Client -> (IrcDaemonMember, IrcDaemonSignalArgs -> IO ()) -> IO () mkIrcDaemonMatchRule client (member, fun) = onSignal client matchRule $ \_ signal -> - fun $ pickIrcDaemonSignalArgs member signal+ pickIrcDaemonSignalArgs member signal >?>= fun where matchRule = mkMatchRule (Just Signal) empty @@ -141,26 +142,22 @@ mkIrcDaemonMatchRules client = mapM_ (mkIrcDaemonMatchRule client) -- | Pick IrcDaemonSignalArgs.-pickIrcDaemonSignalArgs :: IrcDaemonMember -> Signal -> IrcDaemonSignalArgs -pickIrcDaemonSignalArgs member signal = unpackIrcDaemonSignalArgs member $ signalBody signal---- | Unpack daemon signal from Variant list.--- Report error if mismatch.-unpackIrcDaemonSignalArgs member args = - fromMaybe - (error $ "unpackIrcDaemonSignalArgs: Miss pattern for " ++ show member)- (unpackIrcDaemonSignalArgs_ member args)+pickIrcDaemonSignalArgs :: IrcDaemonMember -> Signal -> IO (Maybe IrcDaemonSignalArgs) +pickIrcDaemonSignalArgs member signal = + Exc.catch+ (return $ unpackIrcDaemonSignalArgs member $ signalBody signal)+ (\ (_ :: Exc.SomeException) -> + printDBusMessageError "pickIrcDaemonSignalArgs" (show member)+ >> return Nothing) -- | Pick IrcClientSignalArgs.-pickIrcClientSignalArgs :: IrcClientMember -> Signal -> IrcClientSignalArgs -pickIrcClientSignalArgs member signal = unpackIrcClientSignalArgs member $ signalBody signal---- | Unpack client signal from Variant list.--- Report error if mismatch.-unpackIrcClientSignalArgs member args = - fromMaybe - (error $ "unpackIrcClientSignalArgs: Miss pattern for " ++ show member)- (unpackIrcClientSignalArgs_ member args)+pickIrcClientSignalArgs :: IrcClientMember -> Signal -> IO (Maybe IrcClientSignalArgs) +pickIrcClientSignalArgs member signal = + Exc.catch+ (return $ unpackIrcClientSignalArgs member $ signalBody signal)+ (\ (_ :: Exc.SomeException) ->+ printDBusMessageError "pickIrcClientSignalArgs" (show member)+ >> return Nothing) -- | Build render signal. -- If signal argument not match render member name.@@ -191,7 +188,7 @@ [] -- Use postGUIAsync wrap DBus action to protect gtk+ main thread. onSignal client matchRule $ \_ signal -> - postGUIAsync $ fun $ pickIrcClientSignalArgs member signal+ pickIrcClientSignalArgs member signal >?>= (postGUIAsync . fun) -- | Build irc client match rule for catch signal. mkIrcClientMatchRules :: Client -> [(IrcClientMember, IrcClientSignalArgs -> IO ())] -> IO ()
manatee-ircclient.cabal view
@@ -1,5 +1,5 @@ name: manatee-ircclient-version: 0.0.5+version: 0.0.6 Cabal-Version: >= 1.6 license: GPL-3 license-file: LICENSE@@ -7,6 +7,8 @@ synopsis: IRC client extension for Manatee. description: manatee-ircclient is IRC client extension for Manatee (Haskell/Gtk+ Integrated Live Environment) .+ Video at (Select 720p HD) at : <http://www.youtube.com/watch?v=weS6zys3U8k> <http://v.youku.com/v_show/id_XMjI2MDMzODI4.html>+ . Screenshots at : <http://goo.gl/MkVw> . Manual at : <http://haskell.org/haskellwiki/Manatee>@@ -45,7 +47,7 @@ location: http://patch-tag.com/r/AndyStewart/manatee-ircclient Library- build-depends: base >= 4 && < 5, manatee-core >= 0.0.5, dbus-client >= 0.3 && < 0.4, stm >= 2.1.2.0,+ build-depends: base >= 4 && < 5, manatee-core >= 0.0.6, dbus-client >= 0.3 && < 0.4, stm >= 2.1.2.0, containers >= 0.3.0.0, gtk-serialized-event >= 0.12.0, gtk >= 0.12.0, text >= 0.7.1.0, bytestring >= 0.9.1.5, dbus-core, template-haskell, gtksourceview2 >= 0.12.0, unix >= 2.4.0.0,