Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/basic_exports.jl
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export new, width, height, #minsize, maxsize
selected, hasselection, unselect!, selectall!, unselectall!,
pagenumber, present, fullscreen, unfullscreen,
maximize, unmaximize, complete, user_action,
keyval, prev, up, down, popup
keyval, prev, up, down, popup, place_cursor!, create_tag, apply_tag
#property, margin, padding, align
#raise, focus, destroy, enabled

Expand Down
2 changes: 1 addition & 1 deletion src/displays.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ convert{U<:Unsigned}(::Type{U},x::RGB) = convert(U,(x.r)|(x.g>>8)|(x.b>>16))

immutable RGBA
r::UInt8; g::UInt8; b::UInt8; a::UInt8
RGBA(r,g,b) = new(r,g,b)
RGBA(r,g,b,a) = new(r,g,b,q)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

r,g,b,a

end
convert(::Type{RGBA},x::Unsigned) = RGBA(UInt8(x),UInt8(x>>8),UInt8(x>>16),UInt8(x>>24))
convert{U<:Unsigned}(::Type{U},x::RGBA) = convert(U,(x.r)|(x.g>>8)|(x.b>>16)|(x.a>>24))
Expand Down
10 changes: 10 additions & 0 deletions src/gdk.jl
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,16 @@ immutable GdkPoint
end
# GdkPoint is not a GBoxed type

immutable GdkRGBA
red::Cdouble
green::Cdouble
blue::Cdouble
alpha::Cdouble
GdkRGBA(red, green, blue, alpha) = new(red, green, blue, alpha)
end
make_gvalue(GdkRGBA, Ptr{GdkRGBA}, :boxed, (:gdk_rgba,:libgdk))
convert(::Type{GdkRGBA}, rgba::Ptr{GdkRGBA}) = unsafe_load(rgba)

gdk_window(w::GtkWidget) = ccall((:gtk_widget_get_window,libgtk),Ptr{Void},(Ptr{GObject},),w)

baremodule GdkKeySyms
Expand Down
1 change: 1 addition & 0 deletions src/gtktypes.jl
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ macro gtktype(name)
@gtktype_custom_symname $(esc(name)) $(esc(symname))
end
end
@gtktype GdkRGBA
@gtktype GtkWidget
@gtktype GtkContainer
@gtktype GtkBin
Expand Down
1 change: 1 addition & 0 deletions src/long_exports.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Gtk objects
export GObject,
GdkPixbuf,
GdkRGBA,
GtkAboutDialog,
GtkAccelGroup,
GtkAdjustment,
Expand Down
69 changes: 41 additions & 28 deletions src/text.jl
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ GtkTextTagLeaf() = GtkTextTagLeaf(
GtkTextTagLeaf(name::AbstractString) = GtkTextTagLeaf(
ccall((:gtk_text_tag_new,libgtk),Ptr{GObject},(Ptr{UInt8},),bytestring(name)))



immutable GtkTextIter
dummy1::Ptr{Void}
dummy2::Ptr{Void}
Expand Down Expand Up @@ -87,6 +89,12 @@ end
#TODO
#end

# setproperty!(w::Gtk.GtkTextTag, name::Symbol, value) = setproperty!(w, string(name), value)
# function setproperty!(w::Gtk.GtkTextTag, name::AbstractStringLike, value)
# println(libgobject)
# ccall((:g_object_set_property, libgobject), Void,
# (Ptr{GObject}, Ptr{UInt8}, Ptr{GdkRGBA}), w, GLib.bytestring(name), Ptr(value))
# end

##### GtkTextIter #####
#TODO: search
Expand Down Expand Up @@ -115,25 +123,25 @@ function getproperty(text::TI, key::Symbol, outtype::Type=Any)
# elseif key === :child_anchor
# convert(GtkTextChildAnchor,ccall((:gtk_text_iter_get_child_anchor,libgtk),Ptr{GtkTextChildAnchor},(Ptr{GtkTextIter},Cint),text,false))
elseif key === :can_insert
bool(ccall((:gtk_text_iter_can_insert,libgtk),Cint,(Ptr{GtkTextIter},Cint),text,true))
Bool(ccall((:gtk_text_iter_can_insert,libgtk),Cint,(Ptr{GtkTextIter},Cint),text,true))
elseif key === :starts_word
bool(ccall((:gtk_text_iter_starts_word,libgtk),Cint,(Ptr{GtkTextIter},),text))
Bool(ccall((:gtk_text_iter_starts_word,libgtk),Cint,(Ptr{GtkTextIter},),text))
elseif key === :ends_word
bool(ccall((:gtk_text_iter_ends_word,libgtk),Cint,(Ptr{GtkTextIter},),text))
Bool(ccall((:gtk_text_iter_ends_word,libgtk),Cint,(Ptr{GtkTextIter},),text))
elseif key === :inside_word
bool(ccall((:gtk_text_iter_inside_word,libgtk),Cint,(Ptr{GtkTextIter},),text))
Bool(ccall((:gtk_text_iter_inside_word,libgtk),Cint,(Ptr{GtkTextIter},),text))
elseif key === :starts_line
bool(ccall((:gtk_text_iter_starts_line,libgtk),Cint,(Ptr{GtkTextIter},),text))
Bool(ccall((:gtk_text_iter_starts_line,libgtk),Cint,(Ptr{GtkTextIter},),text))
elseif key === :ends_line
bool(ccall((:gtk_text_iter_ends_line,libgtk),Cint,(Ptr{GtkTextIter},),text))
Bool(ccall((:gtk_text_iter_ends_line,libgtk),Cint,(Ptr{GtkTextIter},),text))
elseif key === :starts_sentence
bool(ccall((:gtk_text_iter_starts_sentence,libgtk),Cint,(Ptr{GtkTextIter},),text))
Bool(ccall((:gtk_text_iter_starts_sentence,libgtk),Cint,(Ptr{GtkTextIter},),text))
elseif key === :ends_sentence
bool(ccall((:gtk_text_iter_ends_sentence,libgtk),Cint,(Ptr{GtkTextIter},),text))
Bool(ccall((:gtk_text_iter_ends_sentence,libgtk),Cint,(Ptr{GtkTextIter},),text))
elseif key === :inside_sentence
bool(ccall((:gtk_text_iter_inside_sentence,libgtk),Cint,(Ptr{GtkTextIter},),text))
Bool(ccall((:gtk_text_iter_inside_sentence,libgtk),Cint,(Ptr{GtkTextIter},),text))
elseif key === :is_cursor_position
bool(ccall((:gtk_text_iter_is_cursor_position,libgtk),Cint,(Ptr{GtkTextIter},),text))
Bool(ccall((:gtk_text_iter_is_cursor_position,libgtk),Cint,(Ptr{GtkTextIter},),text))
elseif key === :chars_in_line
ccall((:gtk_text_iter_get_chars_in_line,libgtk),Cint,(Ptr{GtkTextIter},),text)
elseif key === :bytes_in_line
Expand All @@ -146,9 +154,9 @@ function getproperty(text::TI, key::Symbol, outtype::Type=Any)
# elseif key === :language
# ccall((:gtk_text_iter_get_language,libgtk),Ptr{PangoLanguage},(Ptr{GtkTextIter},Ptr{GtkTextAttributes}),text)
elseif key === :is_end
bool(ccall((:gtk_text_iter_is_end,libgtk),Cint,(Ptr{GtkTextIter},),text))
Bool(ccall((:gtk_text_iter_is_end,libgtk),Cint,(Ptr{GtkTextIter},),text))
elseif key === :is_start
bool(ccall((:gtk_text_iter_is_start,libgtk),Cint,(Ptr{GtkTextIter},),text))
Bool(ccall((:gtk_text_iter_is_start,libgtk),Cint,(Ptr{GtkTextIter},),text))
elseif key === :char
convert(Char,ccall((:gtk_text_iter_get_char,libgtk),UInt32,(Ptr{GtkTextIter},),text))
elseif key === :pixbuf
Expand Down Expand Up @@ -178,7 +186,7 @@ function setproperty!(text::Mutable{GtkTextIter},key::Symbol,value)
end
return text
end
@compat(Base.:(==))(lhs::TI,rhs::TI) = bool(ccall((:gtk_text_iter_equal,libgtk),
@compat(Base.:(==))(lhs::TI,rhs::TI) = Bool(ccall((:gtk_text_iter_equal,libgtk),
Cint,(Ptr{GtkTextIter},Ptr{GtkTextIter}),mutable(lhs),mutable(rhs)))
@compat(Base.:(!=))(lhs::TI,rhs::TI) = !(lhs == rhs)
@compat(Base.:(<))(lhs::TI,rhs::TI) = ccall((:gtk_text_iter_compare,libgtk),Cint,
Expand All @@ -197,37 +205,37 @@ done(::TI,iter) = getproperty(iter,:is_end)::Bool
@compat(Base.:+)(iter::TI, count::Integer) = (iter = mutable(copy(iter)); skip(iter, count); iter)
@compat(Base.:-)(iter::TI, count::Integer) = (iter = mutable(copy(iter)); skip(iter, -count); iter)
Base.skip(iter::Mutable{GtkTextIter}, count::Integer) =
bool(ccall((:gtk_text_iter_forward_chars,libgtk),Cint,
Bool(ccall((:gtk_text_iter_forward_chars,libgtk),Cint,
(Ptr{GtkTextIter},Cint), iter, count))
function Base.skip(iter::Mutable{GtkTextIter}, count::Integer, what::Symbol)
if what === :char || what === :chars
bool(ccall((:gtk_text_iter_forward_chars,libgtk),Cint,
Bool(ccall((:gtk_text_iter_forward_chars,libgtk),Cint,
(Ptr{GtkTextIter},Cint), iter, count))
elseif what === :line || what === :lines
bool(ccall((:gtk_text_iter_forward_lines,libgtk),Cint,
Bool(ccall((:gtk_text_iter_forward_lines,libgtk),Cint,
(Ptr{GtkTextIter},Cint), iter, count))
elseif what === :word || what === :words
bool(ccall((:gtk_text_iter_forward_word_ends,libgtk),Cint,
Bool(ccall((:gtk_text_iter_forward_word_ends,libgtk),Cint,
(Ptr{GtkTextIter},Cint), iter, count))
elseif what === :word_cursor_position || what === :word_cursor_positions
bool(ccall((:gtk_text_iter_forward_cursor_positions,libgtk),Cint,
Bool(ccall((:gtk_text_iter_forward_cursor_positions,libgtk),Cint,
(Ptr{GtkTextIter},Cint), iter, count))
elseif what === :sentence || what === :sentences
bool(ccall((:gtk_text_iter_forward_sentence_ends,libgtk),Cint,
Bool(ccall((:gtk_text_iter_forward_sentence_ends,libgtk),Cint,
(Ptr{GtkTextIter},Cint), iter, count))
elseif what === :visible_word || what === :visible_words
bool(ccall((:gtk_text_iter_forward_visible_word_ends,libgtk),Cint,
Bool(ccall((:gtk_text_iter_forward_visible_word_ends,libgtk),Cint,
(Ptr{GtkTextIter},Cint), iter, count))
elseif what === :visible_cursor_position || what === :visible_cursor_positions
bool(ccall((:gtk_text_iter_forward_visible_cursor_positions,libgtk),Cint,
Bool(ccall((:gtk_text_iter_forward_visible_cursor_positions,libgtk),Cint,
(Ptr{GtkTextIter},Cint), iter, count))
elseif what === :visible_line || what === :visible_lines
bool(ccall((:gtk_text_iter_forward_visible_lines,libgtk),Cint,
Bool(ccall((:gtk_text_iter_forward_visible_lines,libgtk),Cint,
(Ptr{GtkTextIter},Cint), iter, count))
elseif what === :line_end || what === :line_ends
count >= 0 || error("GtkTextIter cannot iterate line_ends backwards")
for i = 1:count
if !bool(ccall((:gtk_text_iter_forward_visible_lines,libgtk),Cint,
if !Bool(ccall((:gtk_text_iter_forward_visible_lines,libgtk),Cint,
(Ptr{GtkTextIter},Cint), iter, count))
return false
end
Expand Down Expand Up @@ -302,7 +310,7 @@ function splice!(text::GtkTextBuffer,index::GtkTextRange)
(Ptr{GObject},Ptr{GtkTextIter},Ptr{GtkTextIter}),text,first(index),last(index))
text
end
in(x::TI, r::GtkTextRange) = bool(ccall((:gtk_text_iter_in_range,libgtk),Cint,
in(x::TI, r::GtkTextRange) = Bool(ccall((:gtk_text_iter_in_range,libgtk),Cint,
(Ptr{GtkTextIter},Ptr{GtkTextIter},Ptr{GtkTextIter}),mutable(x),first(r),last(r)))


Expand Down Expand Up @@ -336,6 +344,11 @@ function splice!(text::GtkTextBuffer)
(Ptr{GObject},Cint,Cint),text,false,true)
text
end
function place_cursor!(text::GtkTextBuffer,index::TI)
ccall((:gtk_text_buffer_place_cursor,libgtk),Void,
(Ptr{GObject},Ptr{GtkTextIter}),text,index)
text
end

begin_user_action(buffer::GtkTextBuffer) =
ccall((:gtk_text_buffer_begin_user_action,libgtk),Void,(Ptr{GObject},),buffer)
Expand Down Expand Up @@ -389,7 +402,7 @@ function gtk_text_view_get_buffer(text::GtkTextView)
end
function gtk_text_view_get_editable(text::GtkTextView)
# This is an internal function. Users should use text[:editable,Bool] instead
bool(ccall((:gtk_text_view_get_editable,libgtk),Cint,(Ptr{GObject},),text))
Bool(ccall((:gtk_text_view_get_editable,libgtk),Cint,(Ptr{GObject},),text))
end
function insert!(text::GtkTextView,index::TI,child::GtkWidget)
index = mutable(index)
Expand All @@ -401,13 +414,13 @@ function insert!(text::GtkTextView,index::TI,child::GtkWidget)
end

function insert!(text::GtkTextView,index::TI,str::AbstractString)
bool(ccall((:gtk_text_buffer_insert_interactive,libgtk),Cint,
Bool(ccall((:gtk_text_buffer_insert_interactive,libgtk),Cint,
(Ptr{GObject},Ptr{GtkTextIter},Ptr{UInt8},Cint,Cint),
gtk_text_view_get_buffer(text),mutable(index),bytestring(str),sizeof(str),gtk_text_view_get_editable(text)))
text
end
function insert!(text::GtkTextView,str::AbstractString)
bool(ccall((:gtk_text_buffer_insert_interactive_at_cursor,libgtk),Cint,
Bool(ccall((:gtk_text_buffer_insert_interactive_at_cursor,libgtk),Cint,
(Ptr{GObject},Ptr{UInt8},Cint,Cint),
gtk_text_view_get_buffer(text),bytestring(str),sizeof(str),gtk_text_view_get_editable(text)))
text
Expand All @@ -429,7 +442,7 @@ end
#### GtkTextMark ####

visible(w::GtkTextMark) =
bool(ccall((:gtk_text_mark_get_visible,libgtk),Cint,(Ptr{GObject},),w))
Bool(ccall((:gtk_text_mark_get_visible,libgtk),Cint,(Ptr{GObject},),w))
visible(w::GtkTextMark, state::Bool) =
ccall((:gtk_text_mark_set_visible,libgtk),Void,(Ptr{GObject},Cint),w,state)
show(w::GtkTextMark) = visible(w,true)