/// <summary> /// Prompt the user and delete the notebok (if they say so). /// </summary> /// <param name="parent"> /// A <see cref="Gtk.Window"/> /// </param> /// <param name="notebook"> /// A <see cref="Notebook"/> /// </param> void NotebookManager::prompt_delete_notebook(Gtk::Window * parent, const Notebook::Ptr & notebook) { // Confirmation Dialog utils::HIGMessageDialog dialog(parent, GTK_DIALOG_MODAL, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_YES_NO, _("Really delete this notebook?"), _("The notes that belong to this notebook will not be " "deleted, but they will no longer be associated with " "this notebook. This action cannot be undone.")); dialog.set_default_response(Gtk::RESPONSE_NO); int response = dialog.run (); if (response != Gtk::RESPONSE_YES) { return; } // Grab the template note before removing all the notebook tags Note::Ptr templateNote = notebook->get_template_note (); obj().delete_notebook (notebook); // Delete the template note if (templateNote) { obj().note_manager().delete_note(templateNote); } }
Notebook::Ptr NotebookManager::get_or_create_notebook(const std::string & notebookName) { if (notebookName.empty()) throw sharp::Exception ("NotebookManager.GetNotebook () called with a null name."); Notebook::Ptr notebook = get_notebook (notebookName); if (notebook) { return notebook; } Gtk::TreeIter iter; // lock (locker) { notebook = get_notebook (notebookName); if (notebook) return notebook; try { m_adding_notebook = true; notebook = Notebook::Ptr(new Notebook (notebookName)); } catch(...) { // set flag to fast and rethrow m_adding_notebook = false; throw; } m_adding_notebook = false; iter = m_notebooks->append (); iter->set_value(0, notebook); m_notebookMap [notebook->get_normalized_name()] = iter; // Create the template note so the system tag // that represents the notebook actually gets // saved to a note (and persisted after Tomboy // is shut down). Note::Ptr templateNote = notebook->get_template_note (); // Make sure the template note has the notebook tag. // Since it's possible for the template note to already // exist, we need to make sure it gets tagged. templateNote->add_tag (notebook->get_tag()); m_note_added_to_notebook (*templateNote, notebook); // } return notebook; }