'Rich Text' Editor
include GtkEngine.e
include std/filesys.e
include std/machine.e
constant win = create(GtkWindow)
connect(win,"destroy",quit)
set(win,"title","Rich Text")
set(win,"name","Main Window")
set(win,"position",GTK_WIN_POS_CENTER)
set(win,"default size",500,300)
constant panel = create(GtkVBox)
add(win,panel)
constant statusbar = create(GtkStatusBar)
constant context = get(statusbar,"context id","Main")
constant scroller = create(GtkScrolledWindow)
set(scroller,"border width",2)
add(panel,scroller)
constant textedit = create(GtkTextView)
set(textedit,"modify base",0,"black")
set(textedit,"modify text",0,"green")
set(textedit,"left margin",10)
set(textedit,"right margin",10)
set(textedit,"wrap mode",GTK_WRAP_WORD)
set(textedit,"cursor visible",TRUE)
set(textedit,"modify font","Courier 12")
add(scroller,textedit)
constant buffer = get(textedit,"buffer")
register_object(buffer,GtkTextBuffer)
constant
bold = get(buffer,"create tag","bold","weight","bold"),
blue = get(buffer,"create tag","blue_bg","background", "blue"),
black = get(buffer,"create tag","black_fg","foreground","black"),
white = get(buffer,"create tag","white_fg","foreground","white"),
red = get(buffer,"create tag","red_fg","foreground","red"),
green = get(buffer,"create tag","grn_bg","background","#005000"),
fnt = get(buffer,"create tag","script","font","URW Chancery L 24"),
small = get(buffer,"create tag","small","font","Courier Bold 8")
atom iter
iter = get(buffer,"iter at offset",0) ? buffer
set(buffer,"insert with tags",iter,"Hello World! ",bold)
set(buffer,"insert",iter,"More Stuff Here -> ")
set(buffer,"insert with tags",iter," Hi there! \n",blue,white,bold)
set(buffer,"insert with tags",iter,"Fancy Fonts\n",white,fnt)
set(buffer,"insert",iter,"Try editing lines, also right-click and select different languages!\n")
set(buffer,"insert with tags",iter,"You can even copy/paste images...\ntry the penguin!\n",small,red)
object img = create(GtkImage,"~/demos/thumbnails/BabyTux.png")
img = get(img,"pixbuf")
set(buffer,"insert pixbuf",iter,img)
set(buffer,"insert with tags",iter,"\tTry copying and pasting from other programs!\n\n",fnt,small,red)
set(buffer,"insert with tags",iter,"LGPL\n",bold,white)
set(buffer,"insert with tags",iter,LGPL,small)
constant btnbox = create(GtkHButtonBox)
pack(panel,-btnbox)
constant btn1 = create(GtkButton,"gtk-quit")
connect(btn1,"clicked",quit)
add(btnbox,btn1)
pack(panel,-statusbar)
function UpdateStats()
set(statusbar,"push",context,sprintf("%d Lines, %d Chars",
{get(buffer,"line count"),get(buffer,"char count")}))
return 1
end function
connect(buffer,"changed",call_back(routine_id("UpdateStats")))
show_all(win)
UpdateStats()
main()
------------------------------------------------------------------------
-- Copyright 2010 by Irv Mullins all code released under the LGPL
------------------------------------------------------------------------