
1998-08-13 Federico Mena Quintero <federico@nuclecu.unam.mx> * gnome-month-item.c (gnome_month_item_set_arg): Doh. Actually recalculate the days using the month and year. * main.c: Added "Go to" button to quickly jump to a specific date. * goto.c: New file that defines the quick go-to date dialog. * Makefile.am (gnomecal_SOURCES): Added goto.c to the sources. svn path=/trunk/; revision=317
122 lines
2.9 KiB
C
122 lines
2.9 KiB
C
/* Month view display for gncal
|
|
*
|
|
* Copyright (C) 1998 Red Hat Software, Inc.
|
|
*
|
|
* Author: Federico Mena <federico@nuclecu.unam.mx>
|
|
*/
|
|
|
|
#include <config.h>
|
|
#include "month-view.h"
|
|
|
|
|
|
static void month_view_class_init (MonthViewClass *class);
|
|
static void month_view_init (MonthView *mv);
|
|
static void month_view_size_request (GtkWidget *widget,
|
|
GtkRequisition *requisition);
|
|
static void month_view_size_allocate (GtkWidget *widget,
|
|
GtkAllocation *allocation);
|
|
|
|
|
|
static GnomeCanvasClass *parent_class;
|
|
|
|
|
|
GtkType
|
|
month_view_get_type (void)
|
|
{
|
|
static GtkType month_view_type = 0;
|
|
|
|
if (!month_view_type) {
|
|
GtkTypeInfo month_view_info = {
|
|
"MonthView",
|
|
sizeof (MonthView),
|
|
sizeof (MonthViewClass),
|
|
(GtkClassInitFunc) month_view_class_init,
|
|
(GtkObjectInitFunc) month_view_init,
|
|
NULL, /* reserved_1 */
|
|
NULL, /* reserved_2 */
|
|
(GtkClassInitFunc) NULL
|
|
};
|
|
|
|
month_view_type = gtk_type_unique (gnome_canvas_get_type (), &month_view_info);
|
|
}
|
|
|
|
return month_view_type;
|
|
}
|
|
|
|
static void
|
|
month_view_class_init (MonthViewClass *class)
|
|
{
|
|
GtkWidgetClass *widget_class;
|
|
|
|
widget_class = (GtkWidgetClass *) class;
|
|
|
|
parent_class = gtk_type_class (gnome_canvas_get_type ());
|
|
|
|
widget_class->size_request = month_view_size_request;
|
|
widget_class->size_allocate = month_view_size_allocate;
|
|
}
|
|
|
|
static void
|
|
month_view_init (MonthView *mv)
|
|
{
|
|
mv->mitem = gnome_month_item_new (GNOME_CANVAS_GROUP (mv->canvas.root));
|
|
gnome_canvas_item_set (mv->mitem,
|
|
"x", 0.0,
|
|
"y", 0.0,
|
|
"anchor", GTK_ANCHOR_NW,
|
|
"day_anchor", GTK_ANCHOR_NE,
|
|
#if 0
|
|
"start_on_monday", TRUE,
|
|
#endif
|
|
NULL);
|
|
}
|
|
|
|
GtkWidget *
|
|
month_view_new (GnomeCalendar *calendar)
|
|
{
|
|
MonthView *mv;
|
|
|
|
g_return_val_if_fail (calendar != NULL, NULL);
|
|
|
|
mv = gtk_type_new (month_view_get_type ());
|
|
|
|
mv->calendar = calendar;
|
|
|
|
return GTK_WIDGET (mv);
|
|
}
|
|
|
|
static void
|
|
month_view_size_request (GtkWidget *widget, GtkRequisition *requisition)
|
|
{
|
|
g_return_if_fail (widget != NULL);
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
g_return_if_fail (requisition != NULL);
|
|
|
|
if (GTK_WIDGET_CLASS (parent_class)->size_request)
|
|
(* GTK_WIDGET_CLASS (parent_class)->size_request) (widget, requisition);
|
|
|
|
requisition->width = 200;
|
|
requisition->height = 150;
|
|
}
|
|
|
|
static void
|
|
month_view_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
|
|
{
|
|
MonthView *mv;
|
|
|
|
g_return_if_fail (widget != NULL);
|
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
|
g_return_if_fail (allocation != NULL);
|
|
|
|
mv = MONTH_VIEW (widget);
|
|
|
|
if (GTK_WIDGET_CLASS (parent_class)->size_allocate)
|
|
(* GTK_WIDGET_CLASS (parent_class)->size_allocate) (widget, allocation);
|
|
|
|
gnome_canvas_set_scroll_region (GNOME_CANVAS (mv), 0, 0, allocation->width, allocation->height);
|
|
gnome_canvas_item_set (mv->mitem,
|
|
"width", (double) (allocation->width - 1),
|
|
"height", (double) (allocation->height - 1),
|
|
NULL);
|
|
}
|