static void anjuta_test_shell_instance_init (AnjutaTestShell *shell) { GtkWidget *plugins; GList *plugins_dirs = NULL; shell->values = g_hash_table_new (g_str_hash, g_str_equal); shell->widgets = g_hash_table_new (g_str_hash, g_str_equal); shell->box = gtk_vbox_new (FALSE, 0); gtk_widget_show (shell->box); gtk_container_add (GTK_CONTAINER (shell), shell->box); /* Status bar */ shell->status = ANJUTA_STATUS (anjuta_status_new ()); gtk_widget_show (GTK_WIDGET (shell->status)); gtk_box_pack_end (GTK_BOX (shell->box), GTK_WIDGET (shell->status), FALSE, FALSE, 0); /* Initialize plugins */ plugins_dirs = g_list_prepend (plugins_dirs, PACKAGE_PLUGIN_DIR); shell->plugin_manager = anjuta_plugin_manager_new (G_OBJECT (shell), shell->status, plugins_dirs); g_list_free (plugins_dirs); plugins = anjuta_plugin_manager_get_plugins_page (shell->plugin_manager); gtk_box_pack_end (GTK_BOX (shell->box), plugins, TRUE, TRUE, 0); /* Preferencesnces */ shell->preferences = ANJUTA_PREFERENCES (anjuta_preferences_new (shell->plugin_manager)); /* UI engine */ shell->ui = anjuta_ui_new (); gtk_window_add_accel_group (GTK_WINDOW (shell), anjuta_ui_get_accel_group (shell->ui)); g_signal_connect (G_OBJECT (shell->ui), "add_widget", G_CALLBACK (on_add_merge_widget), shell); /*gtk_window_add_accel_group (GTK_WINDOW (shell), anjuta_ui_get_accel_group (shell->ui));*/ /* Register actions */ anjuta_ui_add_action_group_entries (shell->ui, "ActionGroupTestShell", _("Test shell action group"), action_entries, G_N_ELEMENTS (action_entries), GETTEXT_PACKAGE, TRUE, shell); /* Merge UI */ shell->merge_id = anjuta_ui_merge (shell->ui, UI_FILE); gtk_window_set_default_size (GTK_WINDOW (shell), 300, 400); }
gboolean anjuta_docman_save_document_as (AnjutaDocman *docman, IAnjutaDocument *doc, GtkWidget *parent_window) { gchar* uri; GFile* file; const gchar* filename; GtkWidget *parent; GtkWidget *dialog; gint response; gboolean file_saved = TRUE; g_return_val_if_fail (ANJUTA_IS_DOCMAN (docman), FALSE); g_return_val_if_fail (IANJUTA_IS_DOCUMENT (doc), FALSE); if (parent_window) { parent = parent_window; } else { parent = gtk_widget_get_toplevel (GTK_WIDGET (docman)); } dialog = create_file_save_dialog_gui (GTK_WINDOW (parent), docman); if ((file = ianjuta_file_get_file (IANJUTA_FILE (doc), NULL)) != NULL) { gchar* file_uri = g_file_get_uri (file); gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (dialog), file_uri); g_free (file_uri); g_object_unref (file); } else if ((filename = ianjuta_document_get_filename (doc, NULL)) != NULL) gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), filename); else gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), ""); response = gtk_dialog_run (GTK_DIALOG (dialog)); if (response != GTK_RESPONSE_ACCEPT) { gtk_widget_destroy (dialog); return FALSE; } uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); file = g_file_new_for_uri (uri); if (g_file_query_exists (file, NULL)) { GtkWidget *msg_dialog; gchar* parse_uri = g_file_get_parse_name (file); msg_dialog = gtk_message_dialog_new (GTK_WINDOW (dialog), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, _("The file '%s' already exists.\n" "Do you want to replace it with the" " one you are saving?"), parse_uri); g_free (parse_uri); gtk_dialog_add_button (GTK_DIALOG (msg_dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); anjuta_util_dialog_add_button (GTK_DIALOG (msg_dialog), _("_Replace"), GTK_STOCK_REFRESH, GTK_RESPONSE_YES); if (gtk_dialog_run (GTK_DIALOG (msg_dialog)) == GTK_RESPONSE_YES) ianjuta_file_savable_save_as (IANJUTA_FILE_SAVABLE (doc), file, NULL); else file_saved = FALSE; gtk_widget_destroy (msg_dialog); } else { ianjuta_file_savable_save_as (IANJUTA_FILE_SAVABLE (doc), file, NULL); } if (anjuta_preferences_get_bool (ANJUTA_PREFERENCES (docman->priv->preferences), EDITOR_TABS_ORDERING)) anjuta_docman_order_tabs (docman); gtk_widget_destroy (dialog); g_free (uri); if (file_saved) { /* Update mime icons */ AnjutaDocmanPage* page = anjuta_docman_get_page_for_document (docman, doc); GdkPixbuf* pixbuf = anjuta_docman_get_pixbuf_for_file (file); if (pixbuf) { gtk_image_set_from_pixbuf (GTK_IMAGE(page->menu_icon), pixbuf); gtk_image_set_from_pixbuf (GTK_IMAGE(page->mime_icon), pixbuf); g_object_unref (pixbuf); } } g_object_unref (file); return file_saved; }
void anjuta_docman_set_current_document (AnjutaDocman *docman, IAnjutaDocument *doc) { AnjutaDocmanPage *page; IAnjutaDocument *defdoc; defdoc = anjuta_docman_get_current_document(docman); if (doc != NULL) { page = anjuta_docman_get_page_for_document (docman, doc); /* proceed only if page data has been added before */ if (page) { gint page_num; if (defdoc != NULL) { AnjutaDocmanPage *oldpage; oldpage = anjuta_docman_get_page_for_document (docman, defdoc); if (oldpage) { oldpage->is_current = FALSE; if (oldpage->close_button != NULL) { gtk_widget_set_sensitive (oldpage->close_image, FALSE); if (oldpage->mime_icon) gtk_widget_set_sensitive (oldpage->mime_icon, FALSE); } } } page->is_current = TRUE; if (page->close_button != NULL) { gtk_widget_set_sensitive (page->close_image, TRUE); if (page->mime_icon) gtk_widget_set_sensitive (page->mime_icon, TRUE); } page_num = gtk_notebook_page_num (GTK_NOTEBOOK (docman), page->widget); gtk_notebook_set_current_page (GTK_NOTEBOOK (docman), page_num); if (anjuta_preferences_get_bool (ANJUTA_PREFERENCES (docman->priv->preferences), EDITOR_TABS_ORDERING)) anjuta_docman_order_tabs (docman); gtk_widget_grab_focus (GTK_WIDGET (doc)); anjuta_docman_grab_text_focus (docman); ianjuta_document_grab_focus (IANJUTA_DOCUMENT (doc), NULL); } } else /* doc == NULL */ { if (defdoc != NULL) { page = anjuta_docman_get_current_page (docman); if (page) { page->is_current = FALSE; if (page->close_button != NULL) { gtk_widget_set_sensitive (page->close_image, FALSE); if (page->mime_icon) gtk_widget_set_sensitive (page->mime_icon, FALSE); } } } } }