added eugtk examples
This commit is contained in:
188
eugtk/examples/glade/test25.ex
Normal file
188
eugtk/examples/glade/test25.ex
Normal file
@@ -0,0 +1,188 @@
|
||||
|
||||
--# File Editor, Glade version of test25.ex
|
||||
|
||||
include GtkEngine.e
|
||||
include GtkPrinter.e
|
||||
|
||||
constant docs = `Demonstrates
|
||||
menus,
|
||||
file chooser,
|
||||
file filters,
|
||||
recent chooser,
|
||||
fonts,
|
||||
exec, etc`
|
||||
|
||||
add(builder,"~/demos/glade/test25.glade")
|
||||
|
||||
object current_font = get("fontchooserdialog1","font")
|
||||
set("textview1","font",current_font)
|
||||
set("fontchooserdialog1","font",current_font)
|
||||
|
||||
object current_file = 0
|
||||
|
||||
-- Can't find a way to add more than one filter directly in Glade,
|
||||
-- nor any way to set the filter's name, which is what shows in the
|
||||
-- drop down filter selector... so we do it manually:
|
||||
|
||||
FileFilter f1 = get(builder,"object","filefilter1")
|
||||
set(f1,"name","Euphoria files")
|
||||
set("filechooserdialog1","add filter",f1)
|
||||
|
||||
FileFilter f2 = get(builder,"object","filefilter2")
|
||||
set(f2,"name","All Text Files")
|
||||
set("filechooserdialog1","add filter",f2)
|
||||
|
||||
-- seems that Glade has no way to directly add a drop-down
|
||||
-- RecentChooser to main menu so we do this the 'old fashioned' way;
|
||||
|
||||
RecentFilter rcf = pointer("recentfilter1")
|
||||
RecentChooserMenu rc_menu = create(GtkRecentChooserMenu,{
|
||||
{"add filter",rcf},
|
||||
{"sort type",GTK_RECENT_SORT_MRU},
|
||||
{"show icons",TRUE},
|
||||
{"local only",TRUE},
|
||||
{"show numbers",TRUE},
|
||||
{"show tips",TRUE}})
|
||||
set("recent_menu","submenu",rc_menu)
|
||||
connect(rc_menu,"selection-done","open_recent",rc_menu)
|
||||
|
||||
main()
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
global function menu_open_file(Button self, atom dialog)
|
||||
------------------------------------------------------------------------------
|
||||
object fn -- storage for filename
|
||||
if get(dialog,"run") = 1 -- 'ok' button's Response ID (must set in Glade)
|
||||
then fn = get(dialog,"filename") -- actually, gets the full path to file
|
||||
if file_exists(fn) then
|
||||
LoadText(fn)
|
||||
end if
|
||||
end if
|
||||
set(dialog,"hide") -- don't destroy this dialog, keep it for later use
|
||||
return 1
|
||||
end function
|
||||
|
||||
------------------------------------------------------------------------
|
||||
global function open_recent()
|
||||
------------------------------------------------------------------------
|
||||
object fn = get(rc_menu,"current uri")
|
||||
fn = fn[8..$] -- discard the leading FILE:///
|
||||
if file_exists(fn) then
|
||||
LoadText(fn)
|
||||
end if
|
||||
return 1
|
||||
end function
|
||||
|
||||
---------------------------------
|
||||
procedure LoadText(sequence fn)
|
||||
---------------------------------
|
||||
set("window1","title",fn)
|
||||
set("textbuffer1","text",read_file(fn))
|
||||
set("menu_close","sensitive",TRUE)
|
||||
set("menu_open","sensitive",FALSE)
|
||||
set("menu_exec","sensitive",TRUE)
|
||||
set("menu_print","sensitive",TRUE)
|
||||
current_file = fn
|
||||
end procedure
|
||||
|
||||
------------------------------------------------------------------------
|
||||
global function menu_close_file(atom self, atom data)
|
||||
------------------------------------------------------------------------
|
||||
set("textbuffer1","text","") -- clear the text
|
||||
set("menu_close","sensitive",FALSE)
|
||||
set("menu_open","sensitive",TRUE)
|
||||
set("menu_exec","sensitive",FALSE)
|
||||
set("menu_print","sensitive",FALSE)
|
||||
return 1
|
||||
end function
|
||||
|
||||
------------------------------------------------------------------------
|
||||
global function on_menu_exec_activate()
|
||||
------------------------------------------------------------------------
|
||||
system("eui " & current_file & " & ",0) -- run the current file;
|
||||
return 1
|
||||
end function
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
global function on_menu_print_activate()
|
||||
-----------------------------------------------------------------------
|
||||
printer:PrintFile(current_file)
|
||||
return 1
|
||||
end function
|
||||
|
||||
------------------------------------------------------------------------
|
||||
global function on_menu_colors_activate(atom self, atom view)
|
||||
------------------------------------------------------------------------
|
||||
-- hack:
|
||||
-- colors are passed in Glade 'name' field as fgnd,bkgnd (no quotes)
|
||||
object params = split(get(self,"name"),',')
|
||||
set(view,"foreground",params[1])
|
||||
set(view,"background",params[2])
|
||||
return 1
|
||||
end function
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
global function on_menu_font_activate(atom self, atom dialog)
|
||||
-------------------------------------------------------------------------------
|
||||
set(dialog,"filter func",call_back(routine_id("FilterFonts")))
|
||||
set(dialog,"font",current_font)
|
||||
if get(dialog,"run") then
|
||||
current_font = get(dialog,"font")
|
||||
set("textview1","font",current_font)
|
||||
set(dialog,"hide")
|
||||
end if
|
||||
return 1
|
||||
end function
|
||||
|
||||
------------------------------------------------------------------------
|
||||
function FilterFonts(atom family)
|
||||
------------------------------------------------------------------------
|
||||
sequence fontlist = { -- faces to show in font selection dialog;
|
||||
"DejaVu Sans Mono","Courier 10 Pitch","Courier New","FreeSerif",
|
||||
"Impact","URW Chancery L","Comic","Purisa","Arial","Arial Black",
|
||||
"Sawasdee","Balmoral D","Ubuntu Mono"
|
||||
}
|
||||
object fontname = gtk_str_func("pango_font_family_get_name",{P},{family})
|
||||
-- process each font the dialog tries to load;
|
||||
return find(fontname,fontlist)
|
||||
-- return 1 if it's on our list, otherwise, return 0 to skip this font;
|
||||
end function
|
||||
|
||||
------------------------------------------------------------------------
|
||||
global function on_menu_normal_activate(atom self, atom view)
|
||||
------------------------------------------------------------------------
|
||||
FontDescription fnt = create(PangoFontDescription,current_font)
|
||||
set(fnt,"weight",PANGO_WEIGHT_NORMAL)
|
||||
set(fnt,"style",PANGO_STYLE_NORMAL)
|
||||
current_font = get(fnt,"to string")
|
||||
set(view,"font",current_font)
|
||||
return 1
|
||||
end function
|
||||
|
||||
------------------------------------------------------------------------
|
||||
global function on_menu_bold_activate(atom self, atom view)
|
||||
------------------------------------------------------------------------
|
||||
FontDescription fnt = create(PangoFontDescription,current_font)
|
||||
set(fnt,"weight",PANGO_WEIGHT_BOLD)
|
||||
current_font = get(fnt,"to string")
|
||||
set(view,"font",current_font)
|
||||
return 1
|
||||
end function
|
||||
|
||||
------------------------------------------------------------------------
|
||||
global function on_menu_italic_activate(atom self, atom view)
|
||||
------------------------------------------------------------------------
|
||||
FontDescription fnt = create(PangoFontDescription,current_font)
|
||||
set(fnt,"style",PANGO_STYLE_ITALIC)
|
||||
current_font = get(fnt,"to string")
|
||||
set(view,"font",current_font)
|
||||
return 1
|
||||
end function
|
||||
|
||||
------------------------------------------------------------------------
|
||||
global function on_menu_about_activate()
|
||||
------------------------------------------------------------------------
|
||||
return Info("window1"," About ",
|
||||
"Simple Text\nViewer/Editor",docs,,"accessories-text-editor","gnome-help")
|
||||
end function
|
||||
|
||||
Reference in New Issue
Block a user