ghcjs-dom 0.0.10 → 0.1.0.0
raw patch · 4 files changed
+50/−17 lines, 4 filesdep +textdep ~glibdep ~gtkdep ~gtk3
Dependencies added: text
Dependency ranges changed: glib, gtk, gtk3, webkit, webkitgtk3
Files
- ghcjs-dom.cabal +9/−5
- src/GHCJS/DOM.hs +8/−6
- src/GHCJS/DOM/EventM.hs +1/−1
- src/GHCJS/DOM/Types.hs +32/−5
ghcjs-dom.cabal view
@@ -1,5 +1,5 @@ name: ghcjs-dom-version: 0.0.10+version: 0.1.0.0 cabal-version: >=1.10 build-type: Simple license: MIT@@ -37,7 +37,10 @@ Default: True library- build-depends: base <5, mtl -any+ build-depends: base <5,+ mtl -any,+ text >= 1.1.1.3 && < 1.2+ default-language: Haskell2010 exposed-modules: GHCJS.DOM@@ -189,11 +192,12 @@ -- if !impl(ghcjs) || flag(webkit) if !flag(ghcjs) || flag(webkit) cpp-options: -DUSE_WEBKIT- build-depends: glib >=0.12.3.1 && <0.13, transformers >=0.3.0.0 && <0.5+ build-depends: glib >=0.13.0.0 && <0.14,+ transformers >=0.3.0.0 && <0.5 if flag(gtk3)- build-depends: gtk3 >=0.12.4 && <0.13, webkitgtk3 >=0.12.6.0 && <0.13+ build-depends: gtk3 >=0.13.0.0 && <0.14, webkitgtk3 >=0.13.0.0 && <0.14 else- build-depends: gtk >=0.12.4 && <0.13, webkit >=0.12.6.0 && <0.13+ build-depends: gtk >=0.13.0.0 && <0.14, webkit >=0.13.0.0 && <0.14 c-sources: cbits/ghcjs_stubs.c hs-source-dirs: src
src/GHCJS/DOM.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE CPP, ForeignFunctionInterface #-}+{-# LANGUAGE CPP, ForeignFunctionInterface, OverloadedStrings #-} #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT) {-# LANGUAGE JavaScriptFFI #-} #endif@@ -12,6 +12,8 @@ , postGUIAsync ) where +import qualified Data.Text as T+import Data.Monoid ((<>)) #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT) import GHCJS.Types (JSRef(..)) import Control.Applicative ((<$>))@@ -88,7 +90,7 @@ runWebGUI :: (WebView -> IO ()) -> IO () runWebGUI = runWebGUI' "GHCJS" -runWebGUI' :: String -> (WebView -> IO ()) -> IO ()+runWebGUI' :: T.Text -> (WebView -> IO ()) -> IO () runWebGUI' userAgentKey main = do -- Are we in a java script inside some kind of browser mbWindow <- currentWindow@@ -97,11 +99,11 @@ -- Check if we are running in javascript inside the the native version Just n <- domWindowGetNavigator window agent <- navigatorGetUserAgent n- unless ((" " ++ userAgentKey) `isSuffixOf` agent) $ main (castToWebView window)+ unless ((" " <> userAgentKey) `T.isSuffixOf` agent) $ main (castToWebView window) Nothing -> do makeDefaultWebView userAgentKey main -makeDefaultWebView :: String -> (WebView -> IO ()) -> IO ()+makeDefaultWebView :: T.Text -> (WebView -> IO ()) -> IO () #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT) makeDefaultWebView _ _ = error "Unsupported makeDefaultWebView" #else@@ -115,7 +117,7 @@ webView <- webViewNew settings <- webViewGetWebSettings webView userAgent <- settings `get` webSettingsUserAgent- settings `set` [webSettingsUserAgent := userAgent ++ " " ++ userAgentKey]+ settings `set` [webSettingsUserAgent := userAgent <> " " <> userAgentKey] webViewSetWebSettings webView settings window `containerAdd` scrollWin scrollWin `containerAdd` webView@@ -125,7 +127,7 @@ main webView args <- getArgs case args of- uri:_ -> webViewLoadUri webView uri+ uri:_ -> webViewLoadUri webView (T.pack uri) [] -> do main webView mainGUI
src/GHCJS/DOM/EventM.hs view
@@ -259,6 +259,6 @@ mouseToElement :: IsMouseEvent e => EventM e t (Maybe Node) mouseToElement = event >>= (liftIO . mouseEventGetToElement) -connect :: (GObjectClass t, IsEvent e) => String -> t -> EventM e t () -> IO (IO ())+connect :: (GObjectClass t, IsEvent e, ToDOMString string) => string -> t -> EventM e t () -> IO (IO ()) connect eventName target callback = eventTargetAddEventListener target eventName False $ curry (runReaderT callback)
src/GHCJS/DOM/Types.hs view
@@ -1,12 +1,14 @@+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE CPP #-} #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)-{-# LANGUAGE JavaScriptFFI, ForeignFunctionInterface #-}+{-# LANGUAGE JavaScriptFFI, ForeignFunctionInterface, ConstraintKinds #-} #else {-# LANGUAGE ConstraintKinds #-} #endif module GHCJS.DOM.Types ( #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)- maybeJSNull, propagateGError, GType(..)+ maybeJSNull, propagateGError, GType(..), DOMString(..), ToDOMString(..), FromDOMString(..) , GObject(..), GObjectClass, toGObject, unGObject, castToGObject, gTypeGObject, unsafeCastGObject -- AUTO GENERATION STARTS HERE@@ -143,7 +145,7 @@ , XPathResult(XPathResult), unXPathResult, IsXPathResult, toXPathResult, castToXPathResult, gTypeXPathResult -- AUTO GENERATION ENDS HERE #else- propagateGError, GType(..)+ propagateGError, GType(..), DOMString(..), ToDOMString(..), FromDOMString(..) , module Graphics.UI.Gtk.WebKit.Types , IsDOMAttr , IsBlob@@ -273,12 +275,18 @@ #endif ) where - #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)-import GHCJS.Types (JSRef(..), castRef, isNull)+import GHCJS.Types (JSRef(..), castRef, nullRef, isNull, JSString(..))+import GHCJS.Foreign (ToJSString(..), FromJSString(..)) #else+import Control.Applicative ((<$>))+import qualified Data.Text as T (Text)+import Data.Maybe (isNothing)+import Foreign.C (CString) import Graphics.UI.Gtk.WebKit.Types import System.Glib (propagateGError, GType(..))+import System.Glib.UTFString+ (readUTFString, GlibString(..)) #endif #if (defined(ghcjs_HOST_OS) && defined(USE_JAVASCRIPTFFI)) || !defined(USE_WEBKIT)@@ -335,6 +343,25 @@ gTypeGObject' = error "gTypeGObject': only available in JavaScript" #endif gTypeGObject = GType gTypeGObject'++#ifdef ghcjs_HOST_OS+-- | Fastest string type to use when you just+-- want to take a string from the DOM then+-- give it back as is.+type DOMString = JSString++type ToDOMString s = ToJSString s+type FromDOMString s = FromJSString s+#endif++#else+-- | Fastest string type to use when you just+-- want to take a string from the DOM then+-- give it back as is.+type DOMString = T.Text++type ToDOMString s = GlibString s+type FromDOMString s = GlibString s #endif -- AUTO GENERATION STARTS HERE