static void ide_editor_view_actions_reload_buffer_cb (GObject *object, GAsyncResult *result, gpointer user_data) { IdeBufferManager *buffer_manager = (IdeBufferManager *)object; g_autoptr(IdeEditorView) self = user_data; g_autoptr(GError) error = NULL; g_autoptr(IdeBuffer) buffer = NULL; g_assert (IDE_IS_BUFFER_MANAGER (buffer_manager)); g_assert (IDE_IS_EDITOR_VIEW (self)); gtk_revealer_set_reveal_child (self->modified_revealer, FALSE); if (!(buffer = ide_buffer_manager_load_file_finish (buffer_manager, result, &error))) { g_warning ("%s", error->message); } else { g_signal_emit_by_name (self->frame1->source_view, "movement", IDE_SOURCE_VIEW_MOVEMENT_FIRST_LINE, FALSE, TRUE, FALSE); if (self->frame2 != NULL) g_signal_emit_by_name (self->frame2->source_view, "movement", IDE_SOURCE_VIEW_MOVEMENT_FIRST_LINE, FALSE, TRUE, FALSE); } ide_widget_hide_with_fade (GTK_WIDGET (self->progress_bar)); }
static void ide_editor_perspective_focus_location_cb (GObject *object, GAsyncResult *result, gpointer user_data) { IdeBufferManager *bufmgr = (IdeBufferManager *)object; FocusLocation *state = user_data; GError *error = NULL; IDE_ENTRY; g_assert (IDE_IS_BUFFER_MANAGER (bufmgr)); g_assert (state != NULL); g_assert (IDE_IS_EDITOR_PERSPECTIVE (state->self)); g_assert (state->location != NULL); if (!ide_buffer_manager_load_file_finish (bufmgr, result, &error)) { /* TODO: display warning breifly to the user in the frame? */ g_warning ("%s", error->message); g_clear_error (&error); IDE_GOTO (cleanup); } /* try again now that we have loaded */ ide_editor_perspective_focus_location_full (state->self, state->location, FALSE); cleanup: g_clear_object (&state->self); g_clear_pointer (&state->location, ide_source_location_unref); g_slice_free (FocusLocation, state); IDE_EXIT; }
static void on_load_buffer (GbpEditorWorkspaceAddin *self, IdeBuffer *buffer, gboolean create_new_view, IdeBufferManager *buffer_manager) { g_autofree gchar *title = NULL; g_assert (GBP_IS_EDITOR_WORKSPACE_ADDIN (self)); g_assert (IDE_IS_BUFFER (buffer)); g_assert (IDE_IS_BUFFER_MANAGER (buffer_manager)); /* We only want to create a new view when the buffer is originally created, * not when it's reloaded. */ if (!create_new_view) return; /* If another workspace is active and it has an editor surface, then we * don't want to open the buffer in this window. */ if (!is_topmost_workspace_with_editor (self)) return; title = ide_buffer_dup_title (buffer); g_debug ("Loading editor page for \"%s\"", title); ide_editor_surface_focus_buffer (self->surface, buffer); }
static void ide_autotools_build_system__buffer_saved_cb (IdeAutotoolsBuildSystem *self, IdeBuffer *buffer, IdeBufferManager *buffer_manager) { g_assert (IDE_IS_AUTOTOOLS_BUILD_SYSTEM (self)); g_assert (IDE_IS_BUFFER (buffer)); g_assert (IDE_IS_BUFFER_MANAGER (buffer_manager)); if (looks_like_makefile (buffer)) egg_task_cache_evict (self->task_cache, MAKECACHE_KEY); }
static void save_all_quit_cb (GObject *object, GAsyncResult *result, gpointer user_data) { IdeBufferManager *bufmgr = (IdeBufferManager *)object; g_autoptr(IdeWorkbench) self = user_data; g_autoptr(GError) error = NULL; g_assert (IDE_IS_BUFFER_MANAGER (bufmgr)); g_assert (IDE_IS_WORKBENCH (self)); if (!ide_buffer_manager_save_all_finish (bufmgr, result, &error)) { g_warning ("%s", error->message); return; } g_application_quit (G_APPLICATION (IDE_APPLICATION_DEFAULT)); }
static void ide_editor_perspective_load_file_cb (GObject *object, GAsyncResult *result, gpointer user_data) { IdeBufferManager *bufmgr = (IdeBufferManager *)object; g_autoptr(GError) error = NULL; g_autoptr(IdeBuffer) buffer = NULL; IDE_ENTRY; g_assert (IDE_IS_BUFFER_MANAGER (bufmgr)); g_assert (G_IS_ASYNC_RESULT (result)); buffer = ide_buffer_manager_load_file_finish (bufmgr, result, &error); if (error != NULL) g_warning ("%s", error->message); /* TODO: Ensure that the view is marked as failed */ IDE_EXIT; }
static void gb_view_stack__navigate_to_load_cb (GObject *object, GAsyncResult *result, gpointer user_data) { IdeBufferManager *buffer_manager = (IdeBufferManager *)object; GbViewStack *self; g_autoptr(GTask) task = user_data; IdeSourceLocation *location; g_autoptr(IdeBuffer) buffer = NULL; g_autoptr(GError) error = NULL; GtkWidget *active_view; g_assert (IDE_IS_BUFFER_MANAGER (buffer_manager)); self = g_task_get_source_object (task); location = g_task_get_task_data (task); buffer = ide_buffer_manager_load_file_finish (buffer_manager, result, &error); if (buffer == NULL) { /* todo: message dialog? */ g_warning ("%s", error->message); return; } g_assert (GB_IS_DOCUMENT (buffer)); g_assert (location != NULL); gb_view_stack_focus_document (self, GB_DOCUMENT (buffer)); active_view = gb_view_stack_get_active_view (self); g_assert (GB_DOCUMENT (buffer) == gb_view_get_document (GB_VIEW (active_view))); gb_view_navigate_to (GB_VIEW (active_view), location); g_task_return_boolean (task, TRUE); }
static void bind_buffer_manager (GbpEditorWorkspaceAddin *self, IdeBufferManager *buffer_manager, DzlSignalGroup *signal_group) { guint n_items; g_assert (GBP_IS_EDITOR_WORKSPACE_ADDIN (self)); g_assert (IDE_IS_BUFFER_MANAGER (buffer_manager)); g_assert (DZL_IS_SIGNAL_GROUP (signal_group)); if (self->surface == NULL) return; n_items = g_list_model_get_n_items (G_LIST_MODEL (buffer_manager)); for (guint i = 0; i < n_items; i++) { g_autoptr(IdeBuffer) buffer = NULL; buffer = g_list_model_get_item (G_LIST_MODEL (buffer_manager), i); ide_editor_surface_focus_buffer (self->surface, buffer); } }