private void OnCalendarChanged(object sender, EventArgs args) { DateTime newDate = Calendar.GetDate(); if (newDate != Date) { SetDate(newDate); } }
public void OnOkClicked(object o, EventArgs args) { int hour = Convert.ToInt32(hourSpin.Value); int minute = Convert.ToInt32(minuteSpin.Value); int second = Convert.ToInt32(secondSpin.Value); DateTime dt = calendar.GetDate(); DateTime userDT = new DateTime(dt.Year, dt.Month, dt.Day, hour, minute, second); _time = Util.GetUnixTime(userDT); timeDateDialog.HideAll(); }
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 }
/// <summary> /// User is about to edit a cell. /// </summary> /// <param name="sender">The sender of the event</param> /// <param name="e">The event arguments</param> private void OnCellBeginEdit(object sender, EditingStartedArgs e) { this.userEditingCell = true; IGridCell where = GetCurrentCell; if (where.RowIndex >= DataSource.Rows.Count) { for (int i = DataSource.Rows.Count; i <= where.RowIndex; i++) { DataRow row = DataSource.NewRow(); DataSource.Rows.Add(row); } } this.valueBeforeEdit = this.DataSource.Rows[where.RowIndex][where.ColumnIndex]; Type dataType = this.valueBeforeEdit.GetType(); if (dataType == typeof(DateTime)) { Dialog dialog = new Dialog("Select date", gridview.Toplevel as Window, DialogFlags.DestroyWithParent); dialog.SetPosition(WindowPosition.None); VBox topArea = dialog.VBox; topArea.PackStart(new HBox()); Calendar calendar = new Calendar(); calendar.DisplayOptions = CalendarDisplayOptions.ShowHeading | CalendarDisplayOptions.ShowDayNames | CalendarDisplayOptions.ShowWeekNumbers; calendar.Date = (DateTime)this.valueBeforeEdit; topArea.PackStart(calendar, true, true, 0); dialog.ShowAll(); dialog.Run(); // What SHOULD we do here? For now, assume that if the user modified the date in the calendar dialog, // the resulting date is what they want. Otherwise, keep the text-editing (Entry) widget active, and // let the user enter a value manually. if (calendar.Date != (DateTime)this.valueBeforeEdit) { DateTime date = calendar.GetDate(); this.DataSource.Rows[where.RowIndex][where.ColumnIndex] = date; CellRendererText render = sender as CellRendererText; if (render != null) { render.Text = String.Format("{0:d}", date); if (e.Editable is Entry) { (e.Editable as Entry).Text = render.Text; (e.Editable as Entry).Destroy(); this.userEditingCell = false; if (this.CellsChanged != null) { GridCellsChangedArgs args = new GridCellsChangedArgs(); args.ChangedCells = new List<IGridCell>(); args.ChangedCells.Add(this.GetCell(where.ColumnIndex, where.RowIndex)); this.CellsChanged(this, args); } } } } dialog.Destroy(); } }
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 (); }