diff options
author | Arturo Espinosa <unammx@src.gnome.org> | 1998-04-11 09:12:58 +0800 |
---|---|---|
committer | Arturo Espinosa <unammx@src.gnome.org> | 1998-04-11 09:12:58 +0800 |
commit | 6cffb55b8d4a036c5f006cb8df0a2dea9bd191a2 (patch) | |
tree | 62155e6b3eef884c89b75ff1c6c1566442a96bf5 /calendar/gui | |
parent | ecfd18d871e088d9ecab59164406b960f48cff07 (diff) | |
download | gsoc2013-evolution-6cffb55b8d4a036c5f006cb8df0a2dea9bd191a2.tar.gz gsoc2013-evolution-6cffb55b8d4a036c5f006cb8df0a2dea9bd191a2.tar.zst gsoc2013-evolution-6cffb55b8d4a036c5f006cb8df0a2dea9bd191a2.zip |
Gnome cal enhancemnets -mig
svn path=/trunk/; revision=122
Diffstat (limited to 'calendar/gui')
-rw-r--r-- | calendar/gui/eventedit.c | 277 | ||||
-rw-r--r-- | calendar/gui/eventedit.h | 16 |
2 files changed, 282 insertions, 11 deletions
diff --git a/calendar/gui/eventedit.c b/calendar/gui/eventedit.c index f2158b50f4..ac11841581 100644 --- a/calendar/gui/eventedit.c +++ b/calendar/gui/eventedit.c @@ -438,22 +438,16 @@ enum { #define LABEL_SPAN 2 +/* Create/setup the general page */ static void -event_editor_init_widgets (EventEditor *ee) +ee_init_general_page (EventEditor *ee) { - GtkWidget *frame, *l; - - ee->hbox = gtk_vbox_new (0, 0); - gtk_container_add (GTK_CONTAINER (ee), ee->hbox); - gtk_container_border_width (GTK_CONTAINER (ee), 5); - - ee->notebook = gtk_notebook_new (); - gtk_box_pack_start (GTK_BOX (ee->hbox), ee->notebook, 1, 1, 0); + GtkWidget *l, *frame; ee->general_table = (GtkTable *) gtk_table_new (1, 1, 0); gtk_notebook_append_page (GTK_NOTEBOOK (ee->notebook), GTK_WIDGET (ee->general_table), gtk_label_new (_("General"))); - + l = adjust (gtk_label_new (_("Owner:")), 1.0, 0.5, 1.0, 1.0); gtk_table_attach (ee->general_table, l, 1, LABEL_SPAN, OWNER_LINE, OWNER_LINE + 1, GTK_FILL|GTK_EXPAND, 0, 0, 6); @@ -489,8 +483,269 @@ event_editor_init_widgets (EventEditor *ee) gtk_table_attach (ee->general_table, l, 1, 40, CLASS_LINE, CLASS_LINE + 1, 0, 0, 0, 0); +} + +static void +ee_init_summary_page (EventEditor *ee) +{ +} + +struct { + char *name; +} recurrence_types [] = { + { N_("Daily") }, + { N_("Weekly") }, + { N_("Monthly") }, + { N_("Yearly") }, + { 0 } +}; + +static void +recurrence_toggled (GtkRadioButton *radio, EventEditor *ee) +{ + GSList *list = ee->recur_group; + int which; + + if (!GTK_TOGGLE_BUTTON (radio)->active) + return; + + { + GtkWidget *child = GTK_BIN (ee->recur_content)->child; + + if (child){ + gtk_widget_ref (child); + gtk_container_remove (GTK_CONTAINER (ee->recur_content), child); + } + } + printf ("Aņadiendo\n"); + for (which = 0; list; list = list->next, which++){ + if (list->data == radio){ + GtkWidget *w; + + switch (which){ + case 3: + w = ee->recur_content_daily; + break; + case 2: + w = ee->recur_content_weekly; + break; + case 1: + w = ee->recur_content_monthly; + break; + default: + return; + } + printf ("Aņadiendo\n"); + gtk_widget_show_all (w); + gtk_container_add (GTK_CONTAINER (ee->recur_content), w); + } + } +} + +static GtkWidget * +small_entry (void) +{ + GtkWidget *entry = gtk_entry_new (); + + gtk_widget_set_usize (GTK_WIDGET (entry), gdk_string_width (entry->style->font, "WWW"), 0); + return entry; +} + +static char *numeral_day_names [] = { + N_("1st"), + N_("2nd"), + N_("3rd"), + N_("4th"), + N_("5th"), + N_("6th"), + N_("7th"), + N_("8th"), + N_("9th"), + N_("10th"), + N_("11th"), + N_("12th"), + N_("13th"), + N_("14th"), + N_("15th"), + N_("16th"), + N_("17th"), + N_("18th"), + N_("19th"), + N_("20th"), + N_("21th"), + N_("22th"), + N_("23th"), + N_("24th"), + N_("25th"), + N_("26th"), + N_("27th"), + N_("28th"), + N_("29th"), + N_("30th"), + N_("31th"), + NULL +}; + +static char *weekday_names [] = { + N_("Monday"), + N_("Tuesday"), + N_("Wednesday"), + N_("Thursday"), + N_("Friday"), + N_("Saturday"), + N_("Sunday"), + NULL +}; + +static GtkWidget * +make_day_list_widget (char **array) +{ + GtkWidget *option_menu, *menu; + int i; + + option_menu = gtk_option_menu_new (); + menu = gtk_menu_new (); + for (i = 0; array [i]; i++){ + GtkWidget *item; + + item = gtk_menu_item_new_with_label (_(array [i])); + gtk_menu_append (GTK_MENU (menu), item); + gtk_widget_show (item); + } + gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), menu); + return option_menu; +} + +static void +month_sensitize (EventEditor *ee, int state) +{ + gtk_widget_set_sensitive (ee->recur_month_date, state); + + gtk_widget_set_sensitive (ee->recur_month_day, !state); + gtk_widget_set_sensitive (ee->recur_month_weekday, !state); +} + +static void +recur_month_enable_date (GtkToggleButton *button, EventEditor *ee) +{ + month_sensitize (ee, button->active); +} + +static void +ee_rp_init_frequency (EventEditor *ee) +{ + char *day_names [] = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" }; + GtkWidget *r, *re, *r1, *f, *vbox, *hbox, *content, *week_hbox, *week_day, *w; + GSList *group; + int i; + + f = gtk_frame_new (_("Frequency")); + vbox = gtk_vbox_new (0, 0); + hbox = gtk_hbox_new (0, 0); + ee->recur_content = gtk_alignment_new (0.0, 0.0, 0.0, 0.0); + gtk_container_add (GTK_CONTAINER (f), hbox); + gtk_box_pack_start (GTK_BOX (hbox), vbox, 0, 0, 0); + gtk_box_pack_start (GTK_BOX (hbox), gtk_vseparator_new (), 0, 0, 0); + gtk_box_pack_start (GTK_BOX (hbox), ee->recur_content, TRUE, TRUE, 0); + + /* The recureency selector */ + for (i = 0, group = NULL; recurrence_types [i].name; i++){ + r = gtk_radio_button_new_with_label (group, _(recurrence_types [i].name)); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (r)); + gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (r), i == 0); + gtk_signal_connect (GTK_OBJECT (r), "toggled", GTK_SIGNAL_FUNC (recurrence_toggled), ee); + gtk_box_pack_start_defaults (GTK_BOX (vbox), r); + } + ee->recur_group = group; + + /* 1. The daily recurrence */ + ee->recur_content_daily = gtk_hbox_new (0, 0); + ee->recur_day_period = small_entry (); + gtk_box_pack_start (GTK_BOX (ee->recur_content_daily), gtk_label_new (_("Every")), 0, 0, 0); + gtk_box_pack_start (GTK_BOX (ee->recur_content_daily), ee->recur_day_period, 0, 0, 5); + gtk_box_pack_start (GTK_BOX (ee->recur_content_daily), gtk_label_new (_("day(s)")), 0, 0, 0); + + /* 2. The weekly recurrence */ + ee->recur_content_weekly = gtk_vbox_new (0, 0); + week_hbox = gtk_hbox_new (0, 0); + + /* 2.1 The week period selector */ + ee->recur_week_period = small_entry (); + gtk_box_pack_start (GTK_BOX (week_hbox), gtk_label_new _("Every"), 0, 0, 0); + gtk_box_pack_start (GTK_BOX (week_hbox), ee->recur_week_period, 0, 0, 5); + gtk_box_pack_start (GTK_BOX (week_hbox), gtk_label_new (_("week(s)")), 0, 0, 0); + gtk_box_pack_start (GTK_BOX (ee->recur_content_weekly), week_hbox, 1, 1, 0); + + /* 2.2 The week day selector */ + week_day = gtk_hbox_new (0, 0); + for (i = 0; i < 7; i++){ + ee->recur_week_days [i] = gtk_check_button_new_with_label (_(day_names [i])); + gtk_box_pack_start (GTK_BOX (week_day), ee->recur_week_days [i], 1, 1, 5); + } + gtk_box_pack_start (GTK_BOX (ee->recur_content_weekly), week_day, 1, 1, 0); + + + /* 3. The monthly recurrence */ + ee->recur_content_monthly = gtk_table_new (0, 0, 0); + re = gtk_radio_button_new_with_label (NULL, _("Recur on the")); + ee->recur_month_date = make_day_list_widget (numeral_day_names); + w = gtk_label_new (_("day")); + gtk_misc_set_alignment (GTK_MISC (w), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (ee->recur_content_monthly), re, + 0, 1, 0, 1, 0, 0, 0, 0); + gtk_table_attach (GTK_TABLE (ee->recur_content_monthly), ee->recur_month_date, + 1, 2, 0, 1, 0, 0, 5, 0); + gtk_table_attach (GTK_TABLE (ee->recur_content_monthly), w, + 2, 3, 0, 1, 0, 0, 0, 0); + gtk_signal_connect (GTK_OBJECT (re), "toggled", GTK_SIGNAL_FUNC (recur_month_enable_date), ee); + + r1 = gtk_radio_button_new_with_label (gtk_radio_button_group (GTK_RADIO_BUTTON (r)), _("Recur on the")); + ee->recur_month_day = make_day_list_widget (numeral_day_names); + ee->recur_month_weekday = make_day_list_widget (weekday_names); + gtk_table_attach (GTK_TABLE (ee->recur_content_monthly), r1, + 0, 1, 1, 2, 0, 0, 0, 0); + gtk_table_attach (GTK_TABLE (ee->recur_content_monthly), ee->recur_month_day, + 1, 2, 1, 2, 0, 0, 5, 0); + gtk_table_attach (GTK_TABLE (ee->recur_content_monthly), ee->recur_month_weekday, + 2, 3, 1, 2, 0, 0, 5, 0); + month_sensitize (ee, 0); + +/* recurrence_toggled (GTK_RADIO_BUTTON (r), ee); */ + gtk_container_add (GTK_CONTAINER (ee->recur_content), gtk_label_new ("hola!")); + gtk_widget_show_all (ee->recur_content); + + /* Attach to the main table */ + gtk_table_attach (GTK_TABLE (ee->recur_table), f, + 0, 1, 0, 1, + GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 0, 0); +} + +static void +ee_init_recurrent_page (EventEditor *ee) +{ + ee->recur_table = gtk_table_new (1, 1, 0); + gtk_notebook_append_page (GTK_NOTEBOOK (ee->notebook), GTK_WIDGET (ee->recur_table), + gtk_label_new (_("Repeating"))); + ee_rp_init_frequency (ee); +} + +static void +event_editor_init_widgets (EventEditor *ee) +{ + ee->hbox = gtk_vbox_new (0, 0); + gtk_container_add (GTK_CONTAINER (ee), ee->hbox); + gtk_container_border_width (GTK_CONTAINER (ee), 5); + + ee->notebook = gtk_notebook_new (); + gtk_box_pack_start (GTK_BOX (ee->hbox), ee->notebook, 1, 1, 0); + + /* Init the various configuration pages */ + ee_init_general_page (ee); + ee_init_summary_page (ee); + ee_init_recurrent_page (ee); + /* Separator */ - gtk_box_pack_start (GTK_BOX (ee->hbox), gtk_hseparator_new (), 1, 1, 0); + gtk_box_pack_start (GTK_BOX (ee->hbox), gtk_hseparator_new (), 1, 0, 0); /* Buttons */ gtk_box_pack_start (GTK_BOX (ee->hbox), ee_create_buttons (ee), 0, 0, 5); diff --git a/calendar/gui/eventedit.h b/calendar/gui/eventedit.h index 45e966d034..c2d5d1123f 100644 --- a/calendar/gui/eventedit.h +++ b/calendar/gui/eventedit.h @@ -33,6 +33,22 @@ typedef struct { GtkWidget *general_summary; GtkWidget *start_time, *end_time; GtkWidget *general_radios; + + GtkWidget *recur_table; + GSList *recur_group; + GtkWidget *recur_content; + + GtkWidget *recur_content_daily; + GtkWidget *recur_day_period; /* GtkEntry */ + + GtkWidget *recur_content_weekly; + GtkWidget *recur_week_period; /* GtkEntry */ + GtkWidget *recur_week_days [7]; + + GtkWidget *recur_content_monthly; + GtkWidget *recur_month_date; + GtkWidget *recur_month_day; + GtkWidget *recur_month_weekday; /* The associated ical object */ iCalObject *ical; |