packages feed

gtksourceview2 0.12.0 → 0.12.1

raw patch · 7 files changed

+166/−53 lines, 7 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Graphics.UI.Gtk.SourceView.SourceGutter: sourceGutterSetCellDataFunc :: (SourceGutterClass sg, CellRendererClass cell) => sg -> cell -> (CellRenderer -> Int -> Bool -> IO ()) -> IO ()
+ Graphics.UI.Gtk.SourceView.SourceGutter: sourceGutterSetCellSizeFunc :: (SourceGutterClass gutter, CellRendererClass cell) => gutter -> cell -> (CellRenderer -> IO ()) -> IO ()

Files

Graphics/UI/Gtk/SourceView/Signals.chs view
@@ -54,7 +54,7 @@ import Control.Monad	(liftM)  import System.Glib.FFI-import System.Glib.UTFString   (peekUTFString)+import System.Glib.UTFString   (peekUTFString,maybePeekUTFString) import System.Glib.GError      (failOnGError) {#import System.Glib.Signals#} {#import System.Glib.GObject#} 
Graphics/UI/Gtk/SourceView/SourceGutter.chs view
@@ -53,6 +53,8 @@     sourceGutterReorder,     sourceGutterRemove,     sourceGutterQueueDraw,+    sourceGutterSetCellDataFunc,+    sourceGutterSetCellSizeFunc,  -- * Attributes     sourceGutterView,@@ -80,6 +82,18 @@  {# context lib="gtk" prefix="gtk" #} +{#pointer SourceGutterDataFunc#}++foreign import ccall "wrapper" mkSourceGutterDataFunc ::+  (Ptr SourceGutter -> Ptr CellRenderer -> {#type gint#} -> {#type gboolean#} -> Ptr () -> IO ())+  -> IO SourceGutterDataFunc++{#pointer SourceGutterSizeFunc#}++foreign import ccall "wrapper" mkSourceGutterSizeFunc ::+  (Ptr SourceGutter -> Ptr CellRenderer -> Ptr () -> IO ())+  -> IO SourceGutterSizeFunc+ -- | Get the 'Window' of the gutter. The window will only be available when the gutter has at least one, -- non-zero width, cell renderer packed. sourceGutterGetWindow :: SourceGutterClass sg => sg -> IO (Maybe DrawWindow)@@ -124,6 +138,42 @@ sourceGutterQueueDraw sb =   {#call gtk_source_gutter_queue_draw #} (toSourceGutter sb) +-- | Sets the 'SourceGutterDataFunc' to use for renderer. This function is used to setup the cell+-- renderer properties for rendering the current cell.+sourceGutterSetCellDataFunc :: (SourceGutterClass sg, CellRendererClass cell)+                              => sg+                              -> cell+                              -> (CellRenderer -> Int -> Bool -> IO ())+                              -> IO ()+sourceGutterSetCellDataFunc gutter cell func = do+  funcPtr <- mkSourceGutterDataFunc $ \_ c line currentLine _ -> do+    func (toCellRenderer cell)+         (fromIntegral line)+         (toBool currentLine)+  {#call gtk_source_gutter_set_cell_data_func #}+     (toSourceGutter gutter)+     (toCellRenderer cell)+     funcPtr+     (castFunPtrToPtr funcPtr)+     destroyFunPtr++-- | Sets the 'SourceGutterSizeFunc' to use for renderer. This function is used to setup the cell+-- renderer properties for measuring the maximum size of the cell.+sourceGutterSetCellSizeFunc :: (SourceGutterClass gutter, CellRendererClass cell)+                              => gutter+                              -> cell+                              -> (CellRenderer -> IO ())+                              -> IO ()+sourceGutterSetCellSizeFunc gutter cell func = do+  funcPtr <- mkSourceGutterSizeFunc $ \ _ c _ -> do+    func (toCellRenderer cell)+  {#call gtk_source_gutter_set_cell_size_func #}+     (toSourceGutter gutter)+     (toCellRenderer cell)+     funcPtr+     (castFunPtrToPtr funcPtr)+     destroyFunPtr+ -- | The 'SourceView' of the gutter sourceGutterView :: SourceGutterClass sg => Attr sg SourceView sourceGutterView = newAttrFromObjectProperty "view"@@ -150,3 +200,4 @@ sourceGutterQueryTooltip :: SourceGutterClass sg => Signal sg (CellRenderer -> TextIter -> Tooltip -> IO Bool) sourceGutterQueryTooltip =      Signal $ connect_OBJECT_BOXED_OBJECT__BOOL "query-tooltip" mkTextIterCopy+
+ demo/LineNumber.hs view
@@ -0,0 +1,53 @@+-- | Line number demo.+--  Author      :  Andy Stewart+--  Copyright   :  (c) 2010 Andy Stewart <lazycat.manatee@gmail.com>+--+-- This demo show how to build your own line number gutter.+--+module Main where++import Graphics.UI.Gtk+import Graphics.UI.Gtk.SourceView++main = do+  -- Init.+  initGUI+  +  -- Create window.+  window <- windowNew+  windowSetDefaultSize window 900 600+  windowSetPosition window WinPosCenter++  -- Create source view widget.+  sourceView <- sourceViewNew++  -- Create scroll window.+  scrolledWindow <- scrolledWindowNew Nothing Nothing++  -- Insert CellRendererText in source view's gutter.+  gutter <- sourceViewGetGutter sourceView TextWindowLeft+  cell   <- cellRendererTextNew+  sourceGutterInsert gutter cell 0++  -- Set gutter data.+  sourceGutterSetCellDataFunc gutter cell $ \ c l currentLine -> do+         -- Display line number.+         set (castToCellRendererText c) [cellText := show (l + 1)]+         -- Highlight current line.+         let color = if currentLine +                        then Color 65535 0 0 +                        else Color 0 65535 0+         set (castToCellRendererText c) [cellTextForegroundColor := color]++  -- Set gutter size.+  sourceGutterSetCellSizeFunc gutter cell $ \ c -> +      -- -1 mean cell renderer will adjust width with chars dynamically.+      set (castToCellRendererText c) [cellTextWidthChars := (-1)]++  -- Connect and show.+  scrolledWindow `containerAdd` sourceView+  window `containerAdd` scrolledWindow+  window `onDestroy` mainQuit+  widgetShowAll window++  mainGUI
demo/Makefile view
@@ -1,11 +1,18 @@ -PROG  = sourceview-SOURCES = SourceViewTest.hs+PROGS  = sourceview linenumber +SOURCES = SourceView.hs LineNumber.hs -$(PROG) : $(SOURCES)-	$(HC) --make $< -o $@ $(HCFLAGS)+all : $(PROGS) +sourceview : SourceView.hs+	$(HC_RULE)++linenumber : LineNumber.hs+	$(HC_RULE)++HC_RULE = $(HC) --make $< -o $@ $(HCFLAGS)+ clean:-	rm -f $(SOURCES:.hs=.hi) $(SOURCES:.hs=.o) $(PROG)+	rm -f $(SOURCES:.hs=.hi) $(SOURCES:.hs=.o) $(PROGS)  HC=ghc
+ demo/SourceView.hs view
@@ -0,0 +1,46 @@+-- Test file for the SourceView widget.+module Main where++import Graphics.UI.Gtk+import Graphics.UI.Gtk.SourceView++main = do+  initGUI+  win <- windowNew+  windowSetPosition win WinPosCenter+  win `onDestroy` mainQuit++  -- create the appropriate language+  lm <- sourceLanguageManagerNew+  langM <- sourceLanguageManagerGetLanguage lm "haskell"+  lang <- case langM of+    (Just lang) -> return lang+    Nothing -> do+      langDirs <- sourceLanguageManagerGetSearchPath lm+      error ("please copy haskell.lang to one of the following directories:\n"+        ++unlines langDirs)++  -- create a new SourceBuffer object+  buffer <- sourceBufferNewWithLanguage lang++  -- load up and display a file+  fileContents <- readFile "SourceView.hs"+  textBufferSetText buffer fileContents+  textBufferSetModified buffer False++  sourceBufferSetHighlightSyntax buffer True++  -- create a new SourceView Widget+  sv <- sourceViewNewWithBuffer buffer++  -- put it in a scrolled window+  sw <- scrolledWindowNew Nothing Nothing+  sw `containerAdd` sv+  scrolledWindowSetPolicy sw PolicyAutomatic PolicyAutomatic+  sw `scrolledWindowSetShadowType` ShadowIn+  win `containerAdd` sw++  -- show the widget and run the main loop+  windowSetDefaultSize win 400 500+  widgetShowAll win+  mainGUI
− demo/SourceViewTest.hs
@@ -1,45 +0,0 @@--- Test file for the SourceView widget.-module Main where--import Graphics.UI.Gtk-import Graphics.UI.Gtk.SourceView--main = do-  initGUI-  win <- windowNew-  win `onDestroy` mainQuit--  -- create the appropriate language-  lm <- sourceLanguageManagerNew-  langM <- sourceLanguageManagerGetLanguage lm "haskell"-  lang <- case langM of-    (Just lang) -> return lang-    Nothing -> do-      langDirs <- sourceLanguageManagerGetSearchPath lm-      error ("please copy haskell.lang to one of the following directories:\n"-        ++unlines langDirs)--  -- create a new SourceBuffer object-  buffer <- sourceBufferNewWithLanguage lang--  -- load up and display a file-  fileContents <- readFile "SourceViewTest.hs"-  textBufferSetText buffer fileContents-  textBufferSetModified buffer False--  sourceBufferSetHighlightSyntax buffer True--  -- create a new SourceView Widget-  sv <- sourceViewNewWithBuffer buffer--  -- put it in a scrolled window-  sw <- scrolledWindowNew Nothing Nothing-  sw `containerAdd` sv-  scrolledWindowSetPolicy sw PolicyAutomatic PolicyAutomatic-  sw `scrolledWindowSetShadowType` ShadowIn-  win `containerAdd` sw--  -- show the widget and run the main loop-  windowSetDefaultSize win 400 500-  widgetShowAll win-  mainGUI
gtksourceview2.cabal view
@@ -1,5 +1,5 @@ Name:           gtksourceview2-Version:        0.12.0+Version:        0.12.1 License:        LGPL-2.1 License-file:   COPYING Copyright:      (c) 2001-2010 The Gtk2Hs Team@@ -24,8 +24,9 @@  Data-Dir:		demo Data-Files:		haskell.lang-                SourceViewTest.hs+                SourceView.hs                 Makefile+                LineNumber.hs 				 x-Types-File:       Graphics/UI/Gtk/SourceView/Types.chs x-Types-Tag:        gtksourceview2