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 !
The user gives minutes and directory, the program chooses random wallpapers. Please review.