public void Execute ()
{
IRemoteControl remote = null;
try {
remote = RemoteControlProxy.GetInstance ();
} catch (Exception e) {
Logger.Error ("Unable to connect to Tomboy remote control: {0}",
e.Message);
}
if (remote == null)
return;
if (new_note) {
string new_uri;
if (new_note_name != null) {
new_uri = remote.FindNote (new_note_name);
if (new_uri == null || new_uri == string.Empty)
new_uri = remote.CreateNamedNote (new_note_name);
} else
new_uri = remote.CreateNote ();
if (new_uri != null)
remote.DisplayNote (new_uri);
}
if (open_start_here)
open_note_uri = remote.FindStartHereNote ();
if (open_note_name != null)
open_note_uri = remote.FindNote (open_note_name);
if (open_note_uri != null) {
if (highlight_search != null)
remote.DisplayNoteWithSearch (open_note_uri,
highlight_search);
else
remote.DisplayNote (open_note_uri);
}
if (open_external_note_path != null) {
string note_id = Path.GetFileNameWithoutExtension (open_external_note_path);
if (note_id != null && note_id != string.Empty) {
// Attempt to load the note, assuming it might already
// be part of our notes list.
if (remote.DisplayNote (
string.Format ("note://tomboy/{0}", note_id)) == false) {
StreamReader sr = File.OpenText (open_external_note_path);
if (sr != null) {
string noteTitle = null;
string noteXml = sr.ReadToEnd ();
// Make sure noteXml is parseable
XmlDocument xmlDoc = new XmlDocument ();
try {
xmlDoc.LoadXml (noteXml);
} catch {
noteXml = null;
}
if (noteXml != null) {
noteTitle = NoteArchiver.Instance.GetTitleFromNoteXml (noteXml);
if (noteTitle != null) {
// Check for conflicting titles
string baseTitle = (string)noteTitle.Clone ();
for (int i = 1; remote.FindNote (noteTitle) != string.Empty; i++)
noteTitle = baseTitle + " (" + i.ToString() + ")";
string note_uri = remote.CreateNamedNote (noteTitle);
// Update title in the note XML
noteXml = NoteArchiver.Instance.GetRenamedNoteXml (noteXml, baseTitle, noteTitle);
if (note_uri != null) {
// Load in the XML contents of the note file
if (remote.SetNoteCompleteXml (note_uri, noteXml))
remote.DisplayNote (note_uri);
}
}
}
}
}
}
}
if (open_search) {
if (search_text != null)
remote.DisplaySearchWithText (search_text);
else
remote.DisplaySearch ();
}
if (addin_args) AddinCmdLineArgsDetected (this, new EventArgs ());
}
}