This email hasn't made it to gnome-i18n or gnome-doc-list, so I have subscribed to those lists to expedite things. The patch mentioned below is also attached to this email. Sorry for any unnecessary duplication.
On 8/22/06, Sanford Armstrong <[EMAIL PROTECTED]> wrote:
As part of Tomboy being included in GNOME 2.16 [1], several users have requested the ability for old Sticky Notes to be automatically imported into Tomboy [2] [3]. This feature is now ready to be committed. Attached is the patch, and it breaks the string freeze for Tomboy in two ways: 1) A GConf key has been added to tomboy.schemas.in. Since the Sticky Note import plugin is an official part of Tomboy, and the plugin uses a GConf key to determine if it has ever been run before, this is a necessary change. 2) Previously, when manually running the Sticky Note import plugin, the dialog would say something like "4 of 4 Sticky Notes were successfully imported". But if a user upgrades/installs Tomboy, and the first time it starts is on their next log-in, that message is somewhat disembodied and needs to be more explicit. Therefore it now ends with "successfully imported into Tomboy". I feel that this is an important change for users who are just transitioning from Sticky Notes to Tomboy. If anyone has a better suggestion for the verbiage in that dialog, I would be happy to hear it. I am new to internationalization, so if there is any additional way I have broken the freeze please let me know. I would like to commit this patch to CVS as soon as possible. Thanks, Sandy Armstrong [1] http://mail.gnome.org/archives/devel-announce-list/2006-August/msg00000.html [2] http://mail.gnome.org/archives/desktop-devel-list/2006-July/msg00642.html [3] http://mail.gnome.org/archives/desktop-devel-list/2006-August/msg00211.html
? INSTALL ? Tomboy/Plugins/.StickyNoteImport.cs.swp ? data/DefaultPlugins.desktop ? data/DefaultPlugins.desktop.in ? data/tomboy-plugins.pc ? po/stamp-it Index: Tomboy/NoteManager.cs =================================================================== RCS file: /cvs/gnome/tomboy/Tomboy/NoteManager.cs,v retrieving revision 1.30 diff -u -p -r1.30 NoteManager.cs --- Tomboy/NoteManager.cs 27 Jul 2006 08:50:17 -0000 1.30 +++ Tomboy/NoteManager.cs 23 Aug 2006 04:54:00 -0000 @@ -143,7 +143,10 @@ namespace Tomboy trie_controller.Update (); // Load all the plugins for our notes. - foreach (Note note in notes) { + // Iterating through copy of notes list, because list may be + // changed when loading plugins. + ArrayList notesCopy = new ArrayList (notes); + foreach (Note note in notesCopy) { plugin_mgr.LoadPluginsForNote (note); } } Index: Tomboy/Preferences.cs =================================================================== RCS file: /cvs/gnome/tomboy/Tomboy/Preferences.cs,v retrieving revision 1.8 diff -u -p -r1.8 Preferences.cs --- Tomboy/Preferences.cs 2 Aug 2006 07:08:24 -0000 1.8 +++ Tomboy/Preferences.cs 23 Aug 2006 04:54:00 -0000 @@ -23,6 +23,8 @@ namespace Tomboy public const string EXPORTHTML_LAST_DIRECTORY = "/apps/tomboy/export_html/last_directory"; public const string EXPORTHTML_EXPORT_LINKED = "/apps/tomboy/export_html/export_linked"; + public const string STICKYNOTEIMPORTER_FIRST_RUN = "/apps/tomboy/sticky_note_importer/sticky_importer_first_run"; + static GConf.Client client; static GConf.NotifyEventHandler changed_handler; @@ -70,6 +72,9 @@ namespace Tomboy case EXPORTHTML_LAST_DIRECTORY: return ""; + + case STICKYNOTEIMPORTER_FIRST_RUN: + return true; } return null; Index: Tomboy/Plugins/StickyNoteImport.cs =================================================================== RCS file: /cvs/gnome/tomboy/Tomboy/Plugins/StickyNoteImport.cs,v retrieving revision 1.3 diff -u -p -r1.3 StickyNoteImport.cs --- Tomboy/Plugins/StickyNoteImport.cs 25 Jul 2006 22:34:25 -0000 1.3 +++ Tomboy/Plugins/StickyNoteImport.cs 23 Aug 2006 04:54:00 -0000 @@ -18,9 +18,15 @@ public class StickyNoteImporter : NotePl private const string base_duplicate_note_title = "{0} (#{1})"; private const string debug_no_sticky_file = - "StickyNoteImporter: Sticky Notes XML file does not exist!"; + "StickyNoteImporter: Sticky Notes XML file does not exist or is invalid!"; private const string debug_create_error_base = "StickyNoteImporter: Error while trying to create note \"{0}\": {1}"; + private const string debug_first_run_detected = + "StickyNoteImporter: Detecting that importer has never been run..."; + private const string debug_gconf_set_error_base = + "StickyNoteImporter: Error setting initial GConf first run key value: {0}"; + + private string sticky_xml_path; protected override void Initialize () { @@ -30,6 +36,12 @@ public class StickyNoteImporter : NotePl item.Activated += ImportButtonClicked; item.Show (); AddPluginMenuItem (item); + + sticky_xml_path = + Environment.GetFolderPath (System.Environment.SpecialFolder.Personal) + + sticky_xml_rel_path; + + CheckForFirstRun (); } protected override void Shutdown () @@ -41,19 +53,54 @@ public class StickyNoteImporter : NotePl { // Do nothing. } - - void ImportButtonClicked (object sender, EventArgs args) + + void CheckForFirstRun () { - string sticky_xml_path = - Environment.GetFolderPath (System.Environment.SpecialFolder.Personal) - + sticky_xml_rel_path; + bool firstRun = (bool) Preferences.Get (Preferences.STICKYNOTEIMPORTER_FIRST_RUN); + + if (firstRun) { + try { + Preferences.Set (Preferences.STICKYNOTEIMPORTER_FIRST_RUN, false); + } catch (Exception e) { + Logger.Log (debug_gconf_set_error_base, e); + } + + Logger.Log (debug_first_run_detected); + + XmlDocument xmlDoc = GetStickyXmlDoc (); + if (xmlDoc != null) + ImportNotes (xmlDoc); + } + } - if (File.Exists (sticky_xml_path)) - ImportNotes (sticky_xml_path); + XmlDocument GetStickyXmlDoc () + { + if (File.Exists (sticky_xml_path)) { + try { + XmlDocument xmlDoc = new XmlDocument (); + xmlDoc.Load (sticky_xml_path); + return xmlDoc; + } + catch { + Logger.Log (debug_no_sticky_file); + return null; + } + } else { Logger.Log (debug_no_sticky_file); - ShowNoStickyXMLDialog (sticky_xml_path); + return null; } + + } + + void ImportButtonClicked (object sender, EventArgs args) + { + XmlDocument xmlDoc = GetStickyXmlDoc (); + + if (xmlDoc != null) + ImportNotes (xmlDoc); + else + ShowNoStickyXMLDialog (sticky_xml_path); } void ShowNoStickyXMLDialog (string xmlPath) @@ -73,24 +120,14 @@ public class StickyNoteImporter : NotePl ShowMessageDialog ( Catalog.GetString ("Sticky Notes import completed"), string.Format (Catalog.GetString ("<b>{0}</b> of <b>{1}</b> Sticky Notes " + - "were successfully imported."), + "were successfully imported into Tomboy."), numNotesImported, numNotesTotal), Gtk.MessageType.Info); } - void ImportNotes (string xmlPath) + void ImportNotes (XmlDocument xmlDoc) { - XmlDocument xmlDoc = new XmlDocument (); - try { - xmlDoc.Load (xmlPath); - } - catch { - // TODO: Should this show a different message? - ShowNoStickyXMLDialog (xmlPath); - return; - } - XmlNodeList nodes = xmlDoc.SelectNodes (sticky_note_query); int numSuccessful = 0; @@ -133,6 +170,7 @@ public class StickyNoteImporter : NotePl try { Note newNote = Manager.Create (title, noteXml); + newNote.QueueSave (false); newNote.Save (); return true; } catch (Exception e) { Index: data/tomboy.schemas.in =================================================================== RCS file: /cvs/gnome/tomboy/data/tomboy.schemas.in,v retrieving revision 1.4 diff -u -p -r1.4 tomboy.schemas.in --- data/tomboy.schemas.in 27 May 2006 01:58:25 -0000 1.4 +++ data/tomboy.schemas.in 23 Aug 2006 04:54:01 -0000 @@ -207,6 +207,21 @@ </schema> <schema> + <key>/schemas/apps/tomboy/sticky_note_importer/sticky_importer_first_run</key> + <applyto>/apps/tomboy/sticky_note_importer/sticky_importer_first_run</applyto> + <owner>tomboy</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Sticky Note Importer First Run</short> + <long> + Indicates that the Sticky Note Importer plugin has not been run, so it should run + automatically the next time Tomboy starts. + </long> + </locale> + </schema> + + <schema> <key>/schemas/desktop/gnome/url-handlers/note/command</key> <applyto>/desktop/gnome/url-handlers/note/command</applyto> <owner>tomboy</owner>
_______________________________________________ gnome-i18n mailing list gnome-i18n@gnome.org http://mail.gnome.org/mailman/listinfo/gnome-i18n