Exemple #1
0
 protected void RemoveSplitTags(Gtk.TextBuffer buffer)
 {
     foreach (TagData tag in splitTags)
     {
         Gtk.TextIter start = buffer.GetIterAtOffset(tag.start);
         Gtk.TextIter end   = buffer.GetIterAtOffset(tag.end);
         buffer.RemoveTag(tag.tag, start, end);
     }
 }
Exemple #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);
        }
Exemple #3
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));
        }
Exemple #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));
        }
Exemple #5
0
        protected void ApplySplitTags(Gtk.TextBuffer buffer)
        {
            foreach (TagData tag in splitTags)
            {
                int offset = GetSplitOffset();

                Gtk.TextIter start = buffer.GetIterAtOffset(tag.start - offset);
                Gtk.TextIter end   = buffer.GetIterAtOffset(tag.end - offset);
                buffer.ApplyTag(tag.tag, start, end);
            }
        }
Exemple #6
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);
        }
Exemple #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));
        }
Exemple #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);
        }
        // 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);
        }
Exemple #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);
        }
Exemple #11
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);
        }
Exemple #12
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);
        }