GFile* anjuta_docman_get_file (AnjutaDocman *docman, const gchar *fn) { IAnjutaDocument *doc; GList *node; gchar *real_path; gchar *fname; g_return_val_if_fail (fn, NULL); /* If it is full and absolute path, there is no need to go further, even if the file is not found*/ if (g_path_is_absolute(fn)) { return g_file_new_for_path (fn); } /* First, check if we can get the file straightaway */ real_path = anjuta_util_get_real_path (fn); if (g_file_test (real_path, G_FILE_TEST_IS_REGULAR)) { return g_file_new_for_path (real_path); } g_free(real_path); /* Get the name part of the file */ fname = g_path_get_basename (fn); /* Next, check if the current text editor buffer matches this name */ if (NULL != (doc = anjuta_docman_get_current_document (docman))) { if (strcmp(ianjuta_document_get_filename(doc, NULL), fname) == 0) { g_free (fname); return ianjuta_file_get_file (IANJUTA_FILE (doc), NULL); } } /* Next, see if the name matches any of the opened files */ for (node = docman->priv->pages; node != NULL; node = g_list_next (node)) { AnjutaDocmanPage *page; page = (AnjutaDocmanPage *) node->data; if (strcmp (fname, ianjuta_document_get_filename (page->doc, NULL)) == 0) { g_free (fname); return ianjuta_file_get_file (IANJUTA_FILE (page->doc), NULL); } } g_free (fname); return NULL; }
static IAnjutaIterable* language_support_find_symbol (CppJavaPlugin* lang_plugin, IAnjutaEditor* editor, const gchar* handler) { IAnjutaSymbolManager *isymbol_manager = anjuta_shell_get_interface ( ANJUTA_PLUGIN (lang_plugin)->shell, IAnjutaSymbolManager, NULL); IAnjutaSymbolQuery *symbol_query = ianjuta_symbol_manager_create_query ( isymbol_manager, IANJUTA_SYMBOL_QUERY_SEARCH_FILE, IANJUTA_SYMBOL_QUERY_DB_PROJECT, NULL); IAnjutaSymbolField field = IANJUTA_SYMBOL_FIELD_FILE_POS; ianjuta_symbol_query_set_fields (symbol_query, 1, &field, NULL); GFile* file = ianjuta_file_get_file (IANJUTA_FILE (editor), NULL); IAnjutaIterable *iter = ianjuta_symbol_query_search_file (symbol_query, handler, file, NULL); g_object_unref (file); g_object_unref (symbol_query); return iter; }
/** * parser_cxx_assist_query_calltip: * @self: Self * @call_context: name of method/function * e: Error propagation * * Starts an async query for the calltip */ static void parser_cxx_assist_query_calltip (ParserCxxAssist* assist, const gchar *call_context, IAnjutaIterable* calltip_iter) { /* Search file */ if (IANJUTA_IS_FILE (assist->priv->itip)) { GFile *file = ianjuta_file_get_file (IANJUTA_FILE (assist->priv->itip), NULL); if (file != NULL) { assist->priv->async_calltip_file = 1; ianjuta_symbol_query_search_file (assist->priv->calltip_query_file, call_context, file, NULL); g_object_unref (file); } } /* Search Project */ assist->priv->async_calltip_project = 1; ianjuta_symbol_query_search (assist->priv->calltip_query_project, call_context, NULL); /* Search system */ assist->priv->async_calltip_system = 1; ianjuta_symbol_query_search (assist->priv->calltip_query_system, call_context, NULL); }
static void on_show_in_file_manager (GtkAction* action, AnjutaFileManager* file_manager) { IAnjutaDocumentManager* docman; IAnjutaDocument* document; GFile* file; docman = anjuta_shell_get_interface (ANJUTA_PLUGIN (file_manager)->shell, IAnjutaDocumentManager, NULL); g_return_if_fail (docman); document = ianjuta_document_manager_get_current_document (docman, NULL); if (!IANJUTA_IS_FILE (document)) return; file = ianjuta_file_get_file (IANJUTA_FILE (document), NULL); if (!file) return; file_view_set_selected (file_manager->fv, file); g_object_unref (file); anjuta_shell_present_widget (ANJUTA_PLUGIN (file_manager)->shell, file_manager->sw, NULL); }
/** * parser_cxx_assist_install: * @assist: ParserCxxAssist object * @ieditor: Editor to install support for * @iparser: Parser to install support for * * Returns: Registers provider for editor */ static void parser_cxx_assist_install (ParserCxxAssist *assist, IAnjutaEditor *ieditor) { g_return_if_fail (assist->priv->iassist == NULL); if (IANJUTA_IS_EDITOR_ASSIST (ieditor)) { assist->priv->iassist = IANJUTA_EDITOR_ASSIST (ieditor); ianjuta_editor_assist_add (IANJUTA_EDITOR_ASSIST (ieditor), IANJUTA_PROVIDER(assist), NULL); g_signal_connect (ieditor, "cancelled", G_CALLBACK (parser_cxx_assist_cancelled), assist); } else assist->priv->iassist = NULL; if (IANJUTA_IS_EDITOR_TIP (ieditor)) assist->priv->itip = IANJUTA_EDITOR_TIP (ieditor); else assist->priv->itip = NULL; if (IANJUTA_IS_FILE (assist->priv->iassist)) { GFile *file = ianjuta_file_get_file ( IANJUTA_FILE (assist->priv->iassist), NULL); if (file != NULL) { assist->priv->editor_filename = g_file_get_path (file); g_object_unref (file); } } }
static gboolean glade_widget_already_in_scope (IAnjutaEditor* editor, gchar* widget_name, gchar* mark, CppJavaPlugin* lang_plugin) { gboolean ret = FALSE; IAnjutaIterable *mark_position; IAnjutaSymbolQuery *query_scope; IAnjutaIterable *scope; IAnjutaSymbolQuery *query_members; mark_position = language_support_get_mark_position (editor, mark); if (!mark_position) return FALSE; int line = ianjuta_editor_get_line_from_position (editor, mark_position, NULL); g_object_unref(mark_position); IAnjutaSymbolManager *symbol_manager = anjuta_shell_get_interface (ANJUTA_PLUGIN (lang_plugin)->shell, IAnjutaSymbolManager, NULL); query_scope = ianjuta_symbol_manager_create_query (symbol_manager, IANJUTA_SYMBOL_QUERY_SEARCH_SCOPE, IANJUTA_SYMBOL_QUERY_DB_PROJECT, NULL); if (!query_scope) return FALSE; GFile *file = ianjuta_file_get_file (IANJUTA_FILE(editor), NULL); gchar* path = g_file_get_path (file); scope = ianjuta_symbol_query_search_scope (query_scope, path, line, NULL); g_object_unref(query_scope); if (!scope) return FALSE; query_members = ianjuta_symbol_manager_create_query (symbol_manager, IANJUTA_SYMBOL_QUERY_SEARCH_MEMBERS, IANJUTA_SYMBOL_QUERY_DB_PROJECT, NULL); if (query_members) { IAnjutaIterable *members = ianjuta_symbol_query_search_members ( query_members, IANJUTA_SYMBOL(scope), NULL); g_object_unref(query_members); if (members) { ret = glade_widget_member_of_scope (widget_name, members); g_object_unref(members); } } g_object_unref(scope); return ret; }
static void init_file_type (CppJavaPlugin* lang_plugin) { GFile* file = ianjuta_file_get_file (IANJUTA_FILE (lang_plugin->current_editor), NULL); lang_plugin->filetype = get_filetype (file); }
void vim_widget_add_document (VimWidget *widget, VimEditor *editor, GError **err) { g_assert (editor != NULL); if (!vim_widget_has_editor (widget, editor)) { if (g_ptr_array_find (widget->priv->unloaded, editor) == -1) g_ptr_array_add (widget->priv->unloaded, editor); ianjuta_file_open (IANJUTA_FILE (editor), editor->priv->file, NULL); } }
/** * parser_cxx_assist_create_autocompletion_cache: * @assist: self * @cursor: Current cursor position * * Create completion cache for autocompletion. This is done async. * * Returns: the iter where a preword was detected, NULL otherwise */ static IAnjutaIterable* parser_cxx_assist_create_autocompletion_cache (ParserCxxAssist* assist, IAnjutaIterable* cursor) { IAnjutaIterable* start_iter; gchar* pre_word = anjuta_language_provider_get_pre_word ( assist->priv->lang_prov, IANJUTA_EDITOR (assist->priv->iassist), cursor, &start_iter, WORD_CHARACTER); if (!pre_word || strlen (pre_word) <= 3) { if (start_iter) g_object_unref (start_iter); return NULL; } else { gchar *pattern = g_strconcat (pre_word, "%", NULL); parser_cxx_assist_update_pre_word (assist, pre_word); if (IANJUTA_IS_FILE (assist->priv->iassist)) { GFile *file = ianjuta_file_get_file ( IANJUTA_FILE (assist->priv->iassist), NULL); if (file != NULL) { assist->priv->async_file_id = 1; ianjuta_symbol_query_search_file (assist->priv->ac_query_file, pattern, file, NULL); g_object_unref (file); } } /* This will avoid duplicates of FUNCTION and PROTOTYPE */ assist->priv->async_project_id = 1; ianjuta_symbol_query_search (assist->priv->ac_query_project, pattern, NULL); assist->priv->async_system_id = 1; ianjuta_symbol_query_search (assist->priv->ac_query_system, pattern, NULL); g_free (pre_word); g_free (pattern); return start_iter; } }
/* CHECKME unused */ void anjuta_docman_reload_file (AnjutaDocman *docman, GFile* file) { IAnjutaDocument *doc; g_return_if_fail (file != NULL); doc = anjuta_docman_get_document_for_file (docman, file); if (doc && IANJUTA_IS_EDITOR (doc)) { IAnjutaEditor *te; te = IANJUTA_EDITOR (doc); glong nNowPos = ianjuta_editor_get_lineno (te, NULL); ianjuta_file_open (IANJUTA_FILE (doc), file, NULL); ianjuta_editor_goto_line (te, nNowPos, NULL); } }
static void current_document_added (AnjutaPlugin *plugin, const gchar *name, const GValue *value, gpointer user_data) { AnjutaFileManager* file_manager = (AnjutaFileManager*) plugin; IAnjutaDocument *current_document; GFile *file; if (!g_settings_get_boolean (file_manager->settings, PREF_SELECT_CURRENT_DOCUMENT)) return; current_document = g_value_get_object (value); if (!IANJUTA_IS_FILE (current_document)) return; file = ianjuta_file_get_file (IANJUTA_FILE (current_document), NULL); if (!file) return; ianjuta_file_manager_set_selected (IANJUTA_FILE_MANAGER (plugin), file, NULL); g_object_unref (file); }
gboolean anjuta_docman_save_document (AnjutaDocman *docman, IAnjutaDocument *doc, GtkWidget *parent_window) { GFile* file; gboolean ret; file = ianjuta_file_get_file (IANJUTA_FILE (doc), NULL); if (file == NULL) { anjuta_docman_set_current_document (docman, doc); ret = anjuta_docman_save_document_as (docman, doc, parent_window); } else { /* Error checking must be done by the IAnjutaFile */ ianjuta_file_savable_save (IANJUTA_FILE_SAVABLE (doc), NULL); g_object_unref (file); ret = TRUE; } return ret; }
static void on_editor_added (AnjutaPlugin *plugin, const gchar *name, const GValue *value, gpointer data) { PythonPlugin *lang_plugin; IAnjutaDocument* doc = IANJUTA_DOCUMENT(g_value_get_object (value)); lang_plugin = ANJUTA_PLUGIN_PYTHON(plugin); if (IANJUTA_IS_EDITOR(doc)) { lang_plugin->current_editor = G_OBJECT(doc); } else { lang_plugin->current_editor = NULL; return; } if (lang_plugin->current_editor) { IAnjutaEditor* editor = IANJUTA_EDITOR (lang_plugin->current_editor); GFile* current_editor_file = ianjuta_file_get_file (IANJUTA_FILE (editor), NULL); if (current_editor_file) { lang_plugin->current_editor_filename = g_file_get_path (current_editor_file); g_object_unref (current_editor_file); } install_support (lang_plugin); g_signal_connect (lang_plugin->current_editor, "language-changed", G_CALLBACK (on_editor_language_changed), plugin); } }
static void on_glade_drop (IAnjutaEditor* editor, IAnjutaIterable* iterator, const gchar* signal_data, CppJavaPlugin* lang_plugin) { GStrv split_signal_data = g_strsplit(signal_data, ":", 5); char *handler = split_signal_data[2]; /** * Split signal data format: * widget = split_signaldata[0]; * signal = split_signaldata[1]; * handler = split_signaldata[2]; * user_data = split_signaldata[3]; * swapped = g_str_equal (split_signaldata[4], "1"); */ IAnjutaIterable *iter; iter = language_support_find_symbol (lang_plugin, IANJUTA_EDITOR (editor), handler); if (iter == NULL) { GFile *file = ianjuta_file_get_file (IANJUTA_FILE (editor), NULL); CppFileType filetype = get_filetype (file); language_support_add_c_callback (lang_plugin, editor, iterator, split_signal_data, filetype); } else { /* Symbol found, going there */ ianjuta_editor_goto_line (editor, ianjuta_symbol_get_int ( IANJUTA_SYMBOL (iter), IANJUTA_SYMBOL_FIELD_FILE_POS, NULL), NULL); g_object_unref (iter); } g_strfreev (split_signal_data); }
IAnjutaEditor * anjuta_docman_goto_file_line_mark (AnjutaDocman *docman, GFile* file, gint line, gboolean mark) { IAnjutaDocument *doc; IAnjutaEditor *te; AnjutaDocmanPage *page; g_return_val_if_fail (file != NULL, NULL); if (!g_file_query_exists (file, NULL)) { return NULL; } /* Save current uri and line in document history list */ page = anjuta_docman_get_current_page (docman); if (page && page->doc && IANJUTA_IS_FILE (page->doc)) { GFile* file = ianjuta_file_get_file (IANJUTA_FILE (page->doc), NULL); if (file) { gint line = 0; if (IANJUTA_IS_EDITOR (page->doc)) { line = ianjuta_editor_get_lineno (IANJUTA_EDITOR (page->doc), NULL); } an_file_history_push (file, line); } } /* if possible, use a document that's already open */ doc = anjuta_docman_get_document_for_file (docman, file); if (doc == NULL) { te = anjuta_docman_add_editor (docman, file, NULL); doc = IANJUTA_DOCUMENT (te); } else if (IANJUTA_IS_EDITOR (doc)) { te = IANJUTA_EDITOR (doc); } else { doc = NULL; te = NULL; } if (te != NULL) { if (line >= 0) { ianjuta_editor_goto_line (te, line, NULL); if (mark && IANJUTA_IS_MARKABLE (doc)) { ianjuta_markable_delete_all_markers (IANJUTA_MARKABLE (doc), IANJUTA_MARKABLE_LINEMARKER, NULL); ianjuta_markable_mark (IANJUTA_MARKABLE (doc), line, IANJUTA_MARKABLE_LINEMARKER, NULL, NULL); } } } if (doc != NULL) { anjuta_docman_present_notebook_page (docman, doc); ianjuta_document_grab_focus (IANJUTA_DOCUMENT (doc), NULL); } return te; }
/* Enable/Disable language-support */ static void install_support (CppJavaPlugin *lang_plugin) { /* Searching for association */ gchar *ui_filename = get_text_between (lang_plugin->current_editor, WIDGETS_DECLARATION_MARKER_PREFIX, WIDGETS_DECLARATION_MARKER_SUFFIX); if (ui_filename) { GFile *file = ianjuta_file_get_file (IANJUTA_FILE (lang_plugin->current_editor), NULL); gchar *filename = g_file_get_basename (file); IAnjutaGlade *glade = anjuta_shell_get_interface ( ANJUTA_PLUGIN (lang_plugin)->shell, IAnjutaGlade, NULL); ianjuta_glade_add_association (glade, ui_filename, filename, NULL); } IAnjutaLanguage* lang_manager = anjuta_shell_get_interface (ANJUTA_PLUGIN (lang_plugin)->shell, IAnjutaLanguage, NULL); if (!lang_manager) return; if (lang_plugin->support_installed) return; lang_plugin->current_language = ianjuta_language_get_name_from_editor (lang_manager, IANJUTA_EDITOR_LANGUAGE (lang_plugin->current_editor), NULL); DEBUG_PRINT("Language support installed for: %s", lang_plugin->current_language); if (!(lang_plugin->current_language && (g_str_equal (lang_plugin->current_language, "C") || g_str_equal (lang_plugin->current_language, "C++") || g_str_equal (lang_plugin->current_language, "Vala") || g_str_equal (lang_plugin->current_language, "Java")))) { return; } init_file_type (lang_plugin); if (g_str_equal (lang_plugin->current_language, "C" ) || g_str_equal (lang_plugin->current_language, "C++")) { if (IANJUTA_IS_EDITOR_GLADE_SIGNAL (lang_plugin->current_editor)) { g_signal_connect (lang_plugin->current_editor, "drop-possible", G_CALLBACK (on_glade_drop_possible), lang_plugin); g_signal_connect (lang_plugin->current_editor, "drop", G_CALLBACK (on_glade_drop), lang_plugin); } g_signal_connect (lang_plugin->current_editor, "glade-callback-add", G_CALLBACK (on_glade_callback_add), lang_plugin); g_signal_connect (lang_plugin->current_editor, "glade-member-add", G_CALLBACK (on_glade_member_add), lang_plugin); lang_plugin->packages = cpp_packages_new (ANJUTA_PLUGIN (lang_plugin)); cpp_packages_load(lang_plugin->packages, FALSE); } lang_plugin->support_installed = TRUE; }
static void anjuta_docman_update_page_label (AnjutaDocman *docman, IAnjutaDocument *doc) { AnjutaDocmanPage *page; gchar *basename; GFile* file; const gchar* doc_filename; gchar* dirty_char; gchar* read_only; gchar* label; if (doc == NULL) return; page = anjuta_docman_get_page_for_document (docman, doc); if (!page || page->label == NULL || page->menu_label == NULL) return; if (!ianjuta_file_savable_is_dirty(IANJUTA_FILE_SAVABLE (doc), NULL)) { dirty_char = ""; } else { dirty_char = "*"; } if (ianjuta_file_savable_is_read_only (IANJUTA_FILE_SAVABLE (doc), NULL)) { read_only = _("[read-only]"); } else { read_only = ""; } file = ianjuta_file_get_file (IANJUTA_FILE (doc), NULL); if (file) { basename = g_file_get_basename (file); label = g_strconcat(dirty_char, basename, read_only, NULL); gtk_label_set_text (GTK_LABEL (page->label), label); gtk_label_set_text (GTK_LABEL (page->menu_label), label); g_free (label); g_free (basename); if (ianjuta_file_savable_is_conflict (IANJUTA_FILE_SAVABLE (doc), NULL)) { gtk_image_set_from_stock (GTK_IMAGE (page->menu_icon), GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_MENU); gtk_image_set_from_stock (GTK_IMAGE (page->mime_icon), GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_MENU); } else { 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); } else if ((doc_filename = ianjuta_document_get_filename (doc, NULL)) != NULL) { label = g_strconcat (dirty_char, doc_filename, read_only, NULL); gtk_label_set_text (GTK_LABEL (page->label), label); gtk_label_set_text (GTK_LABEL (page->menu_label), label); g_free (label); } }
static GFile* language_support_get_header_file (IAnjutaEditor* editor) { GFile *file, *parent; gchar *parent_uri, *basename, *ext; GFile *ret = NULL; file = ianjuta_file_get_file (IANJUTA_FILE (editor), NULL); if (!file) return NULL; parent = g_file_get_parent (file); parent_uri = g_file_get_uri (parent); basename = g_file_get_basename (file); g_object_unref (file); g_object_unref (parent); ext = strstr (basename, "."); if (ext) { int i; for (i = 0; SOURCE_EXT[i] != NULL; i++) { if (g_str_equal (ext, SOURCE_EXT[i])) { int j; for (j = 0; HEADER_EXT[j] != NULL; j++) { gchar* filename; gchar* uri; GFile* new_file; *ext = '\0'; filename = g_strdup_printf ("%s%s", basename, HEADER_EXT[j]); uri = g_build_filename (parent_uri, filename, NULL); new_file = g_file_new_for_uri (uri); g_free (uri); g_free(filename); if (g_file_query_exists (new_file, NULL)) { ret = new_file; goto end; } g_object_unref (new_file); } break; } if (g_str_equal (ext, HEADER_EXT[i])) { int j; for (j = 0; SOURCE_EXT[j] != NULL; j++) { gchar* filename; gchar* uri; GFile* new_file; *ext = '\0'; filename = g_strdup_printf ("%s%s", basename, SOURCE_EXT[j]); uri = g_build_filename (parent_uri, filename, NULL); new_file = g_file_new_for_uri (uri); g_free (uri); g_free(filename); if (g_file_query_exists (new_file, NULL)) { ret = new_file; goto end; } g_object_unref (new_file); } break; } } } end: g_free(basename); g_free (parent_uri); return ret; }
IAnjutaDocument * anjuta_docman_get_document_for_file (AnjutaDocman *docman, GFile* file) { IAnjutaDocument *file_doc = NULL; GList *node; g_return_val_if_fail (file != NULL, NULL); for (node = docman->priv->pages; node != NULL; node = g_list_next (node)) { AnjutaDocmanPage *page; GFile* doc_file; page = (AnjutaDocmanPage *) node->data; if (page && page->widget && IANJUTA_IS_DOCUMENT (page->doc)) { IAnjutaDocument *doc; doc = page->doc; doc_file = ianjuta_file_get_file (IANJUTA_FILE (doc), NULL); if (doc_file) { gchar *path; gchar *local_real_path = NULL; /* Try exact match first */ if (g_file_equal (file, doc_file)) { g_object_unref (doc_file); file_doc = doc; break; } /* Try a local file alias */ path = g_file_get_path (file); if (path) { local_real_path = anjuta_util_get_real_path (path); if (local_real_path) { g_free (path); } else { local_real_path = path; } } else { continue; } if ((file_doc == NULL) && (local_real_path)) { gchar *doc_path = g_file_get_path (doc_file); if (doc_path) { gchar *doc_real_path = anjuta_util_get_real_path (doc_path); if (doc_real_path) { g_free (doc_path); } else { doc_real_path = doc_path; } if ((strcmp (doc_real_path, local_real_path) == 0)) { file_doc = doc; } g_free (doc_real_path); } } g_free (local_real_path); g_object_unref (doc_file); } } } return file_doc; }
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 (g_settings_get_boolean (docman->priv->settings, 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; }