new function. (gtk_clist_insert): added g_return_val_if_fail() statements.

Thu Oct  1 10:40:20 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkclist.h (gtk_clist_prepend):
        * gtk/gtkclist.c (gtk_clist_prepend): new function.
        (gtk_clist_insert): added g_return_val_if_fail()
        statements. accept a row parameter < 0 or > clist->rows to indicate
        append mode.
        (real_clear): first clean up all internal pointers and lists (e.g.
        clist->row_list or clist->rows), then delete the distinct rows. this
        is required because of destroy notifiers, we need to have all internal
        structures updated and be reentrant.

        * gtk/gtkcalendar.h:
        * gtk/gtkcalendar.c: removed the `gtk_calendar_' prefix from the
        GtkCalendarClass signal methods.
        GtkType and macro fixups, put `void' into () prototypes, avoid C++
        style comments, indentation fixes, fixed some g_return_if_fail()
        statements.
        (gtk_calendar_paint_header):
        (gtk_calendar_paint_day_names):
        (gtk_calendar_paint_week_numbers):
        (gtk_calendar_paint_main): made these static functions.
        (gtk_calendar_select_month):
        (gtk_calendar_select_day):
        (gtk_calendar_mark_day):
        (gtk_calendar_unmark_day):
        (gtk_calendar_get_date): signedness corrections, use guints
        rather than gints.
        (gtk_calendar_size_request): removed unused variables.
This commit is contained in:
Tim Janik
1998-10-01 13:24:42 +00:00
committed by Tim Janik
parent fa5c68f7c6
commit b89ed0c35f
11 changed files with 875 additions and 593 deletions

View File

@ -1,3 +1,33 @@
Thu Oct 1 10:40:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkclist.h (gtk_clist_prepend):
* gtk/gtkclist.c (gtk_clist_prepend): new function.
(gtk_clist_insert): added g_return_val_if_fail()
statements. accept a row parameter < 0 or > clist->rows to indicate
append mode.
(real_clear): first clean up all internal pointers and lists (e.g.
clist->row_list or clist->rows), then delete the distinct rows. this
is required because of destroy notifiers, we need to have all internal
structures updated and be reentrant.
* gtk/gtkcalendar.h:
* gtk/gtkcalendar.c: removed the `gtk_calendar_' prefix from the
GtkCalendarClass signal methods.
GtkType and macro fixups, put `void' into () prototypes, avoid C++
style comments, indentation fixes, fixed some g_return_if_fail()
statements.
(gtk_calendar_paint_header):
(gtk_calendar_paint_day_names):
(gtk_calendar_paint_week_numbers):
(gtk_calendar_paint_main): made these static functions.
(gtk_calendar_select_month):
(gtk_calendar_select_day):
(gtk_calendar_mark_day):
(gtk_calendar_unmark_day):
(gtk_calendar_get_date): signedness corrections, use guints
rather than gints.
(gtk_calendar_size_request): removed unused variables.
Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org> Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org>
* gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all * gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all

View File

@ -1,3 +1,33 @@
Thu Oct 1 10:40:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkclist.h (gtk_clist_prepend):
* gtk/gtkclist.c (gtk_clist_prepend): new function.
(gtk_clist_insert): added g_return_val_if_fail()
statements. accept a row parameter < 0 or > clist->rows to indicate
append mode.
(real_clear): first clean up all internal pointers and lists (e.g.
clist->row_list or clist->rows), then delete the distinct rows. this
is required because of destroy notifiers, we need to have all internal
structures updated and be reentrant.
* gtk/gtkcalendar.h:
* gtk/gtkcalendar.c: removed the `gtk_calendar_' prefix from the
GtkCalendarClass signal methods.
GtkType and macro fixups, put `void' into () prototypes, avoid C++
style comments, indentation fixes, fixed some g_return_if_fail()
statements.
(gtk_calendar_paint_header):
(gtk_calendar_paint_day_names):
(gtk_calendar_paint_week_numbers):
(gtk_calendar_paint_main): made these static functions.
(gtk_calendar_select_month):
(gtk_calendar_select_day):
(gtk_calendar_mark_day):
(gtk_calendar_unmark_day):
(gtk_calendar_get_date): signedness corrections, use guints
rather than gints.
(gtk_calendar_size_request): removed unused variables.
Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org> Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org>
* gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all * gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all

View File

@ -1,3 +1,33 @@
Thu Oct 1 10:40:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkclist.h (gtk_clist_prepend):
* gtk/gtkclist.c (gtk_clist_prepend): new function.
(gtk_clist_insert): added g_return_val_if_fail()
statements. accept a row parameter < 0 or > clist->rows to indicate
append mode.
(real_clear): first clean up all internal pointers and lists (e.g.
clist->row_list or clist->rows), then delete the distinct rows. this
is required because of destroy notifiers, we need to have all internal
structures updated and be reentrant.
* gtk/gtkcalendar.h:
* gtk/gtkcalendar.c: removed the `gtk_calendar_' prefix from the
GtkCalendarClass signal methods.
GtkType and macro fixups, put `void' into () prototypes, avoid C++
style comments, indentation fixes, fixed some g_return_if_fail()
statements.
(gtk_calendar_paint_header):
(gtk_calendar_paint_day_names):
(gtk_calendar_paint_week_numbers):
(gtk_calendar_paint_main): made these static functions.
(gtk_calendar_select_month):
(gtk_calendar_select_day):
(gtk_calendar_mark_day):
(gtk_calendar_unmark_day):
(gtk_calendar_get_date): signedness corrections, use guints
rather than gints.
(gtk_calendar_size_request): removed unused variables.
Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org> Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org>
* gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all * gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all

View File

@ -1,3 +1,33 @@
Thu Oct 1 10:40:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkclist.h (gtk_clist_prepend):
* gtk/gtkclist.c (gtk_clist_prepend): new function.
(gtk_clist_insert): added g_return_val_if_fail()
statements. accept a row parameter < 0 or > clist->rows to indicate
append mode.
(real_clear): first clean up all internal pointers and lists (e.g.
clist->row_list or clist->rows), then delete the distinct rows. this
is required because of destroy notifiers, we need to have all internal
structures updated and be reentrant.
* gtk/gtkcalendar.h:
* gtk/gtkcalendar.c: removed the `gtk_calendar_' prefix from the
GtkCalendarClass signal methods.
GtkType and macro fixups, put `void' into () prototypes, avoid C++
style comments, indentation fixes, fixed some g_return_if_fail()
statements.
(gtk_calendar_paint_header):
(gtk_calendar_paint_day_names):
(gtk_calendar_paint_week_numbers):
(gtk_calendar_paint_main): made these static functions.
(gtk_calendar_select_month):
(gtk_calendar_select_day):
(gtk_calendar_mark_day):
(gtk_calendar_unmark_day):
(gtk_calendar_get_date): signedness corrections, use guints
rather than gints.
(gtk_calendar_size_request): removed unused variables.
Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org> Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org>
* gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all * gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all

View File

@ -1,3 +1,33 @@
Thu Oct 1 10:40:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkclist.h (gtk_clist_prepend):
* gtk/gtkclist.c (gtk_clist_prepend): new function.
(gtk_clist_insert): added g_return_val_if_fail()
statements. accept a row parameter < 0 or > clist->rows to indicate
append mode.
(real_clear): first clean up all internal pointers and lists (e.g.
clist->row_list or clist->rows), then delete the distinct rows. this
is required because of destroy notifiers, we need to have all internal
structures updated and be reentrant.
* gtk/gtkcalendar.h:
* gtk/gtkcalendar.c: removed the `gtk_calendar_' prefix from the
GtkCalendarClass signal methods.
GtkType and macro fixups, put `void' into () prototypes, avoid C++
style comments, indentation fixes, fixed some g_return_if_fail()
statements.
(gtk_calendar_paint_header):
(gtk_calendar_paint_day_names):
(gtk_calendar_paint_week_numbers):
(gtk_calendar_paint_main): made these static functions.
(gtk_calendar_select_month):
(gtk_calendar_select_day):
(gtk_calendar_mark_day):
(gtk_calendar_unmark_day):
(gtk_calendar_get_date): signedness corrections, use guints
rather than gints.
(gtk_calendar_size_request): removed unused variables.
Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org> Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org>
* gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all * gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all

View File

@ -1,3 +1,33 @@
Thu Oct 1 10:40:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkclist.h (gtk_clist_prepend):
* gtk/gtkclist.c (gtk_clist_prepend): new function.
(gtk_clist_insert): added g_return_val_if_fail()
statements. accept a row parameter < 0 or > clist->rows to indicate
append mode.
(real_clear): first clean up all internal pointers and lists (e.g.
clist->row_list or clist->rows), then delete the distinct rows. this
is required because of destroy notifiers, we need to have all internal
structures updated and be reentrant.
* gtk/gtkcalendar.h:
* gtk/gtkcalendar.c: removed the `gtk_calendar_' prefix from the
GtkCalendarClass signal methods.
GtkType and macro fixups, put `void' into () prototypes, avoid C++
style comments, indentation fixes, fixed some g_return_if_fail()
statements.
(gtk_calendar_paint_header):
(gtk_calendar_paint_day_names):
(gtk_calendar_paint_week_numbers):
(gtk_calendar_paint_main): made these static functions.
(gtk_calendar_select_month):
(gtk_calendar_select_day):
(gtk_calendar_mark_day):
(gtk_calendar_unmark_day):
(gtk_calendar_get_date): signedness corrections, use guints
rather than gints.
(gtk_calendar_size_request): removed unused variables.
Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org> Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org>
* gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all * gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all

View File

@ -1,3 +1,33 @@
Thu Oct 1 10:40:20 1998 Tim Janik <timj@gtk.org>
* gtk/gtkclist.h (gtk_clist_prepend):
* gtk/gtkclist.c (gtk_clist_prepend): new function.
(gtk_clist_insert): added g_return_val_if_fail()
statements. accept a row parameter < 0 or > clist->rows to indicate
append mode.
(real_clear): first clean up all internal pointers and lists (e.g.
clist->row_list or clist->rows), then delete the distinct rows. this
is required because of destroy notifiers, we need to have all internal
structures updated and be reentrant.
* gtk/gtkcalendar.h:
* gtk/gtkcalendar.c: removed the `gtk_calendar_' prefix from the
GtkCalendarClass signal methods.
GtkType and macro fixups, put `void' into () prototypes, avoid C++
style comments, indentation fixes, fixed some g_return_if_fail()
statements.
(gtk_calendar_paint_header):
(gtk_calendar_paint_day_names):
(gtk_calendar_paint_week_numbers):
(gtk_calendar_paint_main): made these static functions.
(gtk_calendar_select_month):
(gtk_calendar_select_day):
(gtk_calendar_mark_day):
(gtk_calendar_unmark_day):
(gtk_calendar_get_date): signedness corrections, use guints
rather than gints.
(gtk_calendar_size_request): removed unused variables.
Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org> Wed Sep 30 13:11:09 1998 Tim Janik <timj@gtk.org>
* gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all * gtk/gtkitemfactory.c (gtk_item_factory_add_item): list all

View File

@ -240,28 +240,36 @@ static void gtk_calendar_state_changed (GtkWidget *widget,
GtkStateType previous_state); GtkStateType previous_state);
static void gtk_calendar_style_set (GtkWidget *widget, static void gtk_calendar_style_set (GtkWidget *widget,
GtkStyle *previous_style); GtkStyle *previous_style);
void gtk_calendar_paint_header (GtkWidget *widget); static void gtk_calendar_paint_header (GtkWidget *widget);
void gtk_calendar_paint_day_names (GtkWidget *widget); static void gtk_calendar_paint_day_names (GtkWidget *widget);
void gtk_calendar_paint_week_numbers (GtkWidget *widget); static void gtk_calendar_paint_week_numbers (GtkWidget *widget);
void gtk_calendar_paint_main (GtkWidget *widget); static void gtk_calendar_paint_main (GtkWidget *widget);
static void gtk_calendar_paint (GtkWidget *widget, GdkRectangle *area); static void gtk_calendar_paint (GtkWidget *widget,
static void gtk_calendar_paint_arrow (GtkWidget *widget, guint arrow); GdkRectangle *area);
static void gtk_calendar_paint_day_num (GtkWidget *widget, gint day); static void gtk_calendar_paint_arrow (GtkWidget *widget,
static void gtk_calendar_paint_day (GtkWidget *widget, gint row, gint col); guint arrow);
static void gtk_calendar_draw (GtkWidget *widget, GdkRectangle *area); static void gtk_calendar_paint_day_num (GtkWidget *widget,
gint day);
static void gtk_calendar_paint_day (GtkWidget *widget,
gint row,
gint col);
static void gtk_calendar_draw (GtkWidget *widget,
GdkRectangle *area);
static void gtk_calendar_compute_days (GtkCalendar *calendar); static void gtk_calendar_compute_days (GtkCalendar *calendar);
static gint left_x_for_column (GtkCalendar *calendar, gint column); static gint left_x_for_column (GtkCalendar *calendar,
static gint top_y_for_row (GtkCalendar *calendar, gint row); gint column);
static gint top_y_for_row (GtkCalendar *calendar,
gint row);
static char *default_abbreviated_dayname[7]; static char *default_abbreviated_dayname[7];
static char *default_monthname[12]; static char *default_monthname[12];
guint GtkType
gtk_calendar_get_type () gtk_calendar_get_type (void)
{ {
static guint calendar_type = 0; static GtkType calendar_type = 0;
if (!calendar_type) if (!calendar_type)
{ {
@ -276,7 +284,7 @@ gtk_calendar_get_type ()
(GtkArgGetFunc) NULL, (GtkArgGetFunc) NULL,
}; };
calendar_type = gtk_type_unique (gtk_widget_get_type (), &calendar_info); calendar_type = gtk_type_unique (GTK_TYPE_WIDGET, &calendar_info);
} }
return calendar_type; return calendar_type;
@ -291,7 +299,7 @@ gtk_calendar_class_init (GtkCalendarClass *class)
object_class = (GtkObjectClass*) class; object_class = (GtkObjectClass*) class;
widget_class = (GtkWidgetClass*) class; widget_class = (GtkWidgetClass*) class;
parent_class = gtk_type_class (gtk_widget_get_type ()); parent_class = gtk_type_class (GTK_TYPE_WIDGET);
widget_class->realize = gtk_calendar_realize; widget_class->realize = gtk_calendar_realize;
widget_class->unrealize = gtk_calendar_unrealize; widget_class->unrealize = gtk_calendar_unrealize;
@ -313,50 +321,48 @@ gtk_calendar_class_init (GtkCalendarClass *class)
gtk_calendar_signals[MONTH_CHANGED_SIGNAL] = gtk_calendar_signals[MONTH_CHANGED_SIGNAL] =
gtk_signal_new ("month_changed", gtk_signal_new ("month_changed",
GTK_RUN_FIRST, object_class->type, GTK_RUN_FIRST, object_class->type,
GTK_SIGNAL_OFFSET (GtkCalendarClass, gtk_calendar_month_changed), GTK_SIGNAL_OFFSET (GtkCalendarClass, month_changed),
gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); gtk_signal_default_marshaller, GTK_TYPE_NONE, 0);
gtk_calendar_signals[DAY_SELECTED_SIGNAL] = gtk_calendar_signals[DAY_SELECTED_SIGNAL] =
gtk_signal_new ("day_selected", gtk_signal_new ("day_selected",
GTK_RUN_FIRST, object_class->type, GTK_RUN_FIRST, object_class->type,
GTK_SIGNAL_OFFSET (GtkCalendarClass, gtk_calendar_day_selected), GTK_SIGNAL_OFFSET (GtkCalendarClass, day_selected),
gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); gtk_signal_default_marshaller, GTK_TYPE_NONE, 0);
gtk_calendar_signals[DAY_SELECTED_DOUBLE_CLICK_SIGNAL] = gtk_calendar_signals[DAY_SELECTED_DOUBLE_CLICK_SIGNAL] =
gtk_signal_new ("day_selected_double_click", gtk_signal_new ("day_selected_double_click",
GTK_RUN_FIRST, object_class->type, GTK_RUN_FIRST, object_class->type,
GTK_SIGNAL_OFFSET (GtkCalendarClass, gtk_calendar_day_selected_double_click), GTK_SIGNAL_OFFSET (GtkCalendarClass, day_selected_double_click),
gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); gtk_signal_default_marshaller, GTK_TYPE_NONE, 0);
gtk_calendar_signals[PREV_MONTH_SIGNAL] = gtk_calendar_signals[PREV_MONTH_SIGNAL] =
gtk_signal_new ("prev_month", gtk_signal_new ("prev_month",
GTK_RUN_FIRST, object_class->type, GTK_RUN_FIRST, object_class->type,
GTK_SIGNAL_OFFSET (GtkCalendarClass, gtk_calendar_prev_month), GTK_SIGNAL_OFFSET (GtkCalendarClass, prev_month),
gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); gtk_signal_default_marshaller, GTK_TYPE_NONE, 0);
gtk_calendar_signals[NEXT_MONTH_SIGNAL] = gtk_calendar_signals[NEXT_MONTH_SIGNAL] =
gtk_signal_new ("next_month", gtk_signal_new ("next_month",
GTK_RUN_FIRST, object_class->type, GTK_RUN_FIRST, object_class->type,
GTK_SIGNAL_OFFSET (GtkCalendarClass, gtk_calendar_next_month), GTK_SIGNAL_OFFSET (GtkCalendarClass, next_month),
gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); gtk_signal_default_marshaller, GTK_TYPE_NONE, 0);
gtk_calendar_signals[PREV_YEAR_SIGNAL] = gtk_calendar_signals[PREV_YEAR_SIGNAL] =
gtk_signal_new ("prev_year", gtk_signal_new ("prev_year",
GTK_RUN_FIRST, object_class->type, GTK_RUN_FIRST, object_class->type,
GTK_SIGNAL_OFFSET (GtkCalendarClass, gtk_calendar_prev_year), GTK_SIGNAL_OFFSET (GtkCalendarClass, prev_year),
gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); gtk_signal_default_marshaller, GTK_TYPE_NONE, 0);
gtk_calendar_signals[NEXT_YEAR_SIGNAL] = gtk_calendar_signals[NEXT_YEAR_SIGNAL] =
gtk_signal_new ("next_year", gtk_signal_new ("next_year",
GTK_RUN_FIRST, object_class->type, GTK_RUN_FIRST, object_class->type,
GTK_SIGNAL_OFFSET (GtkCalendarClass, gtk_calendar_next_year), GTK_SIGNAL_OFFSET (GtkCalendarClass, next_year),
gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); gtk_signal_default_marshaller, GTK_TYPE_NONE, 0);
gtk_object_class_add_signals (object_class, gtk_calendar_signals, LAST_SIGNAL); gtk_object_class_add_signals (object_class, gtk_calendar_signals, LAST_SIGNAL);
class->gtk_calendar_month_changed = NULL; class->month_changed = NULL;
class->gtk_calendar_day_selected = NULL; class->day_selected = NULL;
class->gtk_calendar_day_selected_double_click = NULL; class->day_selected_double_click = NULL;
class->gtk_calendar_prev_month = NULL; class->prev_month = NULL;
class->gtk_calendar_next_month = NULL; class->next_month = NULL;
class->gtk_calendar_prev_year = NULL; class->prev_year = NULL;
class->gtk_calendar_next_year = NULL; class->next_year = NULL;
return;
} }
static void static void
@ -417,15 +423,16 @@ gtk_calendar_init (GtkCalendar *calendar)
} }
GtkWidget* GtkWidget*
gtk_calendar_new () gtk_calendar_new (void)
{ {
return GTK_WIDGET (gtk_type_new (gtk_calendar_get_type ())); return GTK_WIDGET (gtk_type_new (GTK_TYPE_CALENDAR));
} }
/* column_from_x: returns the column 0-6 that the /* column_from_x: returns the column 0-6 that the
* x pixel of the xwindow is in */ * x pixel of the xwindow is in */
static gint static gint
column_from_x (GtkCalendar *calendar, gint event_x) column_from_x (GtkCalendar *calendar,
gint event_x)
{ {
gint c, column; gint c, column;
gint x_left, x_right; gint x_left, x_right;
@ -459,7 +466,8 @@ row_height (GtkCalendar *calendar)
/* row_from_y: returns the row 0-5 that the /* row_from_y: returns the row 0-5 that the
* y pixel of the xwindow is in */ * y pixel of the xwindow is in */
static gint static gint
row_from_y (GtkCalendar *calendar, gint event_y) row_from_y (GtkCalendar *calendar,
gint event_y)
{ {
gint r, row; gint r, row;
gint height; gint height;
@ -486,7 +494,8 @@ row_from_y (GtkCalendar *calendar, gint event_y)
/* left_x_for_column: returns the x coordinate /* left_x_for_column: returns the x coordinate
* for the left of the column */ * for the left of the column */
static gint static gint
left_x_for_column (GtkCalendar *calendar, gint column) left_x_for_column (GtkCalendar *calendar,
gint column)
{ {
gint width; gint width;
gint x_left; gint x_left;
@ -503,7 +512,8 @@ left_x_for_column (GtkCalendar *calendar, gint column)
/* top_y_for_row: returns the y coordinate /* top_y_for_row: returns the y coordinate
* for the top of the row */ * for the top of the row */
static gint static gint
top_y_for_row (GtkCalendar *calendar, gint row) top_y_for_row (GtkCalendar *calendar,
gint row)
{ {
return calendar->main_h - (CALENDAR_MARGIN + (6 - row) * return calendar->main_h - (CALENDAR_MARGIN + (6 - row) *
@ -513,7 +523,11 @@ top_y_for_row (GtkCalendar *calendar, gint row)
/* This function should be done by the toolkit, but we don't like the /* This function should be done by the toolkit, but we don't like the
* GTK arrows because they don't look good on this widget */ * GTK arrows because they don't look good on this widget */
static void static void
draw_arrow_right (GdkWindow *window, GdkGC *gc, gint x, gint y, gint size) draw_arrow_right (GdkWindow *window,
GdkGC *gc,
gint x,
gint y,
gint size)
{ {
gint i; gint i;
@ -530,7 +544,11 @@ draw_arrow_right (GdkWindow *window, GdkGC *gc, gint x, gint y, gint size)
/* This function should be done by the toolkit, but we don't like the /* This function should be done by the toolkit, but we don't like the
* GTK arrows because they don't look good on this widget */ * GTK arrows because they don't look good on this widget */
static void static void
draw_arrow_left (GdkWindow *window, GdkGC *gc, gint x, gint y, gint size) draw_arrow_left (GdkWindow *window,
GdkGC *gc,
gint x,
gint y,
gint size)
{ {
gint i; gint i;
@ -901,7 +919,6 @@ gtk_calendar_realize_week_numbers (GtkWidget *widget)
calendar->week_win = NULL; calendar->week_win = NULL;
} }
static void static void
gtk_calendar_realize (GtkWidget *widget) gtk_calendar_realize (GtkWidget *widget)
{ {
@ -1019,9 +1036,6 @@ gtk_calendar_size_request (GtkWidget *widget,
gchar buffer[255]; gchar buffer[255];
gint calendar_margin = CALENDAR_MARGIN; gint calendar_margin = CALENDAR_MARGIN;
gint header_width, main_width; gint header_width, main_width;
gint day_font_lbearing;
gint day_font_rbearing;
gint day_font_width;
gint lbearing; gint lbearing;
gint rbearing; gint rbearing;
gint ascent; gint ascent;
@ -1255,8 +1269,6 @@ gtk_calendar_size_allocate (GtkWidget *widget,
} }
} }
static void static void
gtk_calendar_draw_focus (GtkWidget *widget) gtk_calendar_draw_focus (GtkWidget *widget)
{ {
@ -1353,7 +1365,6 @@ gtk_calendar_draw (GtkWidget *widget,
} }
static void static void
gtk_calendar_paint (GtkWidget *widget, gtk_calendar_paint (GtkWidget *widget,
GdkRectangle *area) GdkRectangle *area)
@ -1381,7 +1392,7 @@ gtk_calendar_paint (GtkWidget *widget,
gtk_widget_draw_focus (widget); gtk_widget_draw_focus (widget);
} }
void static void
gtk_calendar_paint_header (GtkWidget *widget) gtk_calendar_paint_header (GtkWidget *widget)
{ {
GtkCalendar *calendar; GtkCalendar *calendar;
@ -1460,7 +1471,7 @@ gtk_calendar_paint_header (GtkWidget *widget)
} }
void static void
gtk_calendar_paint_day_names (GtkWidget *widget) gtk_calendar_paint_day_names (GtkWidget *widget)
{ {
GtkCalendar *calendar; GtkCalendar *calendar;
@ -1541,7 +1552,7 @@ gtk_calendar_paint_day_names (GtkWidget *widget)
} }
} }
void static void
gtk_calendar_paint_week_numbers (GtkWidget *widget) gtk_calendar_paint_week_numbers (GtkWidget *widget)
{ {
GtkCalendar *calendar; GtkCalendar *calendar;
@ -1629,7 +1640,8 @@ gtk_calendar_paint_week_numbers (GtkWidget *widget)
} }
static void static void
gtk_calendar_paint_day_num (GtkWidget *widget, gint day) gtk_calendar_paint_day_num (GtkWidget *widget,
gint day)
{ {
GtkCalendar *calendar; GtkCalendar *calendar;
gint r, c, row, col; gint r, c, row, col;
@ -1656,9 +1668,10 @@ gtk_calendar_paint_day_num (GtkWidget *widget, gint day)
gtk_calendar_paint_day (widget, row, col); gtk_calendar_paint_day (widget, row, col);
} }
static void static void
gtk_calendar_paint_day (GtkWidget *widget, gint row, gint col) gtk_calendar_paint_day (GtkWidget *widget,
gint row,
gint col)
{ {
GtkCalendar *calendar; GtkCalendar *calendar;
GdkGC *gc; GdkGC *gc;
@ -1750,7 +1763,7 @@ gtk_calendar_paint_day (GtkWidget *widget, gint row, gint col)
} }
void static void
gtk_calendar_paint_main (GtkWidget *widget) gtk_calendar_paint_main (GtkWidget *widget)
{ {
GtkCalendar *calendar; GtkCalendar *calendar;
@ -1769,7 +1782,7 @@ gtk_calendar_paint_main (GtkWidget *widget)
calendar->dirty_main = 0; calendar->dirty_main = 0;
gdk_window_clear (calendar->main_win); gdk_window_clear (calendar->main_win);
// gtk_calendar_compute_days (calendar); /* REMOVE later */ /* gtk_calendar_compute_days (calendar); */ /* REMOVE later */
for (col = 0; col < 7; col++) for (col = 0; col < 7; col++)
for (row = 0; row < 6; row++) for (row = 0; row < 6; row++)
@ -1864,15 +1877,17 @@ gtk_calendar_compute_days (GtkCalendar *calendar)
GTK_CALENDAR_WEEK_START_MONDAY GTK_CALENDAR_WEEK_START_MONDAY
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void gtk_calendar_display_options (GtkCalendar *calendar, void
gtk_calendar_display_options (GtkCalendar *calendar,
GtkCalendarDisplayOptions flags) GtkCalendarDisplayOptions flags)
{ {
gint resize = 0; gint resize = 0;
GtkWidget *widget; GtkWidget *widget;
gint i; gint i;
g_return_if_fail (calendar != NULL);
g_return_if_fail (GTK_IS_CALENDAR (calendar)); g_return_if_fail (GTK_IS_CALENDAR (calendar));
g_return_if_fail (GTK_IS_WIDGET (calendar));
widget = GTK_WIDGET (calendar); widget = GTK_WIDGET (calendar);
if (GTK_WIDGET_REALIZED (widget)) if (GTK_WIDGET_REALIZED (widget))
@ -1981,11 +1996,13 @@ void gtk_calendar_display_options (GtkCalendar *calendar,
} }
gint gint
gtk_calendar_select_month (GtkCalendar *calendar, gint month, gint year) gtk_calendar_select_month (GtkCalendar *calendar,
guint month,
guint year)
{ {
g_return_val_if_fail (calendar != NULL, FALSE); g_return_val_if_fail (calendar != NULL, FALSE);
g_return_val_if_fail (month >= 0 && month <= 11, FALSE);
g_return_val_if_fail (GTK_IS_CALENDAR (calendar), FALSE); g_return_val_if_fail (GTK_IS_CALENDAR (calendar), FALSE);
g_return_val_if_fail (month <= 11, FALSE);
calendar->month = month; calendar->month = month;
calendar->year = year; calendar->year = year;
@ -2001,12 +2018,14 @@ gtk_calendar_select_month (GtkCalendar *calendar, gint month, gint year)
} }
void void
gtk_calendar_select_day (GtkCalendar *calendar, gint day) gtk_calendar_select_day (GtkCalendar *calendar,
guint day)
{ {
g_return_if_fail (calendar != NULL); g_return_if_fail (calendar != NULL);
g_return_if_fail (GTK_IS_CALENDAR (calendar)); g_return_if_fail (GTK_IS_CALENDAR (calendar));
g_return_if_fail (day <= 31);
// gtk_calendar_compute_days (calendar); /* gtk_calendar_compute_days (calendar); */
/* Deselect the old day */ /* Deselect the old day */
if (calendar->selected_day > 0) if (calendar->selected_day > 0)
@ -2035,25 +2054,28 @@ gtk_calendar_select_day (GtkCalendar *calendar, gint day)
void void
gtk_calendar_clear_marks (GtkCalendar *calendar) gtk_calendar_clear_marks (GtkCalendar *calendar)
{ {
gint day; guint day;
g_return_if_fail (calendar != NULL); g_return_if_fail (calendar != NULL);
g_return_if_fail (GTK_IS_CALENDAR (calendar));
for (day = 0; day < 31; day++) for (day = 0; day < 31; day++)
{ {
calendar->marked_date[day] = FALSE; calendar->marked_date[day] = FALSE;
} }
if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) if (GTK_WIDGET_DRAWABLE (calendar))
{ {
gtk_calendar_paint_main (GTK_WIDGET (calendar)); gtk_calendar_paint_main (GTK_WIDGET (calendar));
} }
} }
gint gint
gtk_calendar_mark_day (GtkCalendar *calendar, gint day) gtk_calendar_mark_day (GtkCalendar *calendar,
guint day)
{ {
g_return_val_if_fail (calendar != NULL, FALSE); g_return_val_if_fail (calendar != NULL, FALSE);
g_return_val_if_fail (GTK_IS_CALENDAR (calendar), FALSE);
if (day >= 1 && day <= 31) if (day >= 1 && day <= 31)
calendar->marked_date[day - 1] = TRUE; calendar->marked_date[day - 1] = TRUE;
@ -2062,13 +2084,16 @@ gtk_calendar_mark_day (GtkCalendar *calendar, gint day)
{ {
gtk_calendar_paint_main (GTK_WIDGET (calendar)); gtk_calendar_paint_main (GTK_WIDGET (calendar));
} }
return TRUE; return TRUE;
} }
gint gint
gtk_calendar_unmark_day (GtkCalendar *calendar, gint day) gtk_calendar_unmark_day (GtkCalendar *calendar,
guint day)
{ {
g_return_val_if_fail (calendar != NULL, FALSE); g_return_val_if_fail (calendar != NULL, FALSE);
g_return_val_if_fail (GTK_IS_CALENDAR (calendar), FALSE);
if (day >= 1 && day <= 31) if (day >= 1 && day <= 31)
calendar->marked_date[day - 1] = FALSE; calendar->marked_date[day - 1] = FALSE;
@ -2077,11 +2102,15 @@ gtk_calendar_unmark_day (GtkCalendar *calendar, gint day)
{ {
gtk_calendar_paint_main (GTK_WIDGET (calendar)); gtk_calendar_paint_main (GTK_WIDGET (calendar));
} }
return TRUE; return TRUE;
} }
void void
gtk_calendar_get_date (GtkCalendar *calendar, gint *year, gint *month, gint *day) gtk_calendar_get_date (GtkCalendar *calendar,
guint *year,
guint *month,
guint *day)
{ {
g_return_if_fail (calendar != NULL); g_return_if_fail (calendar != NULL);
g_return_if_fail (GTK_IS_CALENDAR (calendar)); g_return_if_fail (GTK_IS_CALENDAR (calendar));
@ -2259,7 +2288,8 @@ gtk_calendar_leave_notify (GtkWidget *widget,
} }
static void static void
gtk_calendar_paint_arrow (GtkWidget *widget, guint arrow) gtk_calendar_paint_arrow (GtkWidget *widget,
guint arrow)
{ {
GdkWindow *window; GdkWindow *window;
GdkGC *gc; GdkGC *gc;
@ -2301,14 +2331,18 @@ gtk_calendar_paint_arrow (GtkWidget *widget, guint arrow)
void void
gtk_calendar_freeze (GtkCalendar *calendar) gtk_calendar_freeze (GtkCalendar *calendar)
{ {
g_return_if_fail (calendar != NULL);
g_return_if_fail (GTK_IS_CALENDAR (calendar)); g_return_if_fail (GTK_IS_CALENDAR (calendar));
calendar->frozen++; calendar->frozen++;
} }
void void
gtk_calendar_thaw (GtkCalendar *calendar) gtk_calendar_thaw (GtkCalendar *calendar)
{ {
g_return_if_fail (calendar != NULL);
g_return_if_fail (GTK_IS_CALENDAR (calendar)); g_return_if_fail (GTK_IS_CALENDAR (calendar));
if (calendar->frozen) if (calendar->frozen)
{ {
calendar->frozen--; calendar->frozen--;
@ -2339,7 +2373,9 @@ gtk_calendar_set_background(GtkWidget *widget)
GtkCalendar *calendar; GtkCalendar *calendar;
gint i; gint i;
g_return_if_fail (widget != NULL);
g_return_if_fail (GTK_IS_CALENDAR (widget)); g_return_if_fail (GTK_IS_CALENDAR (widget));
if (GTK_WIDGET_REALIZED (widget)) if (GTK_WIDGET_REALIZED (widget))
{ {
calendar = GTK_CALENDAR (widget); calendar = GTK_CALENDAR (widget);
@ -2382,7 +2418,8 @@ gtk_calendar_state_changed (GtkWidget *widget,
gtk_calendar_set_background (widget); gtk_calendar_set_background (widget);
} }
static gint gtk_calendar_focus_in (GtkWidget *widget, static gint
gtk_calendar_focus_in (GtkWidget *widget,
GdkEventFocus *event) GdkEventFocus *event)
{ {
GtkCalendar *calendar; GtkCalendar *calendar;
@ -2403,10 +2440,10 @@ static gint gtk_calendar_focus_in (GtkWidget *widget,
#endif #endif
return FALSE; return FALSE;
} }
static gint gtk_calendar_focus_out (GtkWidget *widget, static gint
gtk_calendar_focus_out (GtkWidget *widget,
GdkEventFocus *event) GdkEventFocus *event)
{ {
GtkCalendar *calendar; GtkCalendar *calendar;
@ -2441,7 +2478,6 @@ gtk_calendar_key_press (GtkWidget *widget,
calendar = GTK_CALENDAR (widget); calendar = GTK_CALENDAR (widget);
return_val = FALSE; return_val = FALSE;
switch (event->keyval) switch (event->keyval)
{ {
case GDK_Left: case GDK_Left:
@ -2542,5 +2578,6 @@ gtk_calendar_key_press (GtkWidget *widget,
} }
break; break;
} }
return return_val; return return_val;
} }

View File

@ -18,22 +18,26 @@
* License along with this library; if not, write to the Free * License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
#ifndef __GTK_CALENDAR_H__ #ifndef __GTK_CALENDAR_H__
#define __GTK_CALENDAR_H__ #define __GTK_CALENDAR_H__
#include <gdk/gdk.h> #include <gdk/gdk.h>
#include <gtk/gtksignal.h> #include <gtk/gtksignal.h>
#include <gtk/gtkwidget.h> #include <gtk/gtkwidget.h>
#include <gtk/gtkfeatures.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#pragma }
#endif /* __cplusplus */ #endif /* __cplusplus */
#define GTK_CALENDAR(obj) GTK_CHECK_CAST (obj, gtk_calendar_get_type (), GtkCalendar)
#define GTK_CALENDAR_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_calendar_get_type (), GtkCalendarClass) #define GTK_TYPE_CALENDAR (gtk_calendar_get_type ())
#define GTK_IS_CALENDAR(obj) GTK_CHECK_TYPE (obj, gtk_calendar_get_type ()) #define GTK_CALENDAR(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_CALENDAR, GtkCalendar))
#define GTK_CALENDAR_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_CALENDAR, GtkCalendarClass))
#define GTK_IS_CALENDAR(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_CALENDAR))
#define GTK_IS_CALENDAR_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CALENDAR))
typedef struct _GtkCalendar GtkCalendar; typedef struct _GtkCalendar GtkCalendar;
typedef struct _GtkCalendarClass GtkCalendarClass; typedef struct _GtkCalendarClass GtkCalendarClass;
@ -116,26 +120,30 @@ struct _GtkCalendarClass
GtkWidgetClass parent_class; GtkWidgetClass parent_class;
/* Signal handlers */ /* Signal handlers */
void (* gtk_calendar_month_changed) (GtkCalendarClass *); void (* month_changed) (GtkCalendarClass *calendar);
void (* gtk_calendar_day_selected) (GtkCalendarClass *); void (* day_selected) (GtkCalendarClass *calendar);
void (* gtk_calendar_day_selected_double_click) (GtkCalendarClass *); void (* day_selected_double_click) (GtkCalendarClass *calendar);
void (* gtk_calendar_prev_month) (GtkCalendarClass *); void (* prev_month) (GtkCalendarClass *calendar);
void (* gtk_calendar_next_month) (GtkCalendarClass *); void (* next_month) (GtkCalendarClass *calendar);
void (* gtk_calendar_prev_year) (GtkCalendarClass *); void (* prev_year) (GtkCalendarClass *calendar);
void (* gtk_calendar_next_year) (GtkCalendarClass *); void (* next_year) (GtkCalendarClass *calendar);
}; };
guint gtk_calendar_get_type (void); GtkType gtk_calendar_get_type (void);
GtkWidget* gtk_calendar_new (void); GtkWidget* gtk_calendar_new (void);
gint gtk_calendar_select_month (GtkCalendar *calendar, gint gtk_calendar_select_month (GtkCalendar *calendar,
gint month, gint year); guint month,
void gtk_calendar_select_day (GtkCalendar *calendar, gint day); guint year);
void gtk_calendar_select_day (GtkCalendar *calendar,
guint day);
gint gtk_calendar_mark_day (GtkCalendar *calendar, gint day); gint gtk_calendar_mark_day (GtkCalendar *calendar,
gint gtk_calendar_unmark_day (GtkCalendar *calendar, gint day); guint day);
gint gtk_calendar_unmark_day (GtkCalendar *calendar,
guint day);
void gtk_calendar_clear_marks (GtkCalendar *calendar); void gtk_calendar_clear_marks (GtkCalendar *calendar);
@ -143,10 +151,17 @@ void gtk_calendar_display_options (GtkCalendar *calendar,
GtkCalendarDisplayOptions flags); GtkCalendarDisplayOptions flags);
void gtk_calendar_get_date (GtkCalendar *calendar, void gtk_calendar_get_date (GtkCalendar *calendar,
gint *year, gint *month, gint *day); guint *year,
guint *month,
guint *day);
void gtk_calendar_freeze (GtkCalendar *calendar); void gtk_calendar_freeze (GtkCalendar *calendar);
void gtk_calendar_thaw (GtkCalendar *calendar); void gtk_calendar_thaw (GtkCalendar *calendar);
#ifdef __cplusplus #ifdef __cplusplus
#pragma {
} }
#endif /* __cplusplus */ #endif /* __cplusplus */

View File

@ -1684,6 +1684,17 @@ gtk_clist_get_selectable (GtkCList *clist,
return GTK_CLIST_ROW (g_list_nth (clist->row_list, row))->selectable; return GTK_CLIST_ROW (g_list_nth (clist->row_list, row))->selectable;
} }
gint
gtk_clist_prepend (GtkCList *clist,
gchar *text[])
{
g_return_val_if_fail (clist != NULL, -1);
g_return_val_if_fail (GTK_IS_CLIST (clist), -1);
g_return_val_if_fail (text != NULL, -1);
return GTK_CLIST_CLASS_FW (clist)->insert_row (clist, 0, text);
}
gint gint
gtk_clist_append (GtkCList *clist, gtk_clist_append (GtkCList *clist,
gchar *text[]) gchar *text[])
@ -1700,6 +1711,13 @@ gtk_clist_insert (GtkCList * clist,
gint row, gint row,
gchar *text[]) gchar *text[])
{ {
g_return_val_if_fail (clist != NULL, -1);
g_return_val_if_fail (GTK_IS_CLIST (clist), -1);
g_return_val_if_fail (text != NULL, -1);
if (row < 0 || row > clist->rows)
row = clist->rows;
return GTK_CLIST_CLASS_FW (clist)->insert_row (clist, row, text); return GTK_CLIST_CLASS_FW (clist)->insert_row (clist, row, text);
} }
@ -1924,36 +1942,36 @@ gtk_clist_clear (GtkCList * clist)
static void static void
real_clear (GtkCList * clist) real_clear (GtkCList * clist)
{ {
GList *list; GList *list, *free_list;
g_return_if_fail (clist != NULL); g_return_if_fail (clist != NULL);
g_return_if_fail (GTK_IS_CLIST (clist)); g_return_if_fail (GTK_IS_CLIST (clist));
/* remove all the rows */
for (list = clist->row_list; list; list = list->next)
row_delete (clist, GTK_CLIST_ROW (list));
g_list_free (clist->row_list);
/* free up the selection list */ /* free up the selection list */
g_list_free (clist->selection); g_list_free (clist->selection);
g_list_free (clist->undo_selection); g_list_free (clist->undo_selection);
g_list_free (clist->undo_unselection); g_list_free (clist->undo_unselection);
clist->row_list = NULL;
clist->row_list_end = NULL;
clist->selection = NULL; clist->selection = NULL;
clist->selection_end = NULL; clist->selection_end = NULL;
clist->undo_selection = NULL; clist->undo_selection = NULL;
clist->undo_unselection = NULL; clist->undo_unselection = NULL;
clist->voffset = 0; clist->voffset = 0;
clist->rows = 0;
clist->focus_row = -1; clist->focus_row = -1;
clist->anchor = -1; clist->anchor = -1;
clist->undo_anchor = -1; clist->undo_anchor = -1;
clist->anchor_state = GTK_STATE_SELECTED; clist->anchor_state = GTK_STATE_SELECTED;
clist->drag_pos = -1; clist->drag_pos = -1;
/* remove all the rows */
free_list = clist->row_list;
clist->row_list = NULL;
clist->row_list_end = NULL;
clist->rows = 0;
for (list = free_list; list; list = list->next)
row_delete (clist, GTK_CLIST_ROW (list));
g_list_free (free_list);
/* zero-out the scrollbars */ /* zero-out the scrollbars */
if (clist->vscrollbar) if (clist->vscrollbar)
{ {

View File

@ -526,9 +526,11 @@ void gtk_clist_set_selectable (GtkCList *clist,
gboolean gtk_clist_get_selectable (GtkCList *clist, gboolean gtk_clist_get_selectable (GtkCList *clist,
gint row); gint row);
/* append returns the index of the row you just added, making /* prepend/append returns the index of the row you just added,
* it easier to append and modify a row * making it easier to append and modify a row
*/ */
gint gtk_clist_prepend (GtkCList *clist,
gchar *text[]);
gint gtk_clist_append (GtkCList *clist, gint gtk_clist_append (GtkCList *clist,
gchar *text[]); gchar *text[]);