private void OnCalendarChanged(object sender, EventArgs args)
        {
            DateTime newDate = Calendar.GetDate();

            if (newDate != Date)
            {
                SetDate(newDate);
            }
        }
Exemple #2
0
        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
        }
Exemple #4
0
 /// <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 ();
        }