added eugtk examples
This commit is contained in:
116
eugtk/examples/test153.ex
Normal file
116
eugtk/examples/test153.ex
Normal file
@@ -0,0 +1,116 @@
|
||||
|
||||
------------------------------------------------------------------------
|
||||
--# Demos use of ini or settings files, with optional data spaces;
|
||||
------------------------------------------------------------------------
|
||||
-- RUN THIS FROM AN X-TERM to see the ini contents
|
||||
|
||||
-- To use settings, you must give a unique name to each control you
|
||||
-- wish to monitor/set. This allows colors, fonts, etc. to be
|
||||
-- specified on startup, but unlike CSS, modified during the run,
|
||||
-- and more importantly, allows control *states* and *values*,
|
||||
-- not just appearance, to be preserved from run to run.
|
||||
|
||||
-- The ini code is plain text, and easier to edit than CSS.
|
||||
|
||||
include GtkEngine.e
|
||||
include GtkSettings.e -- for saving and loading settings
|
||||
include GtkFontSelector.e -- for font filter
|
||||
|
||||
constant ini = canonical_path("~/demos/resources/test153.ini")
|
||||
|
||||
create(GtkWindow,"name=MainWindow,icon=face-cool,$delete-event=BailOut")
|
||||
|
||||
add("MainWindow",create(GtkBox,"name=panel,orientation=1"))
|
||||
|
||||
add("panel",{
|
||||
create(GtkLabel,"name=Label1"),
|
||||
create(GtkCalendar,"name=MyCalendar"),
|
||||
create(GtkButtonBox,"name=Box1"),
|
||||
create(GtkButtonBox,"name=Box2")})
|
||||
|
||||
add("Box1",{
|
||||
create(GtkButton,"stock_calendar#_Today",_("SetToday")),
|
||||
create(GtkFontButton,{
|
||||
{"name","FontButton"},
|
||||
{"filter func",fontselector:filter}, -- filter out unusable fonts
|
||||
{"signal","font-set",_("SetCalFont")}})})
|
||||
|
||||
add("Box2",{
|
||||
create(GtkButton,"gtk-quit",_("BailOut")),
|
||||
create(GtkButton,"gtk-save",_("SaveState")),
|
||||
create(GtkColorButton,{
|
||||
{"name","ColorChooserButton"},
|
||||
{"signal","color-set",_("SetBkgnd")}})})
|
||||
|
||||
-- Below is the list of the active controls we want to save and load:
|
||||
object list = {"MainWindow","ColorChooserButton","FontButton","MyCalendar"}
|
||||
|
||||
settings:Load(ini) -- get settings from prior run, 1 = display on terminal, optional;
|
||||
|
||||
show_all("MainWindow")
|
||||
|
||||
main()
|
||||
|
||||
-----------------------
|
||||
function SaveState() -- save controls on list, don't exit;
|
||||
-----------------------
|
||||
settings:Save(ini,list,1) -- 1 means display on terminal, optional;
|
||||
set("MainWindow","icon","face-cool")
|
||||
return 1
|
||||
end function
|
||||
|
||||
------------------------------
|
||||
function SetBkgnd(atom ctl) -- change and save window background color
|
||||
------------------------------
|
||||
object color = get(ctl,"rgba",1) -- 1 gets color as hex string
|
||||
set("MainWindow","background",color)
|
||||
settings:Add(ini,"MainWindow","background",color) -- see note[1]
|
||||
return 1
|
||||
end function
|
||||
|
||||
--------------------------------
|
||||
function SetCalFont(atom ctl) -- change and save calendar font
|
||||
--------------------------------
|
||||
object fnt = get(ctl,"font")
|
||||
set("MyCalendar","font",fnt)
|
||||
settings:Add(ini,"MyCalendar","font",fnt) -- see note[2]
|
||||
return 1
|
||||
end function
|
||||
|
||||
----------------------
|
||||
function SetToday() -- set calendar to current computer date, save to ini
|
||||
----------------------
|
||||
set("MyCalendar","date",date())
|
||||
set("MyCalendar","mark day",get("MyCalendar","day"))
|
||||
return 1
|
||||
end function
|
||||
|
||||
---------------------
|
||||
global function BailOut() -- save all settings for next run
|
||||
---------------------
|
||||
-- show how to retrieve named 'data' items attached to a widget,
|
||||
-- normally not necessary;
|
||||
object title = get("MainWindow","data","Foobar")
|
||||
object msg = get("MainWindow","data","Message")
|
||||
|
||||
-- save the default value for the active controls on the list,
|
||||
-- this is the standard one-liner that is all that is needed for
|
||||
-- most programs;
|
||||
settings:Save(ini,list)
|
||||
|
||||
Info(,title,"BailOut",msg)
|
||||
|
||||
return Quit()
|
||||
end function
|
||||
|
||||
-- note [1]
|
||||
-- this is shown for demo purposes, an alternative would be to just set the
|
||||
-- window background by reading the ColorChooserButton's color property after
|
||||
-- loading the ini.
|
||||
|
||||
-- note [2]
|
||||
-- this is also shown for demo purposes, normally it would do to set the calendar
|
||||
-- font from the FontButton.font property. You might use this if you were setting
|
||||
-- fonts in some other manner (text entry, perhaps?)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user