Ejemplo n.º 1
0
        public override void Redo(Gtk.TextBuffer buffer)
        {
            RemoveSplitTags(buffer);

            Gtk.TextIter start_iter = buffer.GetIterAtOffset(start);
            Gtk.TextIter end_iter   = buffer.GetIterAtOffset(end);
            buffer.Delete(ref start_iter, ref end_iter);
            buffer.MoveMark(buffer.InsertMark, buffer.GetIterAtOffset(start));
            buffer.MoveMark(buffer.SelectionBound, buffer.GetIterAtOffset(start));
        }
Ejemplo n.º 2
0
        public void Redo(Gtk.TextBuffer buffer)
        {
            Gtk.TextIter start_iter, end_iter;
            start_iter = buffer.GetIterAtOffset(start);
            end_iter   = buffer.GetIterAtOffset(end);

            buffer.MoveMark(buffer.SelectionBound, start_iter);
            buffer.RemoveTag(tag, start_iter, end_iter);
            buffer.MoveMark(buffer.InsertMark, end_iter);
        }
Ejemplo n.º 3
0
        public void Redo(Gtk.TextBuffer buffer)
        {
            Gtk.TextIter iter = buffer.GetIterAtOffset(offset);

            buffer.Insert(ref iter, "\n");

            ((NoteBuffer)buffer).InsertBullet(ref iter, depth, direction);

            buffer.MoveMark(buffer.InsertMark, iter);
            buffer.MoveMark(buffer.SelectionBound, iter);
        }
Ejemplo n.º 4
0
        public override void Redo(Gtk.TextBuffer buffer)
        {
            RemoveSplitTags(buffer);

            Gtk.TextIter idx_iter = buffer.GetIterAtOffset(index);
            buffer.InsertRange(ref idx_iter, chop.Start, chop.End);

            buffer.MoveMark(buffer.SelectionBound, buffer.GetIterAtOffset(index));
            buffer.MoveMark(buffer.InsertMark,
                            buffer.GetIterAtOffset(index + chop.Length));
        }
Ejemplo n.º 5
0
        public override void Undo(Gtk.TextBuffer buffer)
        {
            int tag_images = GetSplitOffset();

            Gtk.TextIter start_iter = buffer.GetIterAtOffset(index - tag_images);
            Gtk.TextIter end_iter   = buffer.GetIterAtOffset(index - tag_images + chop.Length);
            buffer.Delete(ref start_iter, ref end_iter);
            buffer.MoveMark(buffer.InsertMark, buffer.GetIterAtOffset(index - tag_images));
            buffer.MoveMark(buffer.SelectionBound, buffer.GetIterAtOffset(index - tag_images));

            ApplySplitTags(buffer);
        }
Ejemplo n.º 6
0
        public void Undo(Gtk.TextBuffer buffer)
        {
            Gtk.TextIter iter = buffer.GetIterAtOffset(offset);
            iter.ForwardLine();
            iter = buffer.GetIterAtLine(iter.Line);

            ((NoteBuffer)buffer).RemoveBullet(ref iter);

            iter.ForwardToLineEnd();

            buffer.MoveMark(buffer.InsertMark, iter);
            buffer.MoveMark(buffer.SelectionBound, iter);
        }
Ejemplo n.º 7
0
        public override void Redo(Gtk.TextBuffer buffer)
        {
            RemoveSplitTags(buffer);

            Gtk.TextIter cursor = buffer.GetIterAtOffset(Offset);

            Gtk.TextTag[] tags = { Tag };
            buffer.InsertWithTags(ref cursor, Id, tags);

            buffer.MoveMark(buffer.SelectionBound, buffer.GetIterAtOffset(Offset));
            buffer.MoveMark(buffer.InsertMark,
                            buffer.GetIterAtOffset(Offset + chop.Length));
        }
Ejemplo n.º 8
0
        public override void Undo(Gtk.TextBuffer buffer)
        {
            // Tag images change the offset by one, but only when deleting.
            Gtk.TextIter start_iter = buffer.GetIterAtOffset(Offset);
            Gtk.TextIter end_iter   = buffer.GetIterAtOffset(Offset + chop.Length + 1);
            buffer.Delete(ref start_iter, ref end_iter);
            buffer.MoveMark(buffer.InsertMark, buffer.GetIterAtOffset(Offset));
            buffer.MoveMark(buffer.SelectionBound, buffer.GetIterAtOffset(Offset));

            Tag.WidgetLocation = null;

            ApplySplitTags(buffer);
        }
Ejemplo n.º 9
0
        public void Redo(Gtk.TextBuffer buffer)
        {
            Gtk.TextIter iter = buffer.GetIterAtLine(line);

            if (direction)
            {
                ((NoteBuffer)buffer).IncreaseDepth(ref iter);
            }
            else
            {
                ((NoteBuffer)buffer).DecreaseDepth(ref iter);
            }

            buffer.MoveMark(buffer.InsertMark, iter);
            buffer.MoveMark(buffer.SelectionBound, iter);
        }
Ejemplo n.º 10
0
        public override void Undo(Gtk.TextBuffer buffer)
        {
            int tag_images = GetSplitOffset();

            Gtk.TextIter start_iter = buffer.GetIterAtOffset(start - tag_images);
            buffer.InsertRange(ref start_iter, chop.Start, chop.End);

            buffer.MoveMark(buffer.InsertMark,
                            buffer.GetIterAtOffset(is_forward ? start - tag_images
                                                                 : end - tag_images));
            buffer.MoveMark(buffer.SelectionBound,
                            buffer.GetIterAtOffset(is_forward ? end - tag_images
                                                                 : start - tag_images));

            ApplySplitTags(buffer);
        }
Ejemplo n.º 11
0
        // FIXME: Mutability bugs.  multiple Links on the same line
        // aren't getting renamed.
        public bool MoveNext()
        {
            Gtk.TextIter iter = buffer.GetIterAtMark(mark);

            if (iter.Equal(buffer.EndIter))
            {
                range.Destroy();
                buffer.DeleteMark(mark);
                return(false);
            }

            if (!iter.ForwardToTagToggle(tag))
            {
                range.Destroy();
                buffer.DeleteMark(mark);
                return(false);
            }

            if (!iter.BeginsTag(tag))
            {
                buffer.MoveMark(mark, iter);
                return(MoveNext());
            }

            range.Start = iter;

            if (!iter.ForwardToTagToggle(tag))
            {
                range.Destroy();
                buffer.DeleteMark(mark);
                return(false);
            }

            if (!iter.EndsTag(tag))
            {
                buffer.MoveMark(mark, iter);
                return(MoveNext());
            }

            range.End = iter;

            buffer.MoveMark(mark, iter);

            return(true);
        }
        // Creates a new note with the given title and guid with body based on
        // the template note.
        private Note CreateNoteFromTemplate(string title, Note template_note, string guid)
        {
            Tag template_save_title = TagManager.GetOrCreateSystemTag(TagManager.TemplateNoteSaveTitleSystemTag);

            if (template_note.ContainsTag(template_save_title))
            {
                title = GetUniqueName(template_note.Title, notes.Count);
            }

            // Use the body from the template note
            string xml_content =
                template_note.XmlContent.Replace(XmlEncoder.Encode(template_note.Title),
                                                 XmlEncoder.Encode(title));

            xml_content = SanitizeXmlContent(xml_content);

            Note new_note = CreateNewNote(title, xml_content, guid);

            // Copy template note's properties
            Tag template_save_size = TagManager.GetOrCreateSystemTag(TagManager.TemplateNoteSaveSizeSystemTag);

            if (template_note.Data.HasExtent() && template_note.ContainsTag(template_save_size))
            {
                new_note.Data.Height = template_note.Data.Height;
                new_note.Data.Width  = template_note.Data.Width;
            }

            Tag template_save_selection = TagManager.GetOrCreateSystemTag(TagManager.TemplateNoteSaveSelectionSystemTag);

            if (template_note.Data.CursorPosition > 0 && template_note.ContainsTag(template_save_selection))
            {
                Gtk.TextBuffer buffer = new_note.Buffer;
                Gtk.TextIter   iter;

                // Because the titles will be different between template and
                // new note, we can't just drop the cursor at template's
                // CursorPosition. Whitespace after the title makes this more
                // complicated so let's just start counting from the line after the title.
                int title_offset_difference = buffer.GetIterAtLine(1).Offset - template_note.Buffer.GetIterAtLine(1).Offset;

                iter = buffer.GetIterAtOffset(template_note.Data.CursorPosition + title_offset_difference);
                buffer.PlaceCursor(iter);

                iter = buffer.GetIterAtOffset(template_note.Data.SelectionBoundPosition + title_offset_difference);
                buffer.MoveMark(buffer.SelectionBound.Name, iter);
            }

            return(new_note);
        }