hbro 0.3 → 0.4
raw patch · 3 files changed
+63/−53 lines, 3 files
Files
- hbro.cabal +1/−1
- src/Gui.hs +39/−48
- src/Main.hs +23/−4
hbro.cabal view
@@ -1,5 +1,5 @@ Name: hbro-Version: 0.3+Version: 0.4 Synopsis: A suckless minimal KISSy browser Stability: alpha -- Description:
src/Gui.hs view
@@ -83,8 +83,8 @@ -- | Show the prompt bar label and default text. -- As the user validates its entry, the given callback is executed.-prompt :: String -> String -> GUI -> (GUI -> IO ()) -> IO ()-prompt label defaultText gui callback = do+prompt :: String -> String -> Bool -> GUI -> (GUI -> IO ()) -> IO ()+prompt label defaultText incremental gui callback = do -- Show prompt showPrompt True gui @@ -95,53 +95,44 @@ widgetGrabFocus (mPrompt gui) -- Register callback- rec id <- on (mPrompt gui) keyPressEvent $ do- key <- eventKeyName-- case key of- "Return" -> do liftIO $ showPrompt False gui- liftIO $ callback gui- liftIO $ signalDisconnect id- liftIO $ widgetGrabFocus (mWebView gui)- "Escape" -> do liftIO $ showPrompt False gui- liftIO $ signalDisconnect id- liftIO $ widgetGrabFocus (mWebView gui)- _ -> return ()-- return False-- return ()----- promptFind :: Maybe String -> GUI -> IO ()--- promptFind label gui = do--- -- Show prompt--- widgetShow (mPromptLabel gui)--- widgetShow (mPrompt gui)---- -- Fill prompt--- case label of--- Just text -> labelSetText (mPromptLabel gui) text--- _ -> return ()---- widgetGrabFocus (mPrompt gui)+ case incremental of+ True -> do + id1 <- on (mPrompt gui) editableChanged $ + liftIO $ callback gui+ rec id2 <- on (mPrompt gui) keyPressEvent $ do+ key <- eventKeyName+ + case key of+ "Return" -> do+ liftIO $ showPrompt False gui+ liftIO $ signalDisconnect id1+ liftIO $ signalDisconnect id2+ liftIO $ widgetGrabFocus (mWebView gui)+ "Escape" -> do+ liftIO $ showPrompt False gui+ liftIO $ signalDisconnect id1+ liftIO $ signalDisconnect id2+ liftIO $ widgetGrabFocus (mWebView gui)+ _ -> return ()+ return False+ return () --- -- Register callback--- rec id <- on (mPrompt gui) keyPressEvent $ do--- key <- eventKeyName--- --keywords <- entryGetText (mPrompt gui)+ _ -> do+ rec id <- on (mPrompt gui) keyPressEvent $ do+ key <- eventKeyName --- case key of--- "Return" -> do liftIO $ widgetHide (mPromptLabel gui)--- liftIO $ widgetHide (mPrompt gui)--- liftIO $ webViewMarkTextMatches (mWebView gui) keywords True 0--- liftIO $ signalDisconnect id--- "Escape" -> do liftIO $ widgetHide (mPromptLabel gui)--- liftIO $ widgetHide (mPrompt gui)--- liftIO $ signalDisconnect id--- _ -> return ()+ case key of+ "Return" -> do+ liftIO $ showPrompt False gui+ liftIO $ callback gui+ liftIO $ signalDisconnect id+ liftIO $ widgetGrabFocus (mWebView gui)+ "Escape" -> do+ liftIO $ showPrompt False gui+ liftIO $ signalDisconnect id+ liftIO $ widgetGrabFocus (mWebView gui)+ _ -> return ()+ return False --- return False+ return () --- return ()---
src/Main.hs view
@@ -36,6 +36,12 @@ (([], "o"), promptURL False), (([Shift], "O"), promptURL True), + -- Search+ (([Shift], "/"), promptFind False True),+ (([Shift], "?"), promptFind False False),+ (([], "n"), findNext False True),+ (([Shift], "N"), findNext False False),+ -- Others (([Control], "i"), showWebInspector), (([Control], "u"), toggleSourceMode),@@ -123,8 +129,8 @@ _ <- on webView downloadRequested $ \download -> do getUrl <- downloadGetUri download _ <- case getUrl of- Just url -> forkOS $ do _ <- rawSystem "wget" [url]; return ()- _ -> forkOS $ do _ <- rawSystem "pwd" []; return ()+ Just url -> forkOS $ (rawSystem "wget" [url]) >> return ()+ _ -> forkOS $ return () return True _ <- on webView mimeTypePolicyDecisionRequested $ \_ request mimetype policyDecision -> do@@ -181,16 +187,29 @@ promptURL :: Bool -> GUI -> IO () promptURL False gui = - prompt "Open URL" "" gui (\g -> do + prompt "Open URL" "" False gui (\g -> do uri <- entryGetText (mPrompt g) loadURL uri g) promptURL _ gui = do uri <- webViewGetUri (mWebView gui) case uri of- Just url -> prompt "Open URL" url gui (\g -> do+ Just url -> prompt "Open URL" url False gui (\g -> do u <- entryGetText (mPrompt g) loadURL u g) _ -> return ()++ promptFind :: Bool -> Bool -> GUI -> IO ()+ promptFind caseSensitive forward gui =+ prompt "Search" "" True gui (\gui' -> do+ keyWord <- entryGetText (mPrompt gui')+ webViewSearchText (mWebView gui) keyWord caseSensitive forward True+ return ())++ findNext :: Bool -> Bool -> GUI -> IO()+ findNext caseSensitive forward gui = do+ keyWord <- entryGetText (mPrompt gui)+ webViewSearchText (mWebView gui) keyWord caseSensitive forward True+ return () printPage :: GUI -> IO () printPage gui = do