94 lines
2.3 KiB
Elixir
94 lines
2.3 KiB
Elixir
|
|
||
|
|
||
|
--# calendar demo
|
||
|
|
||
|
include GtkEngine.e
|
||
|
include std/datetime.e
|
||
|
include std/search.e
|
||
|
include std/math.e
|
||
|
|
||
|
constant win = create(GtkWindow,"border=10,position=1,$destroy=Quit")
|
||
|
|
||
|
constant panel = create(GtkBox,0,10)
|
||
|
gtk:add(win,panel)
|
||
|
|
||
|
constant cal1 = create(GtkCalendar,{
|
||
|
{"select day",0},
|
||
|
{"background","gray90"},
|
||
|
{"override background color",4,"blue"},
|
||
|
{"display options",
|
||
|
GTK_CALENDAR_SHOW_HEADING +
|
||
|
GTK_CALENDAR_SHOW_DAY_NAMES +
|
||
|
GTK_CALENDAR_NO_MONTH_CHANGE}})
|
||
|
|
||
|
constant sep1 = create(GtkSeparator,1)
|
||
|
|
||
|
constant cal2 = create(GtkCalendar,{
|
||
|
{"background","white"},
|
||
|
{"override background color",4,"red"}})
|
||
|
|
||
|
constant sep2 = create(GtkSeparator,1)
|
||
|
|
||
|
constant cal3 = create(GtkCalendar,{
|
||
|
{"select day",0},
|
||
|
{"background","gray90"},
|
||
|
{"override background color",4,"green"},
|
||
|
{"display options",
|
||
|
GTK_CALENDAR_SHOW_HEADING +
|
||
|
GTK_CALENDAR_SHOW_DAY_NAMES +
|
||
|
GTK_CALENDAR_NO_MONTH_CHANGE}})
|
||
|
|
||
|
gtk:add(panel,{cal1,sep1,cal2,sep2,cal3})
|
||
|
|
||
|
integer
|
||
|
month = get(cal2,"month"),
|
||
|
year = get(cal2,"year")
|
||
|
|
||
|
object dt = datetime:now()
|
||
|
gtk:set(cal1,"select month",month-1,year)
|
||
|
gtk:set(cal3,"select month",month+1,year)
|
||
|
connect(cal2,"next-month","Update")
|
||
|
connect(cal2,"prev-month","Update")
|
||
|
connect(cal2,"next-year","Update")
|
||
|
connect(cal2,"prev-year","Update")
|
||
|
|
||
|
gtk:set(win,"title",datetime:format(dt," Today is %A, %B %d, %Y"))
|
||
|
gtk:set(win,"icon","stock_calendar")
|
||
|
|
||
|
show_all(win)
|
||
|
main()
|
||
|
|
||
|
--------------------------------
|
||
|
global function Update(atom cal)
|
||
|
--------------------------------
|
||
|
object today = date()
|
||
|
atom m = get(cal,"month"), y = get(cal,"year")
|
||
|
gtk:set(cal1,"select month",m-1,y)
|
||
|
gtk:set(cal3,"select month",m+1,y)
|
||
|
|
||
|
object d1 = get(cal1,"eu date")
|
||
|
if equal(today[1..2],d1[1..2]) then
|
||
|
gtk:set(cal1,"select day",today[3])
|
||
|
else
|
||
|
gtk:set(cal1,"select day",0)
|
||
|
end if
|
||
|
|
||
|
object d2 = get(cal2,"eu date")
|
||
|
if equal(today[1..2],d2[1..2]) then
|
||
|
gtk:set(cal2,"select day",today[3])
|
||
|
else
|
||
|
gtk:set(cal2,"select day",0)
|
||
|
end if
|
||
|
|
||
|
object d3 = get(cal3,"eu date")
|
||
|
if equal(today[1..2],d3[1..2]) then
|
||
|
gtk:set(cal3,"select day",today[3])
|
||
|
else
|
||
|
gtk:set(cal3,"select day",0)
|
||
|
end if
|
||
|
return 1
|
||
|
end function
|
||
|
|
||
|
|
||
|
|