void anjuta_docman_add_document (AnjutaDocman *docman, IAnjutaDocument *doc, GFile* file) { AnjutaDocmanPage *page; page = anjuta_docman_page_new (); anjuta_docman_page_init (docman, doc, file, page); /* list order matches pages in book, initially at least */ docman->priv->pages = g_list_prepend (docman->priv->pages, (gpointer)page); gtk_notebook_prepend_page_menu (GTK_NOTEBOOK (docman), page->widget, page->box, page->menu_box); gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (docman), page->widget, TRUE); g_signal_connect (G_OBJECT (doc), "update-save-ui", G_CALLBACK (on_document_update_save_ui), docman); g_signal_connect (G_OBJECT (doc), "destroy", G_CALLBACK (on_document_destroy), docman); g_object_ref (doc); anjuta_docman_set_current_document (docman, doc); anjuta_shell_present_widget (docman->shell, GTK_WIDGET (docman->priv->plugin->vbox), NULL); anjuta_docman_update_documents_menu (docman); g_signal_emit_by_name (docman, "document-added", doc); }
void anjuta_docman_remove_document (AnjutaDocman *docman, IAnjutaDocument *doc) { AnjutaDocmanPage *page; if (!doc) doc = anjuta_docman_get_current_document (docman); if (!doc) return; page = anjuta_docman_get_page_for_document (docman, doc); if (page) { docman->priv->pages = g_list_remove (docman->priv->pages, (gpointer)page); if (!g_list_length (docman->priv->pages)) g_signal_emit (G_OBJECT (docman), docman_signals[DOC_CHANGED], 0, NULL); g_free (page); } gtk_widget_destroy(GTK_WIDGET(doc)); anjuta_docman_update_documents_menu(docman); }
static void anjuta_docman_order_tabs (AnjutaDocman *docman) { gint i, num_pages; GList *node; AnjutaDocmanPage *page; order_struct *tab_labels; GtkNotebook *notebook; notebook = GTK_NOTEBOOK (docman); num_pages = gtk_notebook_get_n_pages (notebook); if (num_pages < 2) return; tab_labels = g_new0 (order_struct, num_pages); node = docman->priv->pages; for (i = 0; i < num_pages; i++) { if (node != NULL && node->data != NULL) { page = node->data; tab_labels[i].m_widget = page->widget; /* CHECKME needed ? */ tab_labels[i].m_label = ianjuta_document_get_filename (page->doc, NULL); node = g_list_next (node); } } qsort (tab_labels, num_pages, sizeof(order_struct), do_ordertab1); g_signal_handlers_block_by_func (G_OBJECT (notebook), (gpointer) on_notebook_page_reordered, (gpointer) docman); for (i = 0; i < num_pages; i++) gtk_notebook_reorder_child (notebook, tab_labels[i].m_widget, i); g_signal_handlers_unblock_by_func (G_OBJECT (notebook), (gpointer) on_notebook_page_reordered, (gpointer) docman); g_free (tab_labels); anjuta_docman_update_documents_menu(docman); }
void anjuta_docman_remove_document (AnjutaDocman *docman, IAnjutaDocument *doc) { AnjutaDocmanPage *page; if (!doc) doc = anjuta_docman_get_current_document (docman); if (!doc) return; page = anjuta_docman_get_page_for_document (docman, doc); if (page) { gtk_container_remove (GTK_CONTAINER (docman), page->widget); docman->priv->pages = g_list_remove (docman->priv->pages, (gpointer)page); if (!g_list_length (docman->priv->pages)) g_signal_emit (G_OBJECT (docman), docman_signals[DOC_CHANGED], 0, NULL); g_free (page); } anjuta_docman_update_documents_menu(docman); g_object_unref (doc); }
static void on_notebook_page_reordered (GtkNotebook *notebook, GtkWidget *child, guint page_num, AnjutaDocman *docman) { anjuta_docman_update_documents_menu(docman); }