-----------------------------------------------------
-- Very Simple Text edit demo
-----------------------------------------------------
include GtkEngine.e
include std/console.e
include std/machine.e
constant win = create(GtkWindow)
connect(win,"destroy",quit)
set(win,"title","Simple text")
set(win,"name","Main Window")
set(win,"default size",500,300)
set(win,"position",GTK_WIN_POS_CENTER)
constant panel = create(GtkVBox)
add(win,panel)
constant statusbar = create(GtkStatusBar)
constant context = get(statusbar,"context id","Main")
constant scroller = create(GtkScrolledWindow)
set(scroller,"policy",GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC)
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_NONE)
set(textedit,"cursor visible",TRUE)
set(textedit,"modify font","Courier Bold 12")
add(scroller,textedit)
constant buffer = get(textedit,"buffer")
register_object(buffer,GtkTextBuffer)
object dlg = create(GtkFileChooserDialog,"Save as...")
set(dlg,"add button","gtk-cancel",0)
set(dlg,"add button","gtk-ok",1)
set(dlg,"action",GTK_FILE_CHOOSER_ACTION_SAVE)
-------------------------------------------------
function Save()
-------------------------------------------------
object fn, name, text
if run(dlg) then
name = get(dlg,"filename")
fn = open(name,"w")
text = get(buffer,"text")
printf(fn,"%s",{text})
close(fn)
end if
return 1
end function
constant save = call_back(routine_id("Save"))
-----------------------------------------------------------
function Update()
-----------------------------------------------------------
set(statusbar,"push",context,sprintf("%d Lines, %d Chars",
{get(buffer,"line count"),get(buffer,"char count")}))
return 1
end function
constant update = call_back(routine_id("Update"))
function Clear()
set(buffer,"text","",0)
return Update()
end function
constant clear = call_back(routine_id("Clear"))
connect(buffer,"changed",update)
constant btnbox = create(GtkHButtonBox)
pack(panel,-btnbox)
constant btn1 = create(GtkButton,"gtk-clear")
constant btn2 = create(GtkButton,"gtk-save")
constant btn3 = create(GtkButton,"gtk-quit")
connect(btn1,"clicked",clear)
connect(btn2,"clicked",save)
connect(btn3,"clicked",quit)
add(btnbox,{btn1,btn2,btn3})
pack(panel,-statusbar)
show_all(win)
main()