Update of /cvsroot/gtk2hs/gtk2hs/sourceview In directory sc8-pr-cvs1:/tmp/cvs-serv21701/sourceview Modified Files: Makefile SourceBuffer.chs SourceLanguagesManager.chs SourceView.chs Added Files: SourceStyleScheme.chs SourceTag.chs SourceTagStyle.hsc SourceTagTable.chs Log Message: Add new files and patches from Duncan. --- NEW FILE: SourceStyleScheme.chs --- -- -*-haskell-*- -- GIMP Toolkit (GTK) @entry SourceStyleScheme@ -- -- Author : Duncan Coutts -- derived from the GtkTextView bindings by Axel Simon -- -- Created: 22 October 2003 -- -- This file is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2 of the License, or -- (at your option) any later version. -- -- This file is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- @description@ -------------------------------------------------------------- -- -- -- @documentation@ ------------------------------------------------------------ -- -- -- @todo@ --------------------------------------------------------------------- -- -- module SourceStyleScheme ( SourceStyleScheme, sourceStyleSchemeGetTagStyle, sourceStyleSchemeGetName, sourceStyleSchemeGetDefault ) where import Monad (liftM) import FFI import GObject (makeNewGObject) {#import Hierarchy#} {#import SourceViewType#} import SourceTagStyle {# context lib="gtk" prefix="gtk" #} {#pointer *SourceStyleScheme foreign newtype #} mkSourceStyleScheme = SourceStyleScheme unSourceStyleScheme (SourceStyleScheme o) = o instance GObjectClass SourceStyleScheme where toGObject = mkGObject.castForeignPtr.unSourceStyleScheme fromGObject = mkSourceStyleScheme.castForeignPtr.unGObject -- methods -- @method sourceStyleSchemeGetTagStyle@ -- sourceStyleSchemeGetTagStyle :: SourceStyleScheme -> String -> IO SourceTagStyle sourceStyleSchemeGetTagStyle ss styleName = withCString styleName $ \strPtr -> do tsPtr <- {#call source_style_scheme_get_tag_style#} ss strPtr ts <- peek (castPtr tsPtr) {#call unsafe g_free#} tsPtr return ts -- @method sourceStyleSchemeGetName@ -- sourceStyleSchemeGetName :: SourceStyleScheme -> IO String sourceStyleSchemeGetName ss = {#call source_style_scheme_get_name#} ss >>= peekCString -- @method sourceStyleSchemeGetDefault@ -- sourceStyleSchemeGetDefault :: IO SourceStyleScheme sourceStyleSchemeGetDefault = makeNewGObject mkSourceStyleScheme $ liftM castPtr $ {#call source_style_scheme_get_default#} --- NEW FILE: SourceTag.chs --- -- -*-haskell-*- -- GIMP Toolkit (GTK) @entry SourceTag@ -- -- Author : Duncan Coutts -- derived from GtkTextView bindings by Axel Simon -- -- Created: 22 October 2003 -- -- This file is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2 of the License, or -- (at your option) any later version. -- -- This file is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- @description@ -------------------------------------------------------------- -- -- -- @documentation@ ------------------------------------------------------------ -- -- -- @todo@ --------------------------------------------------------------------- -- -- module SourceTag ( SourceTag, syntaxTagNew, patternTagNew, -- keywordListTagNew, blockCommentTagNew, lineCommentTagNew, stringTagNew, sourceTagGetStyle, sourceTagSetStyle ) where import Monad (liftM) import FFI import GObject (makeNewGObject) {#import Hierarchy#} {#import SourceViewType#} import SourceTagStyle {# context lib="gtk" prefix="gtk" #} -- methods -- @constructor syntaxTagNew@ Create a new @ref type SourceTag@ -- syntaxTagNew :: String -> String -> String -> String -> IO SourceTag syntaxTagNew id name patternStart patternEnd = makeNewGObject mkSourceTag $ liftM castPtr $ withCString id $ \strPtr1 -> withCString name $ \strPtr2 -> withCString patternStart $ \strPtr3 -> withCString patternEnd $ \strPtr4 -> {#call syntax_tag_new#} strPtr1 strPtr2 strPtr3 strPtr4 -- @constructor patternTagNew@ Create a new @ref type SourceTag@ -- patternTagNew :: String -> String -> String -> IO SourceTag patternTagNew id name pattern = makeNewGObject mkSourceTag $ liftM castPtr $ withCString id $ \strPtr1 -> withCString name $ \strPtr2 -> withCString pattern $ \strPtr3 -> {#call unsafe pattern_tag_new#} strPtr1 strPtr2 strPtr3 {- -- @constructor keywordListTagNew@ Create a new @ref type SourceTag@ -- keywordListTagNew :: String -> String -> [String] -> Bool -> Bool -> Bool -> String -> String -> IO SourceTag keywordListTagNew = id name keywords caseSensitive matchEmptyStringAtBeginning matchEmptyStringAtEnd beginningRegex endRegex makeNewGObject mkSourceTag $ liftM castPtr $ withCString id $ \strPtr1 -> withCString name $ \strPtr2 -> withCString beginningRegex $ \strPtr3 -> withCString endRegex $ \strPtr4 -> {#call unsafe keyword_list_tag_new#} strPtr1 strPtr2 {- makeGSList of strings from keywords -} (fromBool caseSensitive) (fromBool matchEmptyStringAtBeginning) (fromBool matchEmptyStringAtEnd) strPtr3 strPtr4 -} -- @constructor blockCommentTagNew@ Create a new @ref type SourceTag@ -- blockCommentTagNew :: String -> String -> String -> String -> IO SourceTag blockCommentTagNew = syntaxTagNew --in the C header this is just a macro -- @constructor lineCommentTagNew@ Create a new @ref type SourceTag@ -- lineCommentTagNew :: String -> String -> String -> IO SourceTag lineCommentTagNew id name pattern = makeNewGObject mkSourceTag $ liftM castPtr $ withCString id $ \strPtr1 -> withCString name $ \strPtr2 -> withCString pattern $ \strPtr3 -> {#call unsafe line_comment_tag_new#} strPtr1 strPtr2 strPtr3 -- @constructor stringTagNew@ Create a new @ref type SourceTag@ -- stringTagNew :: String -> String -> String -> String -> Bool -> IO SourceTag stringTagNew id name patternStart patternEnd endAtLineEnd = makeNewGObject mkSourceTag $ liftM castPtr $ withCString id $ \strPtr1 -> withCString name $ \strPtr2 -> withCString patternStart $ \strPtr3 -> withCString patternEnd $ \strPtr4 -> {#call unsafe string_tag_new#} strPtr1 strPtr2 strPtr3 strPtr4 (fromBool endAtLineEnd) -- @method sourceTagGetStyle@ -- sourceTagGetStyle :: SourceTag -> IO SourceTagStyle sourceTagGetStyle tag = do tsPtr <- {#call unsafe source_tag_get_style#} tag ts <- peek (castPtr tsPtr) {#call unsafe g_free#} tsPtr return ts -- @method sourceTagGetStyle@ -- sourceTagSetStyle :: SourceTag -> SourceTagStyle -> IO () sourceTagSetStyle tag ts = alloca $ \tsPtr -> do poke tsPtr ts {#call unsafe source_tag_set_style#} tag (castPtr tsPtr) --- NEW FILE: SourceTagStyle.hsc --- -- -*-haskell-*- -- GIMP Toolkit (GTK) @entry SourceTagStyle@ -- -- Author : Duncan Coutts -- derived from GtkTextView bindings by Axel Simon -- -- Created: 20 October 2003 -- -- This file is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2 of the License, or -- (at your option) any later version. -- -- This file is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- @description@ -------------------------------------------------------------- -- -- -- @documentation@ ------------------------------------------------------------ -- -- -- @todo@ --------------------------------------------------------------------- -- -- module SourceTagStyle ( SourceTagStyle(..), ) where import Foreign import Foreign.C import Data.Bits (testBit, bit, (.|.)) import Maybe (isJust, fromMaybe) import Structs (Color(..)) #include <gtksourceview/gtksourcetagstyle.h> data SourceTagStyleMask = SourceTagStyleUseBackground | SourceTagStyleUseForeground deriving (Eq) instance Enum SourceTagStyleMask where fromEnum SourceTagStyleUseBackground = 1 fromEnum SourceTagStyleUseForeground = 2 toEnum 1 = SourceTagStyleUseBackground toEnum 2 = SourceTagStyleUseForeground toEnum unmatched = error ("SourceTagStyleMask.toEnum: Cannot match " ++ show unmatched) data SourceTagStyle = SourceTagStyle { isDefault :: Bool, -- readonly foreground :: Maybe Color, background :: Maybe Color, italic :: Bool, bold :: Bool, underline :: Bool, strikethrough :: Bool } instance Storable SourceTagStyle where sizeOf _ = #{const sizeof(GtkSourceTagStyle)} alignment _ = alignment (undefined::#type gboolean) peek ptr = do (isDefault'::#type gboolean) <- #{peek GtkSourceTagStyle, is_default} ptr (mask::#type guint) <- #{peek GtkSourceTagStyle, mask} ptr foreground' <- peek (#{ptr GtkSourceTagStyle, foreground} ptr) background' <- peek (#{ptr GtkSourceTagStyle, background} ptr) (italic'::#type gboolean) <- #{peek GtkSourceTagStyle, italic} ptr (bold'::#type gboolean) <- #{peek GtkSourceTagStyle, bold} ptr (underline'::#type gboolean) <- #{peek GtkSourceTagStyle, underline} ptr (strikethrough'::#type gboolean) <- #{peek GtkSourceTagStyle, strikethrough} ptr return SourceTagStyle { isDefault = toBool isDefault', foreground = if mask `testBit` (fromEnum SourceTagStyleUseForeground) then Just foreground' else Nothing, background = if mask `testBit` (fromEnum SourceTagStyleUseBackground) then Just background' else Nothing, italic = toBool italic', bold = toBool bold', underline = toBool underline', strikethrough = toBool strikethrough' } poke ptr tag = do #{poke GtkSourceTagStyle, is_default} ptr (fromBool $ isDefault tag ::#type gboolean) #{poke GtkSourceTagStyle, mask} ptr ((if isJust (foreground tag) then bit (fromEnum SourceTagStyleUseForeground) else 0) .|.(if isJust (background tag) then bit (fromEnum SourceTagStyleUseBackground) else 0) ::#type guint) poke (#{ptr GtkSourceTagStyle, foreground} ptr) (fromMaybe (Color 0 0 0) (foreground tag)) poke (#{ptr GtkSourceTagStyle, background} ptr) (fromMaybe (Color 0 0 0) (background tag)) #{poke GtkSourceTagStyle, italic} ptr (fromBool $ italic tag ::#type gboolean) #{poke GtkSourceTagStyle, bold} ptr (fromBool $ bold tag ::#type gboolean) #{poke GtkSourceTagStyle, underline} ptr (fromBool $ underline tag ::#type gboolean) #{poke GtkSourceTagStyle, strikethrough} ptr (fromBool $ strikethrough tag ::#type gboolean) --- NEW FILE: SourceTagTable.chs --- -- -*-haskell-*- -- GIMP Toolkit (GTK) @entry SourceTagTable@ -- -- Author : Duncan Coutts -- derived from GtkTextView bindings by Axel Simon -- -- Created: 22 October 2003 -- -- This file is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2 of the License, or -- (at your option) any later version. -- -- This file is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- @description@ -------------------------------------------------------------- -- -- -- @documentation@ ------------------------------------------------------------ -- -- -- @todo@ --------------------------------------------------------------------- -- -- module SourceTagTable ( SourceTagTable, SourceTagTableClass, sourceTagTableNew, -- sourceTagTableAddTags, --requires toGSList sourceTagTableRemoveSourceTags ) where import Monad (liftM) import FFI import GObject (makeNewGObject) {#import Hierarchy#} {#import SourceViewType#} {#import Signal#} {#import SourceTag#} import GList (readGSList) {# context lib="gtk" prefix="gtk" #} -- methods -- @constructor sourceTagTableNew@ Create a new @ref type SourceTagTable@ -- sourceTagTableNew :: IO SourceTagTable sourceTagTableNew = makeNewGObject mkSourceTagTable {#call unsafe source_tag_table_new#} {- -- @method sourceTagTableAddTags@ -- sourceTagTableAddTags :: SourceTagTable -> [SourceTag] -> IO () sourceTagTableAddTags tt tags = {#call source_tag_table_add_tags#} tt {- make GSList of SourceTag from tags -} -} -- @method sourceTagTableRemoveSourceTags@ -- sourceTagTableRemoveSourceTags :: SourceTagTable -> IO () sourceTagTableRemoveSourceTags tt = {#call source_tag_table_remove_source_tags#} tt Index: Makefile =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/sourceview/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Makefile 21 Oct 2003 23:41:03 -0000 1.1 +++ Makefile 26 Oct 2003 22:29:51 -0000 1.2 @@ -24,6 +24,9 @@ SourceBuffer-HEADER = gtksourceview/gtksourceview.h SourceLanguage-HEADER = gtksourceview/gtksourceview.h SourceLanguagesManager-HEADER = gtksourceview/gtksourceviewlanguagesmanager.h +SourceTag-HEADER = gtksourceview/gtksourcetag.h +SourceTagTable-HEADER = gtksourceview/gtktagtable.h +SourceStyleScheme-HEADER = gtksourceview/gtkstlyescheme.h endif # Further options to the C preprocessor are passed verbatim: Index: SourceBuffer.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/sourceview/SourceBuffer.chs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- SourceBuffer.chs 21 Oct 2003 23:41:03 -0000 1.1 +++ SourceBuffer.chs 26 Oct 2003 22:29:51 -0000 1.2 @@ -30,10 +30,31 @@ SourceBufferClass, sourceBufferNew, sourceBufferNewWithLanguage, - sourceViewSetCheckBrackets, - sourceViewGetCheckBrackets, + sourceBufferSetCheckBrackets, + sourceBufferGetCheckBrackets, +-- sourceBufferSetBracketsMatchStyle, sourceBufferSetHighlight, sourceBufferGetHighlight +{- + sourceBufferSetEscapeChar, + sourceBufferGetEscapeChar, + sourceBufferCanUndo, + sourceBufferCanRedo, + sourceBufferUndo, + sourceBufferRedo, + sourceBufferBeginNotUndoableAction, + sourceBufferEndNotUndoableAction, + sourceBufferCreateMarker, + sourceBufferMoveMarker, + sourceBufferDeleteMarker, + sourceBufferGetMarker, + sourceBufferGetMarkersInRegion, + sourceBufferGetFirstMarker, + sourceBufferGetLastMarker, + sourceBufferGetIterAtMarker, + sourceBufferGetNextMarker, + sourceBufferGetPrevMarker +-} ) where import Monad (liftM) @@ -44,6 +65,7 @@ {#import Hierarchy#} {#import SourceViewType#} {#import Signal#} +import SourceTagStyle import GList (fromGList) {# context lib="gtk" prefix="gtk" #} @@ -65,18 +87,26 @@ sourceBufferNewWithLanguage lang = makeNewGObject mkSourceBuffer $ {#call unsafe source_buffer_new_with_language#} lang --- @method sourceViewSetCheckBrackets@ +-- @method sourceBufferSetCheckBrackets@ -- -sourceViewSetCheckBrackets :: SourceBuffer -> Bool -> IO () -sourceViewSetCheckBrackets sb newVal = +sourceBufferSetCheckBrackets :: SourceBuffer -> Bool -> IO () +sourceBufferSetCheckBrackets sb newVal = {#call unsafe source_buffer_set_check_brackets#} sb (fromBool newVal) --- @method sourceViewGetCheckBrackets@ +-- @method sourceBufferGetCheckBrackets@ -- -sourceViewGetCheckBrackets :: SourceBuffer -> IO Bool -sourceViewGetCheckBrackets sb = liftM toBool $ +sourceBufferGetCheckBrackets :: SourceBuffer -> IO Bool +sourceBufferGetCheckBrackets sb = liftM toBool $ {#call unsafe source_buffer_get_check_brackets#} sb +{- +-- @method sourceBufferSetBracketsMatchStyle@ +-- +sourceBufferSetBracketsMatchStyle :: SourceBuffer -> SourceTagStyle -> IO () +sourceBufferSetBracketsMatchStyle sb ts = liftM toBool $ + {#call unsafe source_buffer_set_bracket_match_style#} sb ts +-} + -- @method sourceBufferSetHighlight@ -- sourceBufferSetHighlight :: SourceBuffer -> Bool -> IO () @@ -88,3 +118,27 @@ sourceBufferGetHighlight :: SourceBuffer -> IO Bool sourceBufferGetHighlight sb = liftM toBool $ {#call unsafe source_buffer_get_highlight#} sb + +-- @method sourceBufferSetMaxUndoLevels@ +-- +sourceBufferSetMaxUndoLevels :: SourceBuffer -> Int -> IO () +sourceBufferSetMaxUndoLevels sb newVal = + {#call unsafe source_buffer_set_max_undo_levels#} sb (fromIntegral newVal) + +-- @method sourceBufferGetMaxUndoLevels@ +-- +sourceBufferGetMaxUndoLevels :: SourceBuffer -> IO Int +sourceBufferGetMaxUndoLevels sb = liftM fromIntegral $ + {#call unsafe source_buffer_get_max_undo_levels#} sb + +-- @method sourceBufferSetLanguage@ +-- +sourceBufferSetLanguage :: SourceBuffer -> SourceLanguage -> IO () +sourceBufferSetLanguage sb lang = + {#call unsafe source_buffer_set_language#} sb lang + +-- @method sourceBufferGetLanguage@ +-- +sourceBufferGetLanguage :: SourceBuffer -> IO SourceLanguage +sourceBufferGetLanguage sb = makeNewGObject mkSourceLanguage $ + {#call unsafe source_buffer_get_language#} sb Index: SourceLanguagesManager.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/sourceview/SourceLanguagesManager.chs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- SourceLanguagesManager.chs 21 Oct 2003 23:41:03 -0000 1.1 +++ SourceLanguagesManager.chs 26 Oct 2003 22:29:51 -0000 1.2 @@ -34,7 +34,6 @@ import Monad (liftM) import FFI -import Object (makeNewObject) import GObject (makeNewGObject) {#import Hierarchy#} {#import SourceViewType#} Index: SourceView.chs =================================================================== RCS file: /cvsroot/gtk2hs/gtk2hs/sourceview/SourceView.chs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- SourceView.chs 21 Oct 2003 23:41:03 -0000 1.1 +++ SourceView.chs 26 Oct 2003 22:29:51 -0000 1.2 @@ -50,7 +50,11 @@ sourceViewGetSmartHomeEnd, module SourceBuffer, module SourceLanguage, - module SourceLanguagesManager + module SourceLanguagesManager, + module SourceTag, + module SourceTagTable, + module SourceTagStyle, + module SourceStyleScheme ) where import Monad (liftM) @@ -63,6 +67,10 @@ import SourceBuffer import SourceLanguage import SourceLanguagesManager +import SourceStyleScheme +import SourceTag +import SourceTagTable +import SourceTagStyle {# context lib="gtk" prefix="gtk" #} |