void NotebookNoteAddin::update_menu() { // // Clear out the old list // for(std::list<Gtk::MenuItem *>::const_iterator iter = m_menu_items.begin(); iter != m_menu_items.end(); ++iter) { m_menu->remove (**iter); } m_menu_items.clear(); // // Build a new menu // // Add the "New Notebook..." Gtk::ImageMenuItem *newNotebookMenuItem = manage(new Gtk::ImageMenuItem (_("_New notebook..."), true)); newNotebookMenuItem->set_image(*manage(new Gtk::Image( IconManager::obj().get_icon(IconManager::NOTEBOOK_NEW, 16)))); newNotebookMenuItem->signal_activate() .connect(sigc::mem_fun(*this,&NotebookNoteAddin::on_new_notebook_menu_item)); newNotebookMenuItem->show (); m_menu->append (*newNotebookMenuItem); m_menu_items.push_back(newNotebookMenuItem); // Add the "(no notebook)" item at the top of the list NotebookMenuItem *noNotebookMenuItem = manage(new NotebookMenuItem (m_radio_group, get_note(), Notebook::Ptr())); noNotebookMenuItem->show_all (); m_menu->append (*noNotebookMenuItem); m_menu_items.push_back(noNotebookMenuItem); NotebookMenuItem *active_menu_item = noNotebookMenuItem; Notebook::Ptr current_notebook = NotebookManager::obj().get_notebook_from_note(get_note()); // Add in all the real notebooks std::list<NotebookMenuItem*> notebookMenuItems; get_notebook_menu_items (notebookMenuItems); if (!notebookMenuItems.empty()) { Gtk::SeparatorMenuItem *separator = manage(new Gtk::SeparatorMenuItem ()); separator->show_all (); m_menu->append (*separator); m_menu_items.push_back(separator); for(std::list<NotebookMenuItem*>::const_iterator iter = notebookMenuItems.begin(); iter != notebookMenuItems.end(); ++iter) { NotebookMenuItem* item = *iter; item->show_all (); m_menu->append (*item); m_menu_items.push_back(item); if(current_notebook == item->get_notebook()) active_menu_item = item; } } active_menu_item->set_active(true); }
void NotebookApplicationAddin::add_menu_items(Gtk::Menu * menu, std::list<Gtk::MenuItem*> & menu_items) { remove_menu_items (menu, menu_items); NotebookNewNoteMenuItem *item; Glib::RefPtr<Gtk::TreeModel> model = NotebookManager::obj().get_notebooks(); Gtk::TreeIter iter; // Add in the "New Notebook..." menu item Gtk::ImageMenuItem *newNotebookMenuItem = manage(new Gtk::ImageMenuItem (_("New Note_book..."), true)); newNotebookMenuItem->set_image(*manage(new Gtk::Image( IconManager::obj().get_icon(IconManager::NOTEBOOK_NEW, 16)))); newNotebookMenuItem->signal_activate() .connect(sigc::mem_fun(*this, &NotebookApplicationAddin::on_new_notebook_menu_item)); newNotebookMenuItem->show_all (); menu->append (*newNotebookMenuItem); menu_items.push_back(newNotebookMenuItem); if (model->children().size() > 0) { Gtk::SeparatorMenuItem *separator = manage(new Gtk::SeparatorMenuItem ()); separator->show_all (); menu->append (*separator); menu_items.push_back(separator); iter = model->children().begin(); while (iter) { Notebook::Ptr notebook; iter->get_value(0, notebook); item = manage(new NotebookNewNoteMenuItem (notebook)); item->show_all (); menu->append (*item); menu_items.push_back(item); ++iter; } } }