packages feed

gt-tools 0.1.2 → 0.1.3

raw patch · 3 files changed

+87/−36 lines, 3 filesdep +haskelinedep +mtldep +unixdep ~basedep ~utf8-string

Dependencies added: haskeline, mtl, unix

Dependency ranges changed: base, utf8-string

Files

Gtc/gtc.hs view
@@ -5,37 +5,88 @@  import Gt.Core import Gt.Langs-import Data.List (intercalate)+import Control.Monad.Trans+import System.Console.Haskeline hiding (catch)+import System.Environment import System.Exit+import System.Posix.Terminal import qualified System.Environment.UTF8 as U -usage :: IO ()+usage :: IO() usage =   do-     mapM_ putStrLn [ "    Usage: 'fromLang' 'toLang' 'text'"-                    , "    Lang is 2 sumbols code, i.e. by, en, ru.\n"-                    , "        --help or -h - to see this help."-                    , "        --list or -l - list of available languages.\n"+     mapM_ putStrLn [ "    Usage:"+                    , "         Standart mode: gtc 'fromLang' 'toLang' 'text'"+                    , "         Interactive mode: gtc -i 'fromLang' 'toLang'"+                    , "             Where 'Lang' is 2 sumbols code, i.e. be, en, ru.\n"+                    , "    Commandline keys:"+                    , "        --interactive or -i - interactive mode."+                    , "        --help        or -h - to see this help."+                    , "        --list        or -l - list of available languages.\n"                     ]      exitWith $ ExitFailure 1 -langs_list :: IO ()+langs_list :: IO() langs_list = putStrLn $ "\nList of available languages:\n\n" ++-             (concat $ zipWith (\l d -> "    " ++ l ++ " - " ++ d ++ "\n") langs langs_descrs)+             concat (zipWith (\l d -> "    " ++ l ++ " - " ++ d ++ "\n") langs langs_descrs) -main :: IO ()+main :: IO() main =   do-     -- TODO: Need to detecet terminal encoding and make convertions-     args <- U.getArgs-     case args of+    -- TODO: Need to detecet terminal encoding and make convertions+    args <- U.getArgs+    case args of -        ["-l"]       -> langs_list-        ["-h"]       -> usage+        "-i":rest -> interactiveLoop rest+        ["-l"]    -> langs_list+        ["-h"]    -> usage -        ["--list"]   -> langs_list-        ["--help"]   -> usage+        "--interactive":rest -> interactiveLoop rest+        ["--list"]           -> langs_list+        ["--help"]           -> usage -        from:to:rest -> do_trans from to (intercalate " " rest) >>= putStrLn+        from:to:[]   -> interactiveLoop' from to+        from:to:rest -> mapM_ ((>>= putStrLn) . do_trans from to) rest         _            -> usage-     exitWith ExitSuccess++    exitWith ExitSuccess++-- Interactive mode processor+interactiveLoop :: [String] -> IO()+interactiveLoop params =+    case params of+        from:to:_ -> interactiveLoop' from to+        _         -> usage++haskelineSettings :: String -> Settings IO+haskelineSettings homedir = Settings {+           complete = noCompletion,+           historyFile = Just $ homedir ++ "/.gtc_history",+           autoAddHistory = True+           }++getHomeDir :: IO FilePath+getHomeDir = catch (getEnv "HOME") (\_ -> return "")++interactiveLoop' :: Lang -> Lang -> IO()+interactiveLoop' from to =+    getHomeDir >>= (\h -> runInputT (haskelineSettings h) loop)+    where+        promptLine :: IO String+        promptLine =+          do+            tty_type <- queryTerminal 0+            if tty_type+                then return "> "+                else return ""++        loop :: InputT IO()+        loop = do+            minput <- lift promptLine >>= getInputLine+            case minput of+                Nothing -> return ()+                Just "" -> loop+                Just input -> do t <- lift $ do_trans from to input+                                 outputStrLn $ replicate 80 '-'+                                 outputStrLn t+                                 loop
Gtg/gtg.hs view
@@ -4,7 +4,6 @@ ) where  import Gt.Core-import Gt.Helpers (decodeString) import Gt.Langs import Graphics.UI.Gtk import Graphics.UI.Gtk.Glade@@ -12,9 +11,9 @@  main :: IO() main = do-    initGUI+    _ <- initGUI     data_dir  <- getDataDir-    Just xml  <- xmlNew $ data_dir ++ "/main.glade"+    Just xml  <- xmlNew $ data_dir ++ "/Gtg/main.glade"      -- Casts     window          <- xmlGetWidget xml castToWindow    "gtg_main"@@ -25,17 +24,17 @@     cmb_dest_lang   <- xmlGetWidget xml castToComboBox  "cmb_dest_lang"     cmb_source_lang <- xmlGetWidget xml castToComboBox  "cmb_source_lang" -    comboBoxSetModelText cmb_dest_lang-    comboBoxSetModelText cmb_source_lang+    _ <- comboBoxSetModelText cmb_dest_lang+    _ <- comboBoxSetModelText cmb_source_lang      mapM_ (comboBoxAppendText cmb_dest_lang  ) (tail langs_descrs)     mapM_ (comboBoxAppendText cmb_source_lang) langs_descrs      -- Actions-    onClicked       btn_close      (widgetDestroy window)-    onClicked       btn_translate  (trans_click ent_trans_text lbl_translation cmb_source_lang cmb_dest_lang)-    onEntryActivate ent_trans_text (trans_click ent_trans_text lbl_translation cmb_source_lang cmb_dest_lang)-    onDestroy       window         mainQuit+    _ <- onClicked       btn_close      (widgetDestroy window)+    _ <- onClicked       btn_translate  (trans_click ent_trans_text lbl_translation cmb_source_lang cmb_dest_lang)+    _ <- onEntryActivate ent_trans_text (trans_click ent_trans_text lbl_translation cmb_source_lang cmb_dest_lang)+    _ <- onDestroy       window         mainQuit      -- Let's go     widgetShowAll window@@ -57,4 +56,4 @@     src <- get_src_lang cmb_src     dst <- get_dest_lang cmb_dest     translated_text <- do_trans src dst text-    set lbl [ labelText := decodeString translated_text ]+    set lbl [ labelText := translated_text ]
gt-tools.cabal view
@@ -1,5 +1,5 @@ name:                   gt-tools-version:                0.1.2+version:                0.1.3 cabal-version:          >= 1.8 build-type:             Simple license:                GPL@@ -29,34 +29,35 @@     main-is:            gtc.hs     buildable:          True     ghc-options:        -Wall-    include-dirs:       .-    hs-source-dirs:     ., Gt, Gtc+    hs-source-dirs:     ., Gtc     other-modules:      Gt.Core, Gt.Helpers, Gt.Langs, Gt.Net, Gt.Translation     build-depends:-                        base >= 4 && < 5,+                        base >= 4.2 && < 5,                         containers,+                        haskeline,                         HTTP,                         json,+                        mtl,+                        unix,                         url,                         utf8-string >= 0.3.6  executable              gtg     main-is:            gtg.hs     ghc-options:        -Wall-    include-dirs:       .-    hs-source-dirs:     ., Gt, Gtg+    hs-source-dirs:     ., Gtg     other-modules:      Gt.Core, Gt.Helpers, Gt.Langs, Gt.Net, Gt.Translation      if flag(gui)       buildable:        True       build-depends:-                        base >= 4 && < 5,+                        base >= 4.2 && < 5,                         containers,                         HTTP,                         json,                         url,                         gtk,                         glade,-                        utf8-string+                        utf8-string >= 0.3.6     else       buildable:        False