From: Duncan C. <dun...@us...> - 2005-01-08 16:05:45
|
Update of /cvsroot/gtk2hs/gtk2hs/sourceview/Graphics/UI/Gtk/SourceView In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9788/sourceview/Graphics/UI/Gtk/SourceView Added Files: SourceIter.chs SourceLanguage.chs SourceLanguagesManager.chs SourceMarker.chs Log Message: sourceview package hierarchical namespace conversion. --- NEW FILE: SourceLanguagesManager.chs --- -- -*-haskell-*- -- GIMP Toolkit (GTK) SourceLanguagesManager -- -- Author : Duncan Coutts -- derived from GtkTextView bindings by Axel Simon -- -- Created: 14 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. -- -- | -- module Graphics.UI.Gtk.SourceView.SourceLanguagesManager ( SourceLanguagesManager, sourceLanguagesManagerNew, sourceLanguagesManagerGetAvailableLanguages, sourceLanguagesManagerGetLanguageFromMimeType, sourceLanguagesManagerGetLangFilesDirs ) where import Monad (liftM, mapM) import System.Glib.FFI import System.Glib.UTFString import System.Glib.GList (readGSList) import System.Glib.GObject (makeNewGObject) {#import Graphics.UI.Gtk.Types#} {#import Graphics.UI.Gtk.SourceView.Types#} {#import Graphics.UI.Gtk.Signals#} {# context lib="gtk" prefix="gtk" #} -- methods -- | Create a new 'SourceLanguagesManager'. -- sourceLanguagesManagerNew :: IO SourceLanguagesManager sourceLanguagesManagerNew = makeNewGObject mkSourceLanguagesManager {#call source_languages_manager_new#} -- | -- sourceLanguagesManagerGetAvailableLanguages :: SourceLanguagesManager -> IO [SourceLanguage] sourceLanguagesManagerGetAvailableLanguages lm = do gList <- {#call source_languages_manager_get_available_languages#} lm wList <- readGSList gList mapM (makeNewGObject mkSourceLanguage) (map return wList) -- | -- sourceLanguagesManagerGetLanguageFromMimeType :: SourceLanguagesManager -> String -> IO (Maybe SourceLanguage) sourceLanguagesManagerGetLanguageFromMimeType lm mimeType = do langPtr <- withCString mimeType $ \strPtr -> {#call source_languages_manager_get_language_from_mime_type#} lm strPtr if langPtr==nullPtr then return Nothing else liftM Just $ makeNewGObject mkSourceLanguage (return langPtr) -- | Retrieve filenames with language specifications. -- sourceLanguagesManagerGetLangFilesDirs :: SourceLanguagesManager -> IO [FilePath] sourceLanguagesManagerGetLangFilesDirs lm = do gsList <- {#call source_languages_manager_get_lang_files_dirs#} lm -- The returned structure is private and nothing is to be freed. dirList <- readGSList gsList mapM peekUTFString dirList --- NEW FILE: SourceMarker.chs --- -- -*-haskell-*- -- GIMP Toolkit (GTK) SourceMarker -- -- Author : Duncan Coutts -- derived from GtkTextView bindings by Axel Simon -- -- Created: 26 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. -- -- | -- module Graphics.UI.Gtk.SourceView.SourceMarker ( SourceMarker, sourceMarkerSetMarkerType, sourceMarkerGetMarkerType, sourceMarkerGetLine, sourceMarkerGetName, sourceMarkerGetBuffer, sourceMarkerNext, sourceMarkerPrev ) where import Monad (liftM) import System.Glib.FFI import System.Glib.UTFString import System.Glib.GObject (makeNewGObject) {#import Graphics.UI.Gtk.Types#} {#import Graphics.UI.Gtk.SourceView.Types#} {# context lib="gtk" prefix="gtk" #} -- methods -- | -- sourceMarkerSetMarkerType :: SourceMarker -> String -> IO () sourceMarkerSetMarkerType mark markType = withCString markType $ \strPtr1 -> {#call unsafe source_marker_set_marker_type#} mark strPtr1 -- | -- sourceMarkerGetMarkerType :: SourceMarker -> IO String sourceMarkerGetMarkerType mark = do strPtr <- {#call unsafe source_marker_get_marker_type#} mark markType <- peekUTFString strPtr {#call unsafe g_free#} (castPtr strPtr) return markType -- | -- sourceMarkerGetLine :: SourceMarker -> IO Int sourceMarkerGetLine mark = liftM fromIntegral $ {#call unsafe source_marker_get_line#} mark -- | -- sourceMarkerGetName :: SourceMarker -> IO String sourceMarkerGetName mark = {#call unsafe source_marker_get_name#} mark >>= peekUTFString -- | -- sourceMarkerGetBuffer :: SourceMarker -> IO SourceBuffer sourceMarkerGetBuffer mark = makeNewGObject mkSourceBuffer $ {#call unsafe source_marker_get_buffer#} mark -- | -- sourceMarkerNext :: SourceMarker -> IO SourceMarker sourceMarkerNext mark = makeNewGObject mkSourceMarker $ {#call unsafe source_marker_next#} mark -- | -- sourceMarkerPrev :: SourceMarker -> IO SourceMarker sourceMarkerPrev mark = makeNewGObject mkSourceMarker $ {#call unsafe source_marker_prev#} mark --- NEW FILE: SourceLanguage.chs --- -- -*-haskell-*- -- GIMP Toolkit (GTK) Widget SourceView -- -- Author : Duncan Coutts -- derived from GtkTextView bindings by Axel Simon -- -- Created: 14 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. -- -- | -- module Graphics.UI.Gtk.SourceView.SourceLanguage ( SourceLanguage, sourceLanguageGetName, sourceLanguageGetSection, sourceLanguageGetTags, sourceLanguageGetEscapeChar, sourceLanguageGetMimeTypes, sourceLanguageSetMimeTypes, sourceLanguageGetStyleScheme, sourceLanguageSetStyleScheme, sourceLanguageGetTagStyle, sourceLanguageSetTagStyle, sourceLanguageGetTagDefaultStyle ) where import Monad (liftM) import System.Glib.FFI import System.Glib.UTFString import System.Glib.GList (fromGSList, toGSList) import System.Glib.GObject (makeNewGObject) import Graphics.UI.Gtk.Abstract.Object (makeNewObject) {#import Graphics.UI.Gtk.Types#} {#import Graphics.UI.Gtk.SourceView.Types#} {#import Graphics.UI.Gtk.Signals#} import Graphics.UI.Gtk.SourceView.SourceStyleScheme import Graphics.UI.Gtk.SourceView.SourceTagStyle {# context lib="gtk" prefix="gtk" #} -- methods -- | -- sourceLanguageGetName :: SourceLanguage -> IO String sourceLanguageGetName sl = {#call unsafe source_language_get_name#} sl >>= peekUTFString -- | -- sourceLanguageGetSection :: SourceLanguage -> IO String sourceLanguageGetSection sl = {#call unsafe source_language_get_section#} sl >>= peekUTFString -- | -- sourceLanguageGetTags :: SourceLanguage -> IO [SourceTag] sourceLanguageGetTags sl = do gList <- {#call unsafe source_language_get_tags#} sl wList <- fromGSList gList mapM (makeNewGObject mkSourceTag) (map return wList) -- | -- sourceLanguageGetEscapeChar :: SourceLanguage -> IO Char sourceLanguageGetEscapeChar sl = liftM (toEnum . fromEnum) $ {#call unsafe source_language_get_escape_char#} sl sourceLanguageGetMimeTypes :: SourceLanguage -> IO [String] sourceLanguageGetMimeTypes sl = do mimeTypesList <- {#call unsafe source_language_get_mime_types#} sl mimeTypesPtrs <- fromGSList mimeTypesList mapM peekUTFString mimeTypesPtrs sourceLanguageSetMimeTypes :: SourceLanguage -> [String] -> IO () sourceLanguageSetMimeTypes sl mimeTypes = do mimeTypesPtrs <- mapM newUTFString mimeTypes mimeTypesList <- toGSList mimeTypesPtrs {#call unsafe source_language_set_mime_types#} sl mimeTypesList {#call unsafe g_slist_free#} mimeTypesList -- | -- sourceLanguageGetStyleScheme :: SourceLanguage -> IO SourceStyleScheme sourceLanguageGetStyleScheme sl = makeNewGObject mkSourceStyleScheme $ {#call unsafe source_language_get_style_scheme#} sl -- | -- sourceLanguageSetStyleScheme :: SourceLanguage -> SourceStyleScheme -> IO () sourceLanguageSetStyleScheme sl ss = {#call unsafe source_language_set_style_scheme#} sl ss -- | -- sourceLanguageGetTagStyle :: SourceLanguage -> String -> IO SourceTagStyle sourceLanguageGetTagStyle sl tag = withCString tag $ \strPtr1 -> do sts <- {#call unsafe source_language_get_tag_style#} sl strPtr1 peek (castPtr sts) -- | -- sourceLanguageSetTagStyle :: SourceLanguage -> String -> SourceTagStyle -> IO () sourceLanguageSetTagStyle sl tag sts = withCString tag $ \strPtr1 -> alloca $ \sts' -> do poke sts' sts {#call unsafe source_language_set_tag_style#} sl strPtr1 (castPtr sts') -- | -- sourceLanguageGetTagDefaultStyle :: SourceLanguage -> String -> IO SourceTagStyle sourceLanguageGetTagDefaultStyle sl tag = withCString tag $ \strPtr1 -> do sts <- {#call unsafe source_language_get_tag_default_style#} sl strPtr1 peek (castPtr sts) --- NEW FILE: SourceIter.chs --- -- -*-haskell-*- -- GIMP Toolkit (GTK) SourceIter -- -- Author : Duncan Coutts -- -- Created: 15 April 2004 -- -- 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. -- -- | -- -- Adds extra useful methods for "TextIter" for searching forwards and -- backwards within a region in the buffer and matching brackets. -- -- * There is no SourceIter object, just extra methods for "TextIter" -- module Graphics.UI.Gtk.SourceView.SourceIter ( sourceIterForwardSearch, sourceIterBackwardSearch, sourceIterFindMatchingBracket ) where import Monad (liftM) import Maybe (fromMaybe) import System.Glib.FFI import System.Glib.UTFString import System.Glib.GObject (makeNewGObject) import Graphics.UI.Gtk.Abstract.Object (makeNewObject) {#import Graphics.UI.Gtk.Types#} {#import Graphics.UI.Gtk.SourceView.Types#} {#import Graphics.UI.Gtk.Multiline.TextIter#} import Graphics.UI.Gtk.General.Enums (Flags(fromFlags)) {# context lib="gtk" prefix="gtk" #} {# enum SourceSearchFlags {underscoreToCase} deriving(Bounded) #} instance Flags SourceSearchFlags -- methods -- | same as 'textIterForwardSearch' but allows -- case insensitive search and possibly in the future regular expressions. -- sourceIterForwardSearch :: TextIter -> String -> [SourceSearchFlags] -> Maybe TextIter -> IO (Maybe (TextIter, TextIter)) sourceIterForwardSearch ti str flags limit = do start <- makeEmptyTextIter end <- makeEmptyTextIter found <- liftM toBool $ withUTFString str $ \cStr -> {#call unsafe source_iter_forward_search#} ti cStr ((fromIntegral.fromFlags) flags) start end (fromMaybe (TextIter nullForeignPtr) limit) return $ if found then Just (start,end) else Nothing -- | same as 'textIterForwardSearch' but allows -- case insensitive search and possibly in the future regular expressions. -- sourceIterBackwardSearch :: TextIter -> String -> [SourceSearchFlags] -> Maybe TextIter -> IO (Maybe (TextIter, TextIter)) sourceIterBackwardSearch ti str flags limit = do start <- makeEmptyTextIter end <- makeEmptyTextIter found <- liftM toBool $ withUTFString str $ \cStr -> {#call unsafe source_iter_backward_search#} ti cStr ((fromIntegral.fromFlags) flags) start end (fromMaybe (TextIter nullForeignPtr) limit) return $ if found then Just (start,end) else Nothing -- | Tries to match the bracket character -- currently at the given iter with its opening\/closing counterpart, and if -- found moves iter to the position where it was found. -- -- * the 'TextIter' must belong to a 'SourceBuffer' -- sourceIterFindMatchingBracket :: TextIter -> IO Bool sourceIterFindMatchingBracket ti = liftM toBool $ {# call unsafe source_iter_find_matching_bracket #} ti |