{-# LINE 2 "./Graphics/UI/Gtk/Entry/EntryBuffer.chs" #-}
module Graphics.UI.Gtk.Entry.EntryBuffer (
  EntryBuffer,
  EntryBufferClass,
  castToEntryBuffer,
  toEntryBuffer,
  entryBufferNew,
  entryBufferGetBytes,
  entryBufferInsertText,
  entryBufferDeleteText,
  entryBufferEmitDeletedText,
  entryBufferEmitInsertedText,
  entryBufferText,
  entryBufferLength,
  entryBufferMaxLength,
  entryBufferInsertedText,
  entryBufferDeletedText,
  ) where
import Control.Monad (liftM)
import Data.Maybe (fromJust)
import System.Glib.FFI
import System.Glib.UTFString
import System.Glib.Attributes
import System.Glib.Properties
import Graphics.UI.Gtk.Types
{-# LINE 90 "./Graphics/UI/Gtk/Entry/EntryBuffer.chs" #-}
import Graphics.UI.Gtk.Signals
{-# LINE 91 "./Graphics/UI/Gtk/Entry/EntryBuffer.chs" #-}
{-# LINE 93 "./Graphics/UI/Gtk/Entry/EntryBuffer.chs" #-}
entryBufferNew :: GlibString string
 => Maybe string 
 -> IO EntryBuffer
entryBufferNew initialChars =
  wrapNewGObject mkEntryBuffer $
  maybeWith withUTFString initialChars $ \initialCharsPtr -> do
    let chars = if initialCharsPtr == nullPtr
                   then (-1)
                   else stringLength $ fromJust initialChars
    gtk_entry_buffer_new
{-# LINE 114 "./Graphics/UI/Gtk/Entry/EntryBuffer.chs" #-}
      initialCharsPtr
      (fromIntegral chars)
entryBufferGetBytes :: EntryBufferClass self => self
 -> IO Int 
entryBufferGetBytes self =
  liftM fromIntegral $
  (\(EntryBuffer arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_entry_buffer_get_bytes argPtr1)
{-# LINE 129 "./Graphics/UI/Gtk/Entry/EntryBuffer.chs" #-}
    (toEntryBuffer self)
entryBufferInsertText :: (EntryBufferClass self, GlibString string) => self
 -> Int 
 -> string 
 -> IO Int 
entryBufferInsertText self position chars =
  liftM fromIntegral $
  withUTFStringLen chars $ \ (charsPtr, len) ->
  (\(EntryBuffer arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->gtk_entry_buffer_insert_text argPtr1 arg2 arg3 arg4)
{-# LINE 144 "./Graphics/UI/Gtk/Entry/EntryBuffer.chs" #-}
    (toEntryBuffer self)
    (fromIntegral position)
    charsPtr
    (fromIntegral len)
entryBufferDeleteText :: EntryBufferClass self => self
 -> Int 
 -> Int 
 -> IO Int 
entryBufferDeleteText self position nChars =
  liftM fromIntegral $
  (\(EntryBuffer arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_entry_buffer_delete_text argPtr1 arg2 arg3)
{-# LINE 162 "./Graphics/UI/Gtk/Entry/EntryBuffer.chs" #-}
    (toEntryBuffer self)
    (fromIntegral position)
    (fromIntegral nChars)
entryBufferEmitDeletedText :: EntryBufferClass self => self
 -> Int 
 -> Int 
 -> IO ()
entryBufferEmitDeletedText self position nChars =
  (\(EntryBuffer arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_entry_buffer_emit_deleted_text argPtr1 arg2 arg3)
{-# LINE 176 "./Graphics/UI/Gtk/Entry/EntryBuffer.chs" #-}
    (toEntryBuffer self)
    (fromIntegral position)
    (fromIntegral nChars)
entryBufferEmitInsertedText :: (EntryBufferClass self, GlibString string) => self
 -> Int 
 -> string 
 -> Int 
 -> IO ()
entryBufferEmitInsertedText self position chars nChars =
  withUTFString chars $ \charsPtr ->
  (\(EntryBuffer arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->gtk_entry_buffer_emit_inserted_text argPtr1 arg2 arg3 arg4)
{-# LINE 192 "./Graphics/UI/Gtk/Entry/EntryBuffer.chs" #-}
    (toEntryBuffer self)
    (fromIntegral position)
    charsPtr
    (fromIntegral nChars)
entryBufferText :: (EntryBufferClass self, GlibString string) => Attr self string
entryBufferText = newAttrFromStringProperty "text"
entryBufferLength :: EntryBufferClass self => ReadAttr self Int
entryBufferLength = readAttrFromIntProperty "length"
entryBufferMaxLength :: EntryBufferClass self => Attr self Int
entryBufferMaxLength = newAttrFromIntProperty "max-length"
entryBufferInsertedText :: (EntryBufferClass self, GlibString string) => Signal self (Int -> string -> Int -> IO ())
entryBufferInsertedText = Signal (connect_INT_GLIBSTRING_INT__NONE "inserted_text")
entryBufferDeletedText :: EntryBufferClass self => Signal self (Int -> Int -> IO ())
entryBufferDeletedText = Signal (connect_INT_INT__NONE "deleted_text")
foreign import ccall safe "gtk_entry_buffer_new"
  gtk_entry_buffer_new :: ((Ptr CChar) -> (CInt -> (IO (Ptr EntryBuffer))))
foreign import ccall safe "gtk_entry_buffer_get_bytes"
  gtk_entry_buffer_get_bytes :: ((Ptr EntryBuffer) -> (IO CULong))
foreign import ccall safe "gtk_entry_buffer_insert_text"
  gtk_entry_buffer_insert_text :: ((Ptr EntryBuffer) -> (CUInt -> ((Ptr CChar) -> (CInt -> (IO CUInt)))))
foreign import ccall safe "gtk_entry_buffer_delete_text"
  gtk_entry_buffer_delete_text :: ((Ptr EntryBuffer) -> (CUInt -> (CInt -> (IO CUInt))))
foreign import ccall safe "gtk_entry_buffer_emit_deleted_text"
  gtk_entry_buffer_emit_deleted_text :: ((Ptr EntryBuffer) -> (CUInt -> (CUInt -> (IO ()))))
foreign import ccall safe "gtk_entry_buffer_emit_inserted_text"
  gtk_entry_buffer_emit_inserted_text :: ((Ptr EntryBuffer) -> (CUInt -> ((Ptr CChar) -> (CUInt -> (IO ())))))