mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-05 16:20:10 +00:00
Some calendar improvements.
This commit is contained in:
parent
7c92440c59
commit
0823a10aaf
@ -1,3 +1,11 @@
|
||||
2003-05-08 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkcalendar.[ch] (gtk_calendar_set_display_options):
|
||||
(gtk_calendar_get_display_options): New functions.
|
||||
(gtk_calendar_display_options): Depreate. (#64567)
|
||||
(gtk_calendar_class_init): Add boolean properties for the display
|
||||
options. (#50949)
|
||||
|
||||
Tue May 6 16:50:52 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Patch from James Henstridge to update to automake-1.7
|
||||
|
@ -1,3 +1,11 @@
|
||||
2003-05-08 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkcalendar.[ch] (gtk_calendar_set_display_options):
|
||||
(gtk_calendar_get_display_options): New functions.
|
||||
(gtk_calendar_display_options): Depreate. (#64567)
|
||||
(gtk_calendar_class_init): Add boolean properties for the display
|
||||
options. (#50949)
|
||||
|
||||
Tue May 6 16:50:52 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Patch from James Henstridge to update to automake-1.7
|
||||
|
@ -1,3 +1,11 @@
|
||||
2003-05-08 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkcalendar.[ch] (gtk_calendar_set_display_options):
|
||||
(gtk_calendar_get_display_options): New functions.
|
||||
(gtk_calendar_display_options): Depreate. (#64567)
|
||||
(gtk_calendar_class_init): Add boolean properties for the display
|
||||
options. (#50949)
|
||||
|
||||
Tue May 6 16:50:52 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Patch from James Henstridge to update to automake-1.7
|
||||
|
@ -1,3 +1,11 @@
|
||||
2003-05-08 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkcalendar.[ch] (gtk_calendar_set_display_options):
|
||||
(gtk_calendar_get_display_options): New functions.
|
||||
(gtk_calendar_display_options): Depreate. (#64567)
|
||||
(gtk_calendar_class_init): Add boolean properties for the display
|
||||
options. (#50949)
|
||||
|
||||
Tue May 6 16:50:52 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Patch from James Henstridge to update to automake-1.7
|
||||
|
@ -1,3 +1,11 @@
|
||||
2003-05-08 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtkcalendar.[ch] (gtk_calendar_set_display_options):
|
||||
(gtk_calendar_get_display_options): New functions.
|
||||
(gtk_calendar_display_options): Depreate. (#64567)
|
||||
(gtk_calendar_class_init): Add boolean properties for the display
|
||||
options. (#50949)
|
||||
|
||||
Tue May 6 16:50:52 2003 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
Patch from James Henstridge to update to automake-1.7
|
||||
|
@ -1,3 +1,9 @@
|
||||
2003-05-08 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/tmpl/gtkcalendar.sgml: Deprecate gtk_calendar_display_options().
|
||||
|
||||
* gtk/gtk-sections.txt: Add gtk_calendar_[sg]et_display_options().
|
||||
|
||||
2003-05-05 Matthias Clasen <maclas@gmx.de>
|
||||
|
||||
* gtk/gtk-docs.sgml:
|
||||
|
@ -284,6 +284,8 @@ gtk_calendar_select_day
|
||||
gtk_calendar_mark_day
|
||||
gtk_calendar_unmark_day
|
||||
gtk_calendar_clear_marks
|
||||
gtk_calendar_get_display_options
|
||||
gtk_calendar_set_display_options
|
||||
gtk_calendar_display_options
|
||||
gtk_calendar_get_date
|
||||
gtk_calendar_freeze
|
||||
|
@ -21,7 +21,7 @@ Alternative, all marks can be cleared with gtk_calendar_clear_marks().
|
||||
</para>
|
||||
<para>
|
||||
The way in which the calendar itself is displayed can be altered using
|
||||
gtk_calendar_display_options().
|
||||
gtk_calendar_set_display_options().
|
||||
</para>
|
||||
<para>
|
||||
The selected date can be retrieved from a #GtkCalendar using
|
||||
@ -166,6 +166,7 @@ Sets display options (whether to display the heading and the month headings).
|
||||
|
||||
@calendar: a #GtkCalendar.
|
||||
@flags: the display options to set.
|
||||
@Deprecated: Use gtk_calendar_set_display_options() instead
|
||||
|
||||
|
||||
<!-- ##### FUNCTION gtk_calendar_get_date ##### -->
|
||||
|
@ -41,6 +41,7 @@
|
||||
|
||||
#include "gtkcalendar.h"
|
||||
#include "gtkmarshalers.h"
|
||||
#include "gtkintl.h"
|
||||
#include "gdk/gdkkeysyms.h"
|
||||
|
||||
/***************************************************************************/
|
||||
@ -212,6 +213,20 @@ enum {
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
PROP_YEAR,
|
||||
PROP_MONTH,
|
||||
PROP_DAY,
|
||||
PROP_SHOW_HEADING,
|
||||
PROP_SHOW_DAY_NAMES,
|
||||
PROP_NO_MONTH_CHANGE,
|
||||
PROP_SHOW_WEEK_NUMBERS,
|
||||
PROP_WEEK_START_MONDAY,
|
||||
PROP_LAST
|
||||
};
|
||||
|
||||
static gint gtk_calendar_signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
static GtkWidgetClass *parent_class = NULL;
|
||||
@ -261,6 +276,14 @@ typedef void (*GtkCalendarSignalDate) (GtkObject *object, guint arg1, guint arg2
|
||||
static void gtk_calendar_class_init (GtkCalendarClass *class);
|
||||
static void gtk_calendar_init (GtkCalendar *calendar);
|
||||
static void gtk_calendar_finalize (GObject *calendar);
|
||||
static void gtk_calendar_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec);
|
||||
static void gtk_calendar_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec);
|
||||
static void gtk_calendar_realize (GtkWidget *widget);
|
||||
static void gtk_calendar_unrealize (GtkWidget *widget);
|
||||
static void gtk_calendar_size_request (GtkWidget *widget,
|
||||
@ -347,6 +370,8 @@ gtk_calendar_class_init (GtkCalendarClass *class)
|
||||
|
||||
parent_class = g_type_class_peek_parent (class);
|
||||
|
||||
gobject_class->set_property = gtk_calendar_set_property;
|
||||
gobject_class->get_property = gtk_calendar_get_property;
|
||||
gobject_class->finalize = gtk_calendar_finalize;
|
||||
|
||||
widget_class->realize = gtk_calendar_realize;
|
||||
@ -370,6 +395,64 @@ gtk_calendar_class_init (GtkCalendarClass *class)
|
||||
class->prev_year = NULL;
|
||||
class->next_year = NULL;
|
||||
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_YEAR,
|
||||
g_param_spec_int ("year",
|
||||
_("Year"),
|
||||
_("The selected year"),
|
||||
0, G_MAXINT, 0,
|
||||
G_PARAM_READWRITE));
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_MONTH,
|
||||
g_param_spec_int ("month",
|
||||
_("Month"),
|
||||
_("The selected month (as a number between 0 and 11)"),
|
||||
0, 11, 0,
|
||||
G_PARAM_READWRITE));
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_DAY,
|
||||
g_param_spec_int ("day",
|
||||
_("Day"),
|
||||
_("The selected day (as a number between 1 and 31, or 0 to unselect the currently selected day)"),
|
||||
0, 31, 0,
|
||||
G_PARAM_READWRITE));
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_SHOW_HEADING,
|
||||
g_param_spec_boolean ("show_heading",
|
||||
_("Show Heading"),
|
||||
_("If TRUE, a heading is displayed"),
|
||||
TRUE,
|
||||
G_PARAM_READWRITE));
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_SHOW_DAY_NAMES,
|
||||
g_param_spec_boolean ("show_day_names",
|
||||
_("Show Day Names"),
|
||||
_("If TRUE, day names are displayed"),
|
||||
TRUE,
|
||||
G_PARAM_READWRITE));
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_NO_MONTH_CHANGE,
|
||||
g_param_spec_boolean ("no_month_change",
|
||||
_("No Month Change"),
|
||||
_("If TRUE, the selected month can not be changed"),
|
||||
FALSE,
|
||||
G_PARAM_READWRITE));
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_SHOW_WEEK_NUMBERS,
|
||||
g_param_spec_boolean ("show_week_numbers",
|
||||
_("Show Week Numbers"),
|
||||
_("If TRUE, week numbers are displayed"),
|
||||
FALSE,
|
||||
G_PARAM_READWRITE));
|
||||
g_object_class_install_property (gobject_class,
|
||||
PROP_WEEK_START_MONDAY,
|
||||
g_param_spec_boolean ("week_start_monday",
|
||||
_("Week Start Monday"),
|
||||
_("If TRUE, Monday is displayed as the first day of the week"),
|
||||
FALSE,
|
||||
G_PARAM_READWRITE));
|
||||
|
||||
|
||||
gtk_calendar_signals[MONTH_CHANGED_SIGNAL] =
|
||||
g_signal_new ("month_changed",
|
||||
G_OBJECT_CLASS_TYPE (gobject_class),
|
||||
@ -1990,32 +2073,56 @@ gtk_calendar_compute_days (GtkCalendar *calendar)
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
NAME: gtk_calendar_display_options
|
||||
DESCRIPTION: Set display options (whether to display the
|
||||
heading and the month headings)
|
||||
|
||||
flags is can be an XOR of:
|
||||
GTK_CALENDAR_SHOW_HEADING
|
||||
GTK_CALENDAR_SHOW_DAY_NAMES
|
||||
GTK_CALENDAR_NO_MONTH_CHANGE
|
||||
GTK_CALENDAR_SHOW_WEEK_NUMBERS
|
||||
GTK_CALENDAR_WEEK_START_MONDAY
|
||||
---------------------------------------------------------------------- */
|
||||
|
||||
void
|
||||
gtk_calendar_display_options (GtkCalendar *calendar,
|
||||
GtkCalendarDisplayOptions flags)
|
||||
{
|
||||
gtk_calendar_set_display_options (calendar, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_calendar_get_display_options:
|
||||
* @calendar: a #GtkCalendar
|
||||
*
|
||||
* Returns the current display options of @calendar.
|
||||
*
|
||||
* Return value: the display options.
|
||||
*
|
||||
* Since: 2.4
|
||||
**/
|
||||
GtkCalendarDisplayOptions
|
||||
gtk_calendar_get_display_options (GtkCalendar *calendar)
|
||||
{
|
||||
g_return_val_if_fail (GTK_IS_CALENDAR (calendar), 0);
|
||||
|
||||
return calendar->display_flags;
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_calendar_set_display_options:
|
||||
* @calendar: a #GtkCalendar
|
||||
* @flags: the display options to set
|
||||
*
|
||||
* Sets display options (whether to display the heading and the month
|
||||
* headings).
|
||||
*
|
||||
* Since: 2.4
|
||||
**/
|
||||
void
|
||||
gtk_calendar_set_display_options (GtkCalendar *calendar,
|
||||
GtkCalendarDisplayOptions flags)
|
||||
{
|
||||
GtkCalendarPrivateData *private_data;
|
||||
gint resize = 0;
|
||||
GtkWidget *widget;
|
||||
gint i;
|
||||
GtkCalendarDisplayOptions old_flags;
|
||||
|
||||
g_return_if_fail (GTK_IS_CALENDAR (calendar));
|
||||
|
||||
widget = GTK_WIDGET (calendar);
|
||||
private_data = GTK_CALENDAR_PRIVATE_DATA (calendar);
|
||||
old_flags = calendar->display_flags;
|
||||
|
||||
if (GTK_WIDGET_REALIZED (widget))
|
||||
{
|
||||
@ -2126,6 +2233,18 @@ gtk_calendar_display_options (GtkCalendar *calendar,
|
||||
else
|
||||
calendar->display_flags = flags;
|
||||
|
||||
g_object_freeze_notify (G_OBJECT (calendar));
|
||||
if ((old_flags ^ calendar->display_flags) & GTK_CALENDAR_SHOW_HEADING)
|
||||
g_object_notify (G_OBJECT (calendar), "show_heading");
|
||||
if ((old_flags ^ calendar->display_flags) & GTK_CALENDAR_SHOW_DAY_NAMES)
|
||||
g_object_notify (G_OBJECT (calendar), "show_day_names");
|
||||
if ((old_flags ^ calendar->display_flags) & GTK_CALENDAR_NO_MONTH_CHANGE)
|
||||
g_object_notify (G_OBJECT (calendar), "no_month_change");
|
||||
if ((old_flags ^ calendar->display_flags) & GTK_CALENDAR_SHOW_WEEK_NUMBERS)
|
||||
g_object_notify (G_OBJECT (calendar), "show_week_numbers");
|
||||
if ((old_flags ^ calendar->display_flags) & GTK_CALENDAR_WEEK_START_MONDAY)
|
||||
g_object_notify (G_OBJECT (calendar), "week_start_monday");
|
||||
g_object_thaw_notify (G_OBJECT (calendar));
|
||||
}
|
||||
|
||||
gboolean
|
||||
@ -2142,6 +2261,12 @@ gtk_calendar_select_month (GtkCalendar *calendar,
|
||||
gtk_calendar_compute_days (calendar);
|
||||
|
||||
gtk_widget_queue_draw (GTK_WIDGET (calendar));
|
||||
|
||||
g_object_freeze_notify (G_OBJECT (calendar));
|
||||
g_object_notify (G_OBJECT (calendar), "month");
|
||||
g_object_notify (G_OBJECT (calendar), "year");
|
||||
g_object_thaw_notify (G_OBJECT (calendar));
|
||||
|
||||
g_signal_emit (calendar,
|
||||
gtk_calendar_signals[MONTH_CHANGED_SIGNAL],
|
||||
0);
|
||||
@ -2177,6 +2302,8 @@ gtk_calendar_select_day (GtkCalendar *calendar,
|
||||
gtk_calendar_paint_day_num (GTK_WIDGET (calendar), day);
|
||||
}
|
||||
|
||||
g_object_notify (G_OBJECT (calendar), "day");
|
||||
|
||||
g_signal_emit (calendar,
|
||||
gtk_calendar_signals[DAY_SELECTED_SIGNAL],
|
||||
0);
|
||||
@ -2720,3 +2847,129 @@ gtk_calendar_key_press (GtkWidget *widget,
|
||||
|
||||
return return_val;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_calendar_set_display_option (GtkCalendar *calendar,
|
||||
GtkCalendarDisplayOptions flag,
|
||||
gboolean setting)
|
||||
{
|
||||
GtkCalendarDisplayOptions flags;
|
||||
if (setting)
|
||||
flags = calendar->display_flags | flag;
|
||||
else
|
||||
flags = calendar->display_flags & ~flag;
|
||||
gtk_calendar_display_options (calendar, flags);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_calendar_get_display_option (GtkCalendar *calendar,
|
||||
GtkCalendarDisplayOptions flag)
|
||||
{
|
||||
return (calendar->display_flags & flag) != 0;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
gtk_calendar_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GtkCalendar *calendar;
|
||||
|
||||
calendar = GTK_CALENDAR (object);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_YEAR:
|
||||
gtk_calendar_select_month (calendar,
|
||||
calendar->month,
|
||||
g_value_get_int (value));
|
||||
break;
|
||||
case PROP_MONTH:
|
||||
gtk_calendar_select_month (calendar,
|
||||
g_value_get_int (value),
|
||||
calendar->year);
|
||||
break;
|
||||
case PROP_DAY:
|
||||
gtk_calendar_select_day (calendar,
|
||||
g_value_get_int (value));
|
||||
break;
|
||||
case PROP_SHOW_HEADING:
|
||||
gtk_calendar_set_display_option (calendar,
|
||||
GTK_CALENDAR_SHOW_HEADING,
|
||||
g_value_get_boolean (value));
|
||||
break;
|
||||
case PROP_SHOW_DAY_NAMES:
|
||||
gtk_calendar_set_display_option (calendar,
|
||||
GTK_CALENDAR_SHOW_DAY_NAMES,
|
||||
g_value_get_boolean (value));
|
||||
break;
|
||||
case PROP_NO_MONTH_CHANGE:
|
||||
gtk_calendar_set_display_option (calendar,
|
||||
GTK_CALENDAR_NO_MONTH_CHANGE,
|
||||
g_value_get_boolean (value));
|
||||
break;
|
||||
case PROP_SHOW_WEEK_NUMBERS:
|
||||
gtk_calendar_set_display_option (calendar,
|
||||
GTK_CALENDAR_SHOW_WEEK_NUMBERS,
|
||||
g_value_get_boolean (value));
|
||||
break;
|
||||
case PROP_WEEK_START_MONDAY:
|
||||
gtk_calendar_set_display_option (calendar,
|
||||
GTK_CALENDAR_WEEK_START_MONDAY,
|
||||
g_value_get_boolean (value));
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_calendar_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GtkCalendar *calendar;
|
||||
|
||||
calendar = GTK_CALENDAR (object);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_YEAR:
|
||||
g_value_set_int (value, calendar->year);
|
||||
break;
|
||||
case PROP_MONTH:
|
||||
g_value_set_int (value, calendar->month);
|
||||
break;
|
||||
case PROP_DAY:
|
||||
g_value_set_int (value, calendar->selected_day);
|
||||
break;
|
||||
case PROP_SHOW_HEADING:
|
||||
g_value_set_boolean (value, gtk_calendar_get_display_option (calendar,
|
||||
GTK_CALENDAR_SHOW_HEADING));
|
||||
break;
|
||||
case PROP_SHOW_DAY_NAMES:
|
||||
g_value_set_boolean (value, gtk_calendar_get_display_option (calendar,
|
||||
GTK_CALENDAR_SHOW_DAY_NAMES));
|
||||
break;
|
||||
case PROP_NO_MONTH_CHANGE:
|
||||
g_value_set_boolean (value, gtk_calendar_get_display_option (calendar,
|
||||
GTK_CALENDAR_NO_MONTH_CHANGE));
|
||||
break;
|
||||
case PROP_SHOW_WEEK_NUMBERS:
|
||||
g_value_set_boolean (value, gtk_calendar_get_display_option (calendar,
|
||||
GTK_CALENDAR_SHOW_WEEK_NUMBERS));
|
||||
break;
|
||||
case PROP_WEEK_START_MONDAY:
|
||||
g_value_set_boolean (value, gtk_calendar_get_display_option (calendar,
|
||||
GTK_CALENDAR_WEEK_START_MONDAY));
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -131,8 +131,14 @@ gboolean gtk_calendar_unmark_day (GtkCalendar *calendar,
|
||||
void gtk_calendar_clear_marks (GtkCalendar *calendar);
|
||||
|
||||
|
||||
void gtk_calendar_set_display_options (GtkCalendar *calendar,
|
||||
GtkCalendarDisplayOptions flags);
|
||||
GtkCalendarDisplayOptions
|
||||
gtk_calendar_get_display_options (GtkCalendar *calendar);
|
||||
#ifndef GTK_DISABLE_DEPRECATED
|
||||
void gtk_calendar_display_options (GtkCalendar *calendar,
|
||||
GtkCalendarDisplayOptions flags);
|
||||
#endif
|
||||
|
||||
void gtk_calendar_get_date (GtkCalendar *calendar,
|
||||
guint *year,
|
||||
|
Loading…
Reference in New Issue
Block a user