packages feed

spike 0.2 → 0.3

raw patch · 5 files changed

+42/−14 lines, 5 filesdep ~global-variablesdep ~rosezipper

Dependency ranges changed: global-variables, rosezipper

Files

spike.cabal view
@@ -1,5 +1,5 @@ Name:                spike-Version:             0.2+Version:             0.3 Synopsis:            Experimental web browser Description:         Experimental web browser based on WebKit-Gtk+ License:             BSD3@@ -23,8 +23,8 @@                      Commands, BrowseTreeOperations   Hs-source-dirs:    src   Build-depends:     webkit == 0.12.*, containers, gtk, base == 4.*, -                     stm, mtl > 2, rosezipper, process, directory, -                     filepath, glib, random, global-variables+                     stm, mtl > 2, rosezipper == 0.2.*, process, directory, +                     filepath, glib, random, global-variables == 1.0.*   Ghc-options:       -rtsopts   C-sources:         cbits/cbits.c   pkgconfig-depends: libsoup-gnome-2.4
src/BrowseTreeOperations.hs view
@@ -201,14 +201,15 @@   widgetShowAll page    let ww = (thisWidget,web)-      newChildPage = do+      newChildPageDefault = newChildPage "http://google.com"+      newChildPage url = do         print "[newChildPage called]"         btree <- readTVarIO btreeSt         debugBTree btree         case findPageWidget btree thisWidget of           Just p -> do-            ww' <- newWeb btreeSt refreshLayout "about:blank"-            p' <- newPage ww' "about:blank" -- TODO: win the battle over the power to navigate the web view.+            ww' <- newWeb btreeSt refreshLayout url+            p' <- newPage ww' url -- TODO: win the battle over the power to navigate the web view.             let btree' = addChild btree p p'             atomically $ writeTVar btreeSt btree'             refreshLayout@@ -216,7 +217,13 @@           Nothing -> do             error "findPageWidget returned Nothing, can't provide a new window" -  hookupWebView web newChildPage+  -- TODO: handle this more efficiently+  registerListener (\ (NewChildPageCommand pid url) -> do+                          p <- findPageByView pgWidget thisWidget+                          when ((fmap pgIdent p) == Just pid) (newChildPage url >> return ())+                   )++  hookupWebView web newChildPageDefault    return ww 
src/NotebookSimple.hs view
@@ -28,10 +28,10 @@ newScrolledWindowWithViewPort :: WidgetClass child => child -> IO ScrolledWindow newScrolledWindowWithViewPort child = do   sw <- scrolledWindowNew Nothing Nothing-  scrolledWindowSetPolicy sw PolicyAutomatic PolicyAutomatic+  scrolledWindowSetPolicy sw PolicyAlways PolicyNever   scrolledWindowAddWithViewport sw child   (wx,wy) <- widgetGetSizeRequest child-  widgetSetSizeRequest sw (wx+5) (wy+5)+  widgetSetSizeRequest sw (wx+5) (wy+40)   return sw  notebookSimpleNew :: (Page -> IO ()) -> IO NotebookSimple@@ -40,7 +40,7 @@   contentBox <- hBoxNew False 1   vbox <- vBoxNew False 1 -  widgetSetSizeRequest buttonsBox (-1) 40+  widgetSetSizeRequest buttonsBox (-1) 10    (\sw -> boxPackStart vbox sw PackNatural 1) =<< newScrolledWindowWithViewPort buttonsBox   boxPackStart vbox contentBox PackGrow 1
src/VisualBrowseTree.hs view
@@ -54,7 +54,7 @@        btreeZip = concatMap flattenToZipper' btree' -- ellipsis t 15       labels = unlines [ printf "d%d [URL=\"%s\", shape=polygon, fixedsize=true, fontsize=8, width=1.25, height=0.25, tooltip=\"%s\", label=\"%s\"];"-                                i link t (ellipsis t 10) | (i,(t,link)) <- map label btreeZip ]+                                i link t (ellipsis t 18) | (i,(t,link)) <- map label btreeZip ]       edges = unlines [ printf "d%d -> d%d;" (fst . label . fromJust . parent $ z ) (fst . label $ z)                             | z <- btreeZip,                               parent z /= Nothing]
src/spike.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE PackageImports, FlexibleInstances, DoRec, ForeignFunctionInterface #-} module Main where  import Graphics.UI.Gtk@@ -14,6 +13,7 @@ import Control.Concurrent import Control.Concurrent.STM import Control.Monad+import Control.Monad.Trans (liftIO)  import Data.IORef import Data.Maybe@@ -74,8 +74,8 @@  siblingsNotebookSimple <- notebookSimpleNew (\p -> do { fun <- readIORef viewPageRef; fun p}) :: IO NotebookSimple  childrenBox <- hBoxNew False 1  :: IO HBox - widgetSetSizeRequest parentsBox (-1) 40- widgetSetSizeRequest childrenBox (-1) 40+ widgetSetSizeRequest parentsBox (-1) 10+ widgetSetSizeRequest childrenBox (-1) 10   inside <- vBoxNew False 1  (\sw -> boxPackStart inside sw PackNatural 1) =<< newScrolledWindowWithViewPort parentsBox@@ -146,6 +146,27 @@               containerChild := inside,               windowAllowGrow := True ]  widgetShowAll window++ -- global shortcuts+ window `on` keyPressEvent $ do+         evM <- eventModifier+         evN <- (keyName . keyvalToLower) `fmap` eventKeyVal+         +         liftIO $ print (evM, evN)++         let newChildPage = liftIO $ do+               bt <- readTVarIO btreeVar+               cp <- readTVarIO currentPage+               case getPageParent bt cp of+                 Nothing -> sendCommand (NewTopLevelPageCommand "http://google.com")+                 Just par -> sendCommand (NewChildPageCommand (pgIdent $ rootLabel par) "http://google.com")++             newTopLevel = liftIO $ sendCommand (NewTopLevelPageCommand "http://google.com")++         case (evM, evN) of+           ([Control],"t") -> newChildPage >> return True+           ([Control],"n") -> newTopLevel >> return True+           _ -> return False   -- tree view window  visualBrowseTreeWindow viewPage btreeVar