protected void OnButtonPickDatePeriodClicked(object sender, EventArgs e) { #region Widget creation Window parentWin = (Window)Toplevel; var selectDate = new Dialog ("Укажите период", parentWin, DialogFlags.DestroyWithParent); selectDate.Modal = true; selectDate.AddButton ("Отмена", ResponseType.Cancel); selectDate.AddButton ("Ok", ResponseType.Ok); periodSummary = new Label(); selectDate.VBox.Add(periodSummary); HBox hbox = new HBox (true, 6); StartDateCalendar = new Calendar (); StartDateCalendar.DisplayOptions = DisplayOptions; StartDateCalendar.Date = StartDateOrNull ?? DateTime.Today; StartDateCalendar.DaySelected += StartDateCalendar_DaySelected; EndDateCalendar = new Calendar (); EndDateCalendar.DisplayOptions = DisplayOptions; EndDateCalendar.Date = EndDateOrNull ?? DateTime.Today; EndDateCalendar.DaySelected += EndDateCalendar_DaySelected; hbox.Add (StartDateCalendar); hbox.Add (EndDateCalendar); selectDate.VBox.Add (hbox); selectDate.ShowAll (); #endregion int response = selectDate.Run (); if (response == (int)ResponseType.Ok) { startDate = StartDateCalendar.GetDate (); endDate = EndDateCalendar.GetDate (); OnPeriodChanged (); } #region Destroy EndDateCalendar.Destroy (); StartDateCalendar.Destroy (); hbox.Destroy (); selectDate.Destroy (); #endregion }
protected void OnButtonEditDateClicked(object sender, EventArgs e) { Gtk.Window parentWin = (Gtk.Window) this.Toplevel; editDate = new Dialog(WithTime ? "Укажите дату и время" : "Укажите дату", parentWin, Gtk.DialogFlags.DestroyWithParent); editDate.Modal = true; editDate.AddButton ("Отмена", ResponseType.Cancel); editDate.AddButton ("Ok", ResponseType.Ok); TimeEntry timeEntry = null; if(WithTime) { HBox timeBox = new HBox(); Label timeLabel = new Label("Время:"); timeLabel.Angle = 1; timeBox.Add(timeLabel); timeEntry = new TimeEntry(); timeEntry.DateTime = date ?? DateTime.Now.Date; timeEntry.AutocompleteStep = 5; timeBox.Add(timeEntry); editDate.VBox.Add(timeBox); } Calendar SelectDate = new Calendar (); SelectDate.DisplayOptions = CalendarDisplayOptions.ShowHeading | CalendarDisplayOptions.ShowDayNames | CalendarDisplayOptions.ShowWeekNumbers; SelectDate.DaySelectedDoubleClick += OnCalendarDaySelectedDoubleClick; SelectDate.Date = date ?? DateTime.Now.Date; editDate.VBox.Add(SelectDate); editDate.ShowAll(); int response = editDate.Run (); if(response == (int)ResponseType.Ok) { DateOrNull = WithTime ? SelectDate.GetDate() + timeEntry.Time : SelectDate.GetDate(); } SelectDate.Destroy(); editDate.Destroy (); }