static void on_goto_activated (GtkWidget* widget, SearchBox* search_box) { const gchar* str_line = gtk_entry_get_text (GTK_ENTRY (search_box->priv->goto_entry)); gint line = atoi (str_line); if (line > 0) { ianjuta_editor_goto_line (search_box->priv->current_editor, line, NULL); } }
/* 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 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); }
static void language_support_add_c_callback (CppJavaPlugin* lang_plugin, IAnjutaEditor* editor, IAnjutaIterable* position, GStrv split_signal_data, CppFileType filetype) { GSignalQuery query; gchar* separator; gchar* body; gint offset; const gchar* widget = split_signal_data[0]; const gchar* signal = split_signal_data[1]; const gchar* handler = split_signal_data[2]; const gchar* user_data = split_signal_data[3]; gboolean swapped = g_str_equal (split_signal_data[4], "1"); GType type = g_type_from_name (widget); guint id = g_signal_lookup (signal, type); g_signal_query (id, &query); if (!language_support_get_callback_strings (&separator, &body, &offset, user_data, editor, filetype)) return; GString* str = language_support_generate_c_signature (separator, widget, query, swapped, handler); g_string_append (str, body); ianjuta_document_begin_undo_action (IANJUTA_DOCUMENT(editor), NULL); ianjuta_editor_insert (editor, position, str->str, -1, NULL); ianjuta_document_end_undo_action (IANJUTA_DOCUMENT(editor), NULL); /* Code was inserted, we'll now check if we should add a prototype to the header */ if (filetype == LS_FILE_C) { IAnjutaEditor* header_editor; IAnjutaIterable* mark_position; mark_position = language_support_get_header_editor_and_mark (lang_plugin, editor, "/* Callbacks */", &header_editor); if (mark_position) { /* Check if there's a the prototype to the header */ IAnjutaIterable* symbol; symbol = language_support_find_symbol (lang_plugin, header_editor, handler); if (symbol) { g_object_unref (symbol); } else { /* Add prototype to the header */ language_support_add_c_callback (lang_plugin, header_editor, mark_position, split_signal_data, LS_FILE_CHDR); g_signal_emit_by_name (G_OBJECT (header_editor), "code-changed", NULL, NULL); } g_object_unref (mark_position); } } gchar *string = g_string_free (str, FALSE); /* Emit code-added signal, so symbols will be updated */ g_signal_emit_by_name (G_OBJECT (editor), "code-changed", position, string); if (string) g_free (string); /* Body is a bit different form other strings and must be freed */ if (body) g_free (body); /* Will now set the caret position offset */ ianjuta_editor_goto_line (editor, ianjuta_editor_get_line_from_position ( editor, position, NULL) + offset, NULL); }
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; }