From 1669ca112fc534833537d8fcf1fac31a443c7aa6 Mon Sep 17 00:00:00 2001 From: Adam Vogt Date: Tue, 10 Mar 2015 19:10:36 +0100 Subject: =?UTF-8?q?add=20ConfirmPrompt=20(Antoine=20Beaupr=C3=A9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ignore-this: 65d74f05e82c66a3ff4f021d19ceb626 darcs-hash:20150310181036-1499c-1b9af832d4eefa7806e03aae86aa72868341e136.gz --- XMonad/Prompt/ConfirmPrompt.hs | 51 ++++++++++++++++++++++++++++++++++++++++++ xmonad-contrib.cabal | 1 + 2 files changed, 52 insertions(+) create mode 100644 XMonad/Prompt/ConfirmPrompt.hs diff --git a/XMonad/Prompt/ConfirmPrompt.hs b/XMonad/Prompt/ConfirmPrompt.hs new file mode 100644 index 0000000..650b62a --- /dev/null +++ b/XMonad/Prompt/ConfirmPrompt.hs @@ -0,0 +1,51 @@ +----------------------------------------------------------------------------- +-- | +-- Module : XMonad.Prompt.ConfirmPrompt +-- Copyright : (C) 2015 Antoine Beaupré +-- License : BSD3 +-- +-- Maintainer : Antoine Beaupré +-- Stability : unstable +-- Portability : unportable +-- +-- A module for setting up simple confirmation prompts for keybindings. +-- +----------------------------------------------------------------------------- +module XMonad.Prompt.ConfirmPrompt (confirmPrompt + -- * Usage + -- $usage + , module XMonad.Prompt + -- * Use case: confirming exit + -- $tip + , EnterPrompt + ) where + +import XMonad (X) +import XMonad.Prompt (XPConfig, XPrompt, showXPrompt, mkXPrompt, mkComplFunFromList) + +{- $usage + +This module makes it easy to add a confirmation prompt for specific +actions. Instead of just running the action, a simple confirmation +prompt will be created using 'XMonad.Prompt' primitives. The action +will then run normally if the user confirms. +-} + +{- $tip +This should be used something like this: + +> ... +> , ((modm , xK_l), confirmPrompt defaultXPConfig "exit" $ io (exitWith ExitSuccess)) +> ... +-} + +{- | Customized 'XPrompt' prompt that will ask to confirm the given string -} +data EnterPrompt = EnterPrompt String +instance XPrompt EnterPrompt where + showXPrompt (EnterPrompt n) = "Confirm " ++ n ++ " (esc/ENTER)" + +{- | Prompt the user to confirm a given action. We offer no completion + and simply ask to confirm (ENTER) or cancel (ESCAPE). The actual key + handling is done by mkXPrompt.-} +confirmPrompt :: XPConfig -> String -> X() -> X() +confirmPrompt config app func = mkXPrompt (EnterPrompt app) config (mkComplFunFromList []) $ const func diff --git a/xmonad-contrib.cabal b/xmonad-contrib.cabal index cc605b5..d39f2ec 100644 --- a/xmonad-contrib.cabal +++ b/xmonad-contrib.cabal @@ -277,6 +277,7 @@ library XMonad.Prompt XMonad.Prompt.AppendFile XMonad.Prompt.AppLauncher + XMonad.Prompt.ConfirmPrompt XMonad.Prompt.Directory XMonad.Prompt.DirExec XMonad.Prompt.Email -- cgit v1.2.3