/* * app_calendar - zavai calendar applet * * Copyright (C) 2009 Enrico Zini * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ namespace zavai { namespace ui { namespace calendar { public class Calendar : Applet { protected Gtk.Calendar calendar; protected Gtk.ScrolledWindow scroll; protected Gtk.TextBuffer text_buffer; protected Gtk.TextView text; public Calendar() { _label = "Calendar"; calendar = new Gtk.Calendar(); calendar.day_selected += on_day_selected; calendar.month_changed += on_month_changed; pack_start(calendar, false, false, 0); text_buffer = new Gtk.TextBuffer(null); text = new Gtk.TextView.with_buffer(text_buffer); text.wrap_mode = Gtk.WrapMode.WORD; text.cursor_visible = false; text.editable = false; scroll = new Gtk.ScrolledWindow (null, null); scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); scroll.add(text); pack_start(scroll, true, true, 0); on_month_changed(); } private void on_month_changed() { calendar.clear_marks(); calendar.mark_day(1); } private void on_day_selected() { string day = "%02d/%02d/%04d".printf(calendar.day, calendar.month, calendar.year); text_buffer.text = day; Gtk.TextIter iter; text_buffer.get_iter_at_offset(out iter, 0); Gtk.TextMark mark = text_buffer.create_mark(null, iter, true); text.scroll_mark_onscreen(mark); } public override void start() { // Go to current date var now = Time.local(time_t()); calendar.year = now.year + 1900; calendar.month = now.month; calendar.day = now.day; } public override void stop() { } } Calendar calendar; public void init() { calendar = new Calendar(); zavai.registry.register_applet("ui.calendar", calendar); zavai.registry.getmenu("menu.misc").add_applet("ui.calendar"); } } } }