static void uninstall_support (PythonPlugin *lang_plugin) { if (!lang_plugin->support_installed) return; if (lang_plugin->current_language && (g_str_equal (lang_plugin->current_language, "Python"))) { g_signal_handlers_disconnect_by_func (lang_plugin->current_editor, G_CALLBACK (on_editor_char_inserted_python), lang_plugin); } if (lang_plugin->assist) { g_object_unref (lang_plugin->assist); lang_plugin->assist = NULL; } if (IANJUTA_IS_EDITOR_GLADE_SIGNAL (lang_plugin->current_editor)) { g_signal_handlers_disconnect_by_func (lang_plugin->current_editor, gtk_true, NULL); g_signal_handlers_disconnect_by_func (lang_plugin->current_editor, on_glade_drop, lang_plugin); } lang_plugin->support_installed = FALSE; }
/* 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 install_support (PythonPlugin *lang_plugin) { IAnjutaLanguage* lang_manager = anjuta_shell_get_interface (ANJUTA_PLUGIN (lang_plugin)->shell, IAnjutaLanguage, NULL); IAnjutaSymbolManager* sym_manager = anjuta_shell_get_interface (ANJUTA_PLUGIN (lang_plugin)->shell, IAnjutaSymbolManager, NULL); IAnjutaDocumentManager* docman = anjuta_shell_get_interface (ANJUTA_PLUGIN (lang_plugin)->shell, IAnjutaDocumentManager, NULL); if (!lang_manager || !sym_manager || !docman) 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); if (lang_plugin->current_language && (g_str_equal (lang_plugin->current_language, "Python"))) { g_signal_connect (lang_plugin->current_editor, "char-added", G_CALLBACK (on_editor_char_inserted_python), lang_plugin); } else { return; } python_indent_init (lang_plugin); /* Disable editor intern auto-indent */ ianjuta_editor_set_auto_indent (IANJUTA_EDITOR(lang_plugin->current_editor), FALSE, NULL); if (IANJUTA_IS_EDITOR_ASSIST (lang_plugin->current_editor) ) { AnjutaPlugin *plugin; AnjutaUI *ui; IAnjutaEditorAssist* iassist; const gchar *project_root; gchar *editor_filename; check_support (lang_plugin); plugin = ANJUTA_PLUGIN (lang_plugin); ui = anjuta_shell_get_ui (plugin->shell, NULL); iassist = IANJUTA_EDITOR_ASSIST (lang_plugin->current_editor); g_assert (lang_plugin->assist == NULL); project_root = ANJUTA_PLUGIN_PYTHON(plugin)->project_root_directory; editor_filename = ANJUTA_PLUGIN_PYTHON(plugin)->current_editor_filename; lang_plugin->assist = python_assist_new (iassist, sym_manager, docman, lang_plugin->settings, editor_filename, project_root); } if (IANJUTA_IS_EDITOR_GLADE_SIGNAL (lang_plugin->current_editor)) { g_signal_connect (lang_plugin->current_editor, "drop-possible", G_CALLBACK (gtk_true), NULL); g_signal_connect (lang_plugin->current_editor, "drop", G_CALLBACK (on_glade_drop), lang_plugin); } lang_plugin->support_installed = TRUE; }