The following strings have been added to the project (see complete details in the attached patch file): "New Note Template" "Use the new note template to specify the text that should be used when creating a new note." "_Open New Note Template..." Also, the circled part in the attached screenshot is a UI addition (along with the New Note Template note). Thanks, Boyd
Attachment:
screenshot2.png
Description: PNG image
Index: ChangeLog =================================================================== --- ChangeLog (revision 1687) +++ ChangeLog (working copy) @@ -1,5 +1,14 @@ 2007-12-18 Boyd Timothy <btimothy gmail com> + * Tomboy/PreferencesDialog.cs: Added a section on the editing page for + "New Note Template". + * Tomboy/NoteManager.cs: Added GetOrCreateTemplateNote() to allow the + new note template note to be created/accessed. Also modified + CreateNewNote() to use the content of the new note template if it + exists. + +2007-12-18 Boyd Timothy <btimothy gmail com> + * Tomboy/NoteWindow.cs: Restored the FindBar at the bottom of the note so the find functionality stays the same as previously stable-released versions. Also adjusted whitespace issues. Index: Tomboy/PreferencesDialog.cs =================================================================== --- Tomboy/PreferencesDialog.cs (revision 1687) +++ Tomboy/PreferencesDialog.cs (working copy) @@ -192,7 +192,28 @@ namespace Tomboy align.Add (font_button); font_peditor.AddGuard (font_button); + + // New Note Template + + label = MakeLabel (Catalog.GetString ("New Note Template")); + options_list.PackStart (label, false, false, 0); + label = MakeTipLabel ( + Catalog.GetString ("Use the new note template to specify the text " + + "that should be used when creating a new note.")); + options_list.PackStart (label, false, false, 0); + + align = new Gtk.Alignment (0.5f, 0.5f, 0.4f, 1.0f); + align.Show (); + options_list.PackStart (align, false, false, 0); + + Gtk.Button open_template_button; + open_template_button = new Gtk.Button ( + Catalog.GetString ("_Open New Note Template...")); + open_template_button.UseUnderline = true; + open_template_button.Clicked += OpenTemplateButtonClicked; + open_template_button.Show (); + align.Add (open_template_button); return options_list; } @@ -1168,6 +1189,15 @@ namespace Tomboy dialog.Destroy (); } } + + void OpenTemplateButtonClicked (object sender, EventArgs args) + { + NoteManager manager = Tomboy.DefaultNoteManager; + Note template_note = manager.GetOrCreateTemplateNote (); + + // Open the template note + template_note.Window.Show (); + } } // TODO: Figure out how to use Mono.Addins.Gui.AddinInfoDialog here instead. Index: Tomboy/NoteManager.cs =================================================================== --- Tomboy/NoteManager.cs (revision 1687) +++ Tomboy/NoteManager.cs (working copy) @@ -17,6 +17,8 @@ namespace Tomboy AddinManager addin_mgr; TrieController trie_controller; + public static string NoteTemplateTitle = Catalog.GetString ("New Note Template"); + static string start_note_uri = String.Empty; static NoteManager () @@ -363,7 +365,9 @@ public NoteManager (string directory) : } // Create a new note with the specified title, and a simple - // "Describe..." body which will be selected for easy overwrite. + // "Describe..." body or the body from the "New Note Template" + // note if it exists. If the "New Note Template" body is found + // the text will not automatically be highlighted. private Note CreateNewNote (string title, string guid) { string body = null; @@ -371,9 +375,18 @@ public NoteManager (string directory) : title = SplitTitleFromContent (title, out body); if (title == null) return null; - - if (body == null) - body = Catalog.GetString ("Describe your new note here."); + + Note note_template = Find (NoteTemplateTitle); + if (note_template != null) { + // Use the body from the "New Note Template" note + string xml_content = + note_template.XmlContent.Replace (NoteTemplateTitle, title); + return CreateNewNote (title, xml_content, guid); + } + + // Use a simple "Describe..." body and highlight + // it so it can be easily overwritten + body = Catalog.GetString ("Describe your new note here."); string header = title + "\n\n"; string content = @@ -423,6 +436,46 @@ public NoteManager (string directory) : return new_note; } + + /// <summary> + /// Get the existing template note or create a new one + /// if it doesn't already exist. + /// </summary> + /// <returns> + /// A <see cref="Note"/> + /// </returns> + public Note GetOrCreateTemplateNote () + { + Note template_note = Find (NoteTemplateTitle); + if (template_note == null) { + template_note = + Create (NoteTemplateTitle, + GetNoteTemplateContent (NoteTemplateTitle)); + + // Select the initial text + NoteBuffer buffer = template_note.Buffer; + Gtk.TextIter iter = buffer.GetIterAtLineOffset (2, 0); + buffer.MoveMark (buffer.SelectionBound, iter); + buffer.MoveMark (buffer.InsertMark, buffer.EndIter); + + template_note.QueueSave (true); + } + + return template_note; + } + + private string GetNoteTemplateContent (string title) + { + const string base_xml = + "<note-content>" + + "<note-title>{0}</note-title>\n\n" + + "{1}" + + "</note-content>"; + + return string.Format (base_xml, + title, + Catalog.GetString ("Describe your new note here.")); + } public Note Find (string linked_title) {