void EndCellEditing() { if (taskBeingEdited == null) return; if (CellEditingFinished != null) CellEditingFinished (this, new TaskRowEditingEventArgs (taskBeingEdited.Task, taskBeingEdited.Iter, taskBeingEdited.Path)); taskBeingEdited = null; }
public DueDateColumn() { TreeViewColumn = new TreeViewColumn { Title = Catalog.GetString ("Due Date"), Sizing = TreeViewColumnSizing.Fixed, Alignment = 0f, FixedWidth = 90, Resizable = false, Clickable = true }; var dueDateStore = new ListStore (typeof (string)); var today = DateTime.Now; dueDateStore.AppendValues ( today.ToString (Catalog.GetString ("M/d - ")) + Catalog.GetString ("Today")); dueDateStore.AppendValues ( today.AddDays (1).ToString (Catalog.GetString ("M/d - ")) + Catalog.GetString ("Tomorrow")); dueDateStore.AppendValues ( today.AddDays (2).ToString (Catalog.GetString ("M/d - ddd"))); dueDateStore.AppendValues ( today.AddDays (3).ToString (Catalog.GetString ("M/d - ddd"))); dueDateStore.AppendValues ( today.AddDays (4).ToString (Catalog.GetString ("M/d - ddd"))); dueDateStore.AppendValues ( today.AddDays (5).ToString (Catalog.GetString ("M/d - ddd"))); dueDateStore.AppendValues ( today.AddDays (6).ToString (Catalog.GetString ("M/d - ddd"))); dueDateStore.AppendValues ( today.AddDays (7).ToString (Catalog.GetString ("M/d - ")) + Catalog.GetString ("In 1 Week")); dueDateStore.AppendValues (Catalog.GetString ("No Date")); dueDateStore.AppendValues (Catalog.GetString ("Choose Date...")); var renderer = new CellRendererCombo { Editable = true, HasEntry = false, Model = dueDateStore, TextColumn = 0, Xalign = 0.0f }; renderer.EditingStarted += (o, args) => { TreeIter iter; var path = new TreePath (args.Path); if (!model.GetIter (out iter, path)) return; var task = model.GetValue (iter, 0) as ITask; if (task == null) return; taskBeingEdited = new TaskBeingEdited (task, iter, path); if (CellEditingStarted != null) CellEditingStarted (this, new TaskRowEditingEventArgs (task, iter, path)); }; renderer.EditingCanceled += delegate { EndCellEditing (); }; renderer.Edited += (o, args) => { TreeIter iter; var path = new TreePath (args.Path); var newText = args.NewText; if (newText != null && model.GetIter (out iter, path)) { // 2/11 - Today // 2/12 - Tomorrow // 2/13 - Wed // 2/14 - Thu // 2/15 - Fri // 2/16 - Sat // 2/17 - Sun // -------------- // 2/18 - In 1 Week // -------------- // No Date // --------------- // Choose Date... var newDate = DateTime.MinValue; var tday = DateTime.Now; var task = model.GetValue (iter, 0) as ITask; if (newText == tday.ToString (Catalog.GetString ("M/d - ")) + Catalog.GetString ("Today")) newDate = tday; else if (newText == tday.AddDays (1).ToString (Catalog.GetString ("M/d - ")) + Catalog.GetString ("Tomorrow")) newDate = tday.AddDays (1); else if (newText == Catalog.GetString ("No Date")) newDate = DateTime.MinValue; else if (newText == tday.AddDays (7).ToString (Catalog.GetString ("M/d - ")) + Catalog.GetString ("In 1 Week")) newDate = tday.AddDays (7); else if (newText == Catalog.GetString ("Choose Date...")) { var tc = new TaskCalendar (task, view.TreeView.Parent); tc.ShowCalendar (); return; } else { for (int i = 2; i <= 6; i++) { DateTime testDate = tday.AddDays (i); if (testDate.ToString (Catalog.GetString ("M/d - ddd")) == newText) { newDate = testDate; break; } } } Logger.Debug ("task.State {0}", task.State); if (task.State != TaskState.Completed) { // Modify the due date task.DueDate = newDate; } } EndCellEditing (); }; TreeViewColumn.PackStart (renderer, true); TreeViewColumn.SetCellDataFunc (renderer, DueDateCellDataFunc); }
public DueDateColumn() { TreeViewColumn = new TreeViewColumn { Title = Catalog.GetString("Due Date"), Sizing = TreeViewColumnSizing.Fixed, Alignment = 0f, FixedWidth = 90, Resizable = false, Clickable = true }; var dueDateStore = new ListStore(typeof(string)); var today = DateTime.Now; dueDateStore.AppendValues( today.ToString(Catalog.GetString("M/d - ")) + Catalog.GetString("Today")); dueDateStore.AppendValues( today.AddDays(1).ToString(Catalog.GetString("M/d - ")) + Catalog.GetString("Tomorrow")); dueDateStore.AppendValues( today.AddDays(2).ToString(Catalog.GetString("M/d - ddd"))); dueDateStore.AppendValues( today.AddDays(3).ToString(Catalog.GetString("M/d - ddd"))); dueDateStore.AppendValues( today.AddDays(4).ToString(Catalog.GetString("M/d - ddd"))); dueDateStore.AppendValues( today.AddDays(5).ToString(Catalog.GetString("M/d - ddd"))); dueDateStore.AppendValues( today.AddDays(6).ToString(Catalog.GetString("M/d - ddd"))); dueDateStore.AppendValues( today.AddDays(7).ToString(Catalog.GetString("M/d - ")) + Catalog.GetString("In 1 Week")); dueDateStore.AppendValues(Catalog.GetString("No Date")); dueDateStore.AppendValues(Catalog.GetString("Choose Date...")); var renderer = new CellRendererCombo { Editable = true, HasEntry = false, Model = dueDateStore, TextColumn = 0, Xalign = 0.0f }; renderer.EditingStarted += (o, args) => { TreeIter iter; var path = new TreePath(args.Path); if (!model.GetIter(out iter, path)) { return; } var task = model.GetValue(iter, 0) as ITask; if (task == null) { return; } taskBeingEdited = new TaskBeingEdited(task, iter, path); if (CellEditingStarted != null) { CellEditingStarted(this, new TaskRowEditingEventArgs(task, iter, path)); } }; renderer.EditingCanceled += delegate { EndCellEditing(); }; renderer.Edited += (o, args) => { TreeIter iter; var path = new TreePath(args.Path); var newText = args.NewText; if (newText != null && model.GetIter(out iter, path)) { // 2/11 - Today // 2/12 - Tomorrow // 2/13 - Wed // 2/14 - Thu // 2/15 - Fri // 2/16 - Sat // 2/17 - Sun // -------------- // 2/18 - In 1 Week // -------------- // No Date // --------------- // Choose Date... var newDate = DateTime.MinValue; var tday = DateTime.Now; var task = model.GetValue(iter, 0) as ITask; if (newText == tday.ToString(Catalog.GetString("M/d - ")) + Catalog.GetString("Today")) { newDate = tday; } else if (newText == tday.AddDays(1).ToString(Catalog.GetString("M/d - ")) + Catalog.GetString("Tomorrow")) { newDate = tday.AddDays(1); } else if (newText == Catalog.GetString("No Date")) { newDate = DateTime.MinValue; } else if (newText == tday.AddDays(7).ToString(Catalog.GetString("M/d - ")) + Catalog.GetString("In 1 Week")) { newDate = tday.AddDays(7); } else if (newText == Catalog.GetString("Choose Date...")) { var tc = new TaskCalendar(task, view.TreeView.Parent); tc.ShowCalendar(); return; } else { for (int i = 2; i <= 6; i++) { DateTime testDate = tday.AddDays(i); if (testDate.ToString(Catalog.GetString("M/d - ddd")) == newText) { newDate = testDate; break; } } } Logger.Debug("task.State {0}", task.State); if (task.State != TaskState.Completed) { // Modify the due date task.DueDate = newDate; } } EndCellEditing(); }; TreeViewColumn.PackStart(renderer, true); TreeViewColumn.SetCellDataFunc(renderer, DueDateCellDataFunc); }
public TaskNameColumn() { TreeViewColumn = new TreeViewColumn { Title = Catalog.GetString ("Task Name"), Sizing = TreeViewColumnSizing.Autosize, Expand = true, Resizable = true }; // TODO: Add in code to determine how wide we should make the name // column. // TODO: Add in code to readjust the size of the name column if the // user resizes the Task Window. //column.FixedWidth = 250; var renderer = new CellRendererText { Editable = true }; renderer.EditingStarted += (o, args) => { TreeIter iter; var path = new TreePath (args.Path); if (!model.GetIter (out iter, path)) return; var task = model.GetValue (iter, 0) as ITask; if (task == null) return; taskBeingEdited = new TaskBeingEdited (task, iter, path); if (CellEditingStarted != null) CellEditingStarted (this, new TaskRowEditingEventArgs (task, iter, path)); }; renderer.EditingCanceled += delegate { EndCellEditing (); }; renderer.Edited += (o, args) => { TreeIter iter; var path = new TreePath (args.Path); if (model.GetIter (out iter, path)) { var task = model.GetValue (iter, 0) as ITask; if (task == null) return; var newText = args.NewText; // Attempt to derive due date information from text. if (preferences.GetBool (PreferencesKeys.ParseDateEnabledKey) && task.State == TaskState.Active && task.DueDate == DateTime.MinValue) { string parsedTaskText; DateTime parsedDueDate; TaskParser.Instance.TryParse (newText, out parsedTaskText, out parsedDueDate); if (parsedDueDate != DateTime.MinValue) task.DueDate = parsedDueDate; newText = parsedTaskText; } task.Text = newText; } EndCellEditing (); }; TreeViewColumn.PackStart (renderer, true); TreeViewColumn.SetCellDataFunc (renderer, TaskNameTextCellDataFunc); }
public TaskNameColumn() { TreeViewColumn = new TreeViewColumn { Title = Catalog.GetString("Task Name"), Sizing = TreeViewColumnSizing.Autosize, Expand = true, Resizable = true }; // TODO: Add in code to determine how wide we should make the name // column. // TODO: Add in code to readjust the size of the name column if the // user resizes the Task Window. //column.FixedWidth = 250; var renderer = new CellRendererText { Editable = true }; renderer.EditingStarted += (o, args) => { TreeIter iter; var path = new TreePath(args.Path); if (!model.GetIter(out iter, path)) { return; } var task = model.GetValue(iter, 0) as ITask; if (task == null) { return; } taskBeingEdited = new TaskBeingEdited(task, iter, path); if (CellEditingStarted != null) { CellEditingStarted(this, new TaskRowEditingEventArgs(task, iter, path)); } }; renderer.EditingCanceled += delegate { EndCellEditing(); }; renderer.Edited += (o, args) => { TreeIter iter; var path = new TreePath(args.Path); if (model.GetIter(out iter, path)) { var task = model.GetValue(iter, 0) as ITask; if (task == null) { return; } var newText = args.NewText; // Attempt to derive due date information from text. if (preferences.GetBool(PreferencesKeys.ParseDateEnabledKey) && task.State == TaskState.Active && task.DueDate == DateTime.MinValue) { string parsedTaskText; DateTime parsedDueDate; TaskParser.Instance.TryParse(newText, out parsedTaskText, out parsedDueDate); if (parsedDueDate != DateTime.MinValue) { task.DueDate = parsedDueDate; } newText = parsedTaskText; } task.Text = newText; } EndCellEditing(); }; TreeViewColumn.PackStart(renderer, true); TreeViewColumn.SetCellDataFunc(renderer, TaskNameTextCellDataFunc); }
public PriorityColumn() { TreeViewColumn = new TreeViewColumn { Title = Catalog.GetString ("Priority"), Sizing = TreeViewColumnSizing.Fixed, Alignment = 0.5f, FixedWidth = 30, Resizable = false, Clickable = true }; var priorityStore = new ListStore (typeof (string)); priorityStore.AppendValues (Catalog.GetString ("1")); // High priorityStore.AppendValues (Catalog.GetString ("2")); // Medium priorityStore.AppendValues (Catalog.GetString ("3")); // Low priorityStore.AppendValues (Catalog.GetString ("-")); // None var renderer = new CellRendererCombo { Editable = true, HasEntry = false, Model = priorityStore, TextColumn = 0, Xalign = 0.5f }; renderer.EditingStarted += (o, args) => { TreeIter iter; var path = new TreePath (args.Path); if (!model.GetIter (out iter, path)) return; var task = model.GetValue (iter, 0) as ITask; if (task == null) return; taskBeingEdited = new TaskBeingEdited (task, iter, path); if (CellEditingStarted != null) CellEditingStarted (this, new TaskRowEditingEventArgs (task, iter, path)); }; renderer.EditingCanceled += delegate { EndCellEditing (); }; renderer.Edited += (o, args) => { TreeIter iter; var path = new TreePath (args.Path); if (model.GetIter (out iter, path)) { TaskPriority newPriority; var newText = args.NewText; if (newText == Catalog.GetString ("3")) newPriority = TaskPriority.Low; else if (newText == Catalog.GetString ("2")) newPriority = TaskPriority.Medium; else if (newText == Catalog.GetString ("1")) newPriority = TaskPriority.High; else newPriority = TaskPriority.None; // Update the priority if it's different var task = model.GetValue (iter, 0) as ITask; if (task.Priority != newPriority) task.Priority = newPriority; } EndCellEditing (); }; TreeViewColumn.PackStart (renderer, true); TreeViewColumn.SetCellDataFunc (renderer, TaskPriorityCellDataFunc); }
public PriorityColumn() { TreeViewColumn = new TreeViewColumn { Title = Catalog.GetString("Priority"), Sizing = TreeViewColumnSizing.Fixed, Alignment = 0.5f, FixedWidth = 30, Resizable = false, Clickable = true }; var priorityStore = new ListStore(typeof(string)); priorityStore.AppendValues(Catalog.GetString("1")); // High priorityStore.AppendValues(Catalog.GetString("2")); // Medium priorityStore.AppendValues(Catalog.GetString("3")); // Low priorityStore.AppendValues(Catalog.GetString("-")); // None var renderer = new CellRendererCombo { Editable = true, HasEntry = false, Model = priorityStore, TextColumn = 0, Xalign = 0.5f }; renderer.EditingStarted += (o, args) => { TreeIter iter; var path = new TreePath(args.Path); if (!model.GetIter(out iter, path)) { return; } var task = model.GetValue(iter, 0) as ITask; if (task == null) { return; } taskBeingEdited = new TaskBeingEdited(task, iter, path); if (CellEditingStarted != null) { CellEditingStarted(this, new TaskRowEditingEventArgs(task, iter, path)); } }; renderer.EditingCanceled += delegate { EndCellEditing(); }; renderer.Edited += (o, args) => { TreeIter iter; var path = new TreePath(args.Path); if (model.GetIter(out iter, path)) { TaskPriority newPriority; var newText = args.NewText; if (newText == Catalog.GetString("3")) { newPriority = TaskPriority.Low; } else if (newText == Catalog.GetString("2")) { newPriority = TaskPriority.Medium; } else if (newText == Catalog.GetString("1")) { newPriority = TaskPriority.High; } else { newPriority = TaskPriority.None; } // Update the priority if it's different var task = model.GetValue(iter, 0) as ITask; if (task.Priority != newPriority) { task.Priority = newPriority; } } EndCellEditing(); }; TreeViewColumn.PackStart(renderer, true); TreeViewColumn.SetCellDataFunc(renderer, TaskPriorityCellDataFunc); }