TaskTag GetTaskTagFromLineIter (ref Gtk.TextIter line_iter) { TaskTag task_tag = null; while (line_iter.StartsLine () == false) { line_iter.BackwardChar (); } task_tag = (TaskTag) Buffer.GetDynamicTag ("task", line_iter); return task_tag; }
/// <summary> /// Remove the task from the line specified by the TextIter. This /// will remove the TextTag and also the "todo:" portion of the line /// so it will no longer be a task. The task summary text will be /// left on the line. /// <param name="iter">The TextIter specifying the line where the /// task should be removed.</param> /// <returns>True if a task was removed, otherwise False.</returns> /// </summary> bool RemoveTaskFromLine (ref Gtk.TextIter iter) { if (RemoveTaskTagFromLine (iter) == false) return false; while (iter.StartsLine () == false) { iter.BackwardChar (); } Gtk.TextIter line_end = iter; while (line_end.EndsLine () == false) { line_end.ForwardChar (); } // line_end.ForwardToLineEnd (); string text = iter.GetText (line_end); Buffer.Delete (ref iter, ref line_end); text = GetTaskSummaryFromLine (text); if (text.Length > 0) Buffer.Insert (ref iter, text); return true; }
private void HorizontalLine(Gtk.TextIter i) { /* * Insert an horizontal line (a sort of) centered on mark «w». */ Gtk.TextIter ogt = i; ogt.BackwardChar(); // Buffer.AddNewline(false); <-- Didn't work. if (! i.StartsLine()) Buffer.Insert(ref i, "\n"); Buffer.Insert(ref i, " ―――――――――――o―――――――――――"); Buffer.InsertInteractiveAtCursor("\n", true); }