55502f40dc8b7c769880b10874abc9d0

The user gives minutes and directory, the program chooses random wallpapers. Please review.

module Main where

import Graphics.UI.Gtk
import Graphics.UI.Gtk.Glade
import System.Process (runCommand,waitForProcess)
import Monad (liftM)
import System.Directory (getHomeDirectory,getDirectoryContents)
import System.Random  
import qualified Data.List as L
import Control.Concurrent(threadDelay)

slide c b a=let 
			  d =take (length c-1) $ L.nub $ randomRs (0,length c -1)(mkStdGen 8) 
			  g ="gconftool-2 -t string -s /desktop/gnome/background/picture_filename "				 
		     in mapM_ (\z->do{runCommand (g ++ "\""++b++"/"++(c !! z)++"\"")>>=waitForProcess;threadDelay (a*10^6*60)}) d
		      
main = do {
    initGUI ;
    Just xml <- xmlNew "papel.glade";
    --casts
    window   <- xmlGetWidget xml castToWindow "window1";
    onDestroy window  mainQuit; -- hide só se tiver slide salvo
    papel <- xmlGetWidget xml castToFileChooserButton "filechooserbutton1";
    spin <- xmlGetWidget xml castToSpinButton "spinbutton1";
    ok <- xmlGetWidget xml castToButton "button1";
    s<-xmlGetWidget xml castToStatusbar "statusbar1";
    --alguma coisa
    i<- getHomeDirectory;
    fileChooserSetCurrentFolder papel (i++"/Imagens"); 
    j <- statusbarGetContextId s "";
    statusbarPush s j "Developed by Asafe";
    --events
    onPressed ok (widgetHideAll window);
    onPressed ok (do { a <- spinButtonGetValueAsInt spin; 
					   b <-liftM f (fileChooserGetFilename papel);
		               c<-liftM h (getDirectoryContents b);
		               runCommand "notify-send 'Slide saved!'">>=waitForProcess;
		               slide c b a;});			    
    widgetShowAll window;
    mainGUI;
    } 
    where 
		f (Just a) = a
		h = (L.\\ [".",".."])

Refactorings

No refactoring yet !

Your refactoring





Format Copy from initial code

or Cancel