packages feed

traypoweroff 0.9.0 → 1.0.0

raw patch · 2 files changed

+58/−22 lines, 2 files

Files

src/TrayPowerOff.lhs view
@@ -11,7 +11,7 @@     ( statusIconNewFromFile, statusIconActivate, statusIconPopupMenu ) import Graphics.UI.Gtk.ActionMenuToolbar.Action( actionNew, actionActivated ) import Graphics.UI.Gtk.ActionMenuToolbar.ActionGroup-    ( actionGroupNew, actionGroupAddAction )+    ( ActionGroup, actionGroupNew, actionGroupAddAction ) import Graphics.UI.Gtk.ActionMenuToolbar.UIManager     ( uiManagerNew, uiManagerAddUiFromString, uiManagerGetWidget     , uiManagerInsertActionGroup )@@ -20,10 +20,35 @@ import Data.Maybe( fromJust ) import System.Cmd( system ) import System.Exit( ExitCode(..) )+import Control.Monad( mapM_ ) \end{code}  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code}+data MenuItem = MenuItem { menuId :: String+                         , menuText :: String+                         , menuAction :: IO () }+\end{code}++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+\begin{code}+menuXml :: String+menuXml = "<popup>\+\           <menuitem action=\"AOFF\" />\+\           <menuitem action=\"AREB\" />\+\           <menuitem action=\"ASUS\" />\+\           <menuitem action=\"AHIB\" />\+\          </popup>"   ++menuItems :: [MenuItem]+menuItems = [ MenuItem "AOFF" "PowerOff" powerOffAction+            , MenuItem "AREB" "Reboot" rebootAction +            , MenuItem "ASUS" "Suspend" suspendAction+            , MenuItem "AHIB" "Hibernate" hibernateAction ]+\end{code}++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+\begin{code} main :: IO() main = do   initGUI@@ -31,18 +56,11 @@   iconfile <- getDataFileName "icons/icon64.png"   icon <- statusIconNewFromFile iconfile -  aoff <- actionNew "AOFF" "PowerOff" Nothing Nothing-  on aoff actionActivated powerOffAction-  areb <- actionNew "AREB" "Reboot" Nothing Nothing-  on areb actionActivated rebootAction-   group <- actionGroupNew "AGRP"--  actionGroupAddAction group aoff-  actionGroupAddAction group areb+  mapM_ (createMenuItem group) menuItems    uiman <- uiManagerNew-  uiManagerAddUiFromString uiman uiDecl+  uiManagerAddUiFromString uiman menuXml   uiManagerInsertActionGroup uiman group 0    pop <- fmap (castToMenu . fromJust) $ uiManagerGetWidget uiman "/popup"@@ -54,25 +72,23 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code}-menuPopUp :: Menu -> Maybe MouseButton -> TimeStamp -> IO ()-menuPopUp menu _ _ = do-  menuPopup menu Nothing+createMenuItem :: ActionGroup -> MenuItem -> IO ()+createMenuItem group item = do+  action <- actionNew (menuId item) (menuText item) Nothing Nothing+  on action actionActivated (menuAction item)+  actionGroupAddAction group action  \end{code}  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code}-menuActivate :: Menu -> IO ()-menuActivate menu = do-  menuPopup menu Nothing+menuPopUp :: Menu -> Maybe MouseButton -> TimeStamp -> IO ()+menuPopUp menu _ _ = menuPopup menu Nothing \end{code}  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code}-uiDecl :: [Char]-uiDecl = "<popup>\-\           <menuitem action=\"AOFF\" />\-\           <menuitem action=\"AREB\" />\-\          </popup>"   +menuActivate :: Menu -> IO ()+menuActivate menu = menuPopup menu Nothing \end{code}  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@ -90,6 +106,26 @@ rebootAction :: IO () rebootAction = do   err <- system "sudo /sbin/reboot"+  case err of+    ExitFailure n -> putStrLn $ "Error code: " ++ show n+    ExitSuccess -> return ()+\end{code}++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+\begin{code}+suspendAction :: IO ()+suspendAction = do+  err <- system "sudo /usr/sbin/pm-suspend"+  case err of+    ExitFailure n -> putStrLn $ "Error code: " ++ show n+    ExitSuccess -> return ()+\end{code}++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+\begin{code}+hibernateAction :: IO ()+hibernateAction = do+  err <- system "sudo /usr/sbin/pm-hibernate"   case err of     ExitFailure n -> putStrLn $ "Error code: " ++ show n     ExitSuccess -> return ()
traypoweroff.cabal view
@@ -1,5 +1,5 @@ name:			traypoweroff-version:		0.9.0+version:		1.0.0 cabal-Version:		>= 1.6 description:		PowerOff Tray Icon license:		BSD3