module Graphics.UI.Gtk.SourceView.SourceGutter (
SourceGutter,
SourceGutterClass,
sourceGutterGetWindow,
sourceGutterSetCellDataFunc,
sourceGutterSetCellSizeFunc,
sourceGutterView,
sourceGutterWindowType,
sourceGutterCellActivated,
sourceGutterQueryTooltip,
) where
import Control.Monad (liftM)
import Control.Monad.Reader ( runReaderT )
import Graphics.UI.Gtk.Gdk.EventM (EventM, EAny)
import Graphics.UI.Gtk.Multiline.TextView (TextWindowType (..))
import Graphics.UI.GtkInternals ( TextIter, mkTextIterCopy )
import System.Glib.Attributes
import System.Glib.FFI
import System.Glib.GObject (makeNewGObject)
import System.Glib.Properties
import System.Glib.UTFString
import Graphics.UI.Gtk.SourceView.Signals
import Graphics.UI.Gtk.SourceView.Types
type SourceGutterDataFunc = FunPtr (((Ptr SourceGutter) -> ((Ptr CellRenderer) -> (CInt -> (CInt -> ((Ptr ()) -> (IO ())))))))
foreign import ccall "wrapper" mkSourceGutterDataFunc ::
(Ptr SourceGutter -> Ptr CellRenderer -> (CInt) -> (CInt) -> Ptr () -> IO ())
-> IO SourceGutterDataFunc
type SourceGutterSizeFunc = FunPtr (((Ptr SourceGutter) -> ((Ptr CellRenderer) -> ((Ptr ()) -> (IO ())))))
foreign import ccall "wrapper" mkSourceGutterSizeFunc ::
(Ptr SourceGutter -> Ptr CellRenderer -> Ptr () -> IO ())
-> IO SourceGutterSizeFunc
sourceGutterGetWindow :: SourceGutterClass sg => sg -> IO (Maybe DrawWindow)
sourceGutterGetWindow sb =
maybeNull (makeNewGObject mkDrawWindow) $
(\(SourceGutter arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_source_gutter_get_window argPtr1) (toSourceGutter sb)
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)
(\(SourceGutter arg1) (CellRenderer arg2) arg3 arg4 arg5 -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gtk_source_gutter_set_cell_data_func argPtr1 argPtr2 arg3 arg4 arg5)
(toSourceGutter gutter)
(toCellRenderer cell)
funcPtr
(castFunPtrToPtr funcPtr)
destroyFunPtr
sourceGutterSetCellSizeFunc :: (SourceGutterClass gutter, CellRendererClass cell)
=> gutter
-> cell
-> (CellRenderer -> IO ())
-> IO ()
sourceGutterSetCellSizeFunc gutter cell func = do
funcPtr <- mkSourceGutterSizeFunc $ \ _ c _ -> do
func (toCellRenderer cell)
(\(SourceGutter arg1) (CellRenderer arg2) arg3 arg4 arg5 -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gtk_source_gutter_set_cell_size_func argPtr1 argPtr2 arg3 arg4 arg5)
(toSourceGutter gutter)
(toCellRenderer cell)
funcPtr
(castFunPtrToPtr funcPtr)
destroyFunPtr
sourceGutterView :: SourceGutterClass sg => Attr sg SourceView
sourceGutterView = newAttrFromObjectProperty "view"
gtk_source_view_get_type
sourceGutterWindowType :: SourceGutterClass sg => Attr sg TextWindowType
sourceGutterWindowType = newAttrFromEnumProperty "window-type"
gtk_text_window_type_get_type
sourceGutterCellActivated :: SourceGutterClass sg => Signal sg (CellRenderer -> TextIter -> EventM EAny ())
sourceGutterCellActivated =
Signal (\after obj fun ->
connect_OBJECT_BOXED_PTR__NONE "cell-activated" mkTextIterCopy after obj
(\cr iter eventPtr -> runReaderT (fun cr iter) eventPtr)
)
sourceGutterQueryTooltip :: SourceGutterClass sg => Signal sg (CellRenderer -> TextIter -> Tooltip -> IO Bool)
sourceGutterQueryTooltip =
Signal $ connect_OBJECT_BOXED_OBJECT__BOOL "query-tooltip" mkTextIterCopy
foreign import ccall safe "gtk_source_gutter_get_window"
gtk_source_gutter_get_window :: ((Ptr SourceGutter) -> (IO (Ptr DrawWindow)))
foreign import ccall safe "gtk_source_gutter_set_cell_data_func"
gtk_source_gutter_set_cell_data_func :: ((Ptr SourceGutter) -> ((Ptr CellRenderer) -> ((FunPtr ((Ptr SourceGutter) -> ((Ptr CellRenderer) -> (CInt -> (CInt -> ((Ptr ()) -> (IO ()))))))) -> ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO ()))) -> (IO ()))))))
foreign import ccall safe "gtk_source_gutter_set_cell_size_func"
gtk_source_gutter_set_cell_size_func :: ((Ptr SourceGutter) -> ((Ptr CellRenderer) -> ((FunPtr ((Ptr SourceGutter) -> ((Ptr CellRenderer) -> ((Ptr ()) -> (IO ()))))) -> ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO ()))) -> (IO ()))))))
foreign import ccall unsafe "gtk_source_view_get_type"
gtk_source_view_get_type :: CULong
foreign import ccall unsafe "gtk_text_window_type_get_type"
gtk_text_window_type_get_type :: CULong