static void gtk_source_file_loader_constructed (GObject *object) { GtkSourceFileLoader *loader = GTK_SOURCE_FILE_LOADER (object); if (loader->priv->file != NULL) { set_default_candidate_encodings (loader); if (loader->priv->location == NULL && loader->priv->input_stream_property == NULL) { loader->priv->location = gtk_source_file_get_location (loader->priv->file); if (loader->priv->location != NULL) { g_object_ref (loader->priv->location); } else { g_warning ("GtkSourceFileLoader: the GtkSourceFile's location is NULL. " "Call gtk_source_file_set_location() or read from a GInputStream."); } } } G_OBJECT_CLASS (gtk_source_file_loader_parent_class)->dispose (object); }
static void gtk_source_file_loader_dispose (GObject *object) { GtkSourceFileLoader *loader = GTK_SOURCE_FILE_LOADER (object); reset (loader); if (loader->priv->source_buffer != NULL) { g_object_remove_weak_pointer (G_OBJECT (loader->priv->source_buffer), (gpointer *)&loader->priv->source_buffer); loader->priv->source_buffer = NULL; } if (loader->priv->file != NULL) { g_object_remove_weak_pointer (G_OBJECT (loader->priv->file), (gpointer *)&loader->priv->file); loader->priv->file = NULL; } g_clear_object (&loader->priv->location); g_clear_object (&loader->priv->input_stream_property); g_slist_free (loader->priv->candidate_encodings); loader->priv->candidate_encodings = NULL; G_OBJECT_CLASS (gtk_source_file_loader_parent_class)->dispose (object); }
static void gtk_source_file_loader_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtkSourceFileLoader *loader = GTK_SOURCE_FILE_LOADER (object); switch (prop_id) { case PROP_BUFFER: g_value_set_object (value, loader->priv->source_buffer); break; case PROP_FILE: g_value_set_object (value, loader->priv->file); break; case PROP_LOCATION: g_value_set_object (value, loader->priv->location); break; case PROP_INPUT_STREAM: g_value_set_object (value, loader->priv->input_stream_property); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void load_ready (GObject *source_object, GAsyncResult *res, gpointer user_data) { GtkSourceFileLoader *loader = GTK_SOURCE_FILE_LOADER (source_object); EditorApplicationWindow *window = EDITOR_APPLICATION_WINDOW (user_data); GtkTextIter iter; GFile *location; GtkSourceLanguageManager *manager; GtkSourceLanguage *language; gchar *filename; GError *error = NULL; if (!gtk_source_file_loader_load_finish (loader, res, &error)) { g_warning ("Error while loading the file: %s", error->message); g_error_free (error); g_clear_object (&window->file); goto out; } gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (window->buffer), &iter); gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (window->buffer), &iter); location = gtk_source_file_loader_get_location (loader); filename = g_file_get_path (location); manager = gtk_source_language_manager_get_default (); language = gtk_source_language_manager_guess_language (manager, filename, NULL); g_free (filename); if (language) gtk_source_buffer_set_language (window->buffer, language); if (grammar_filename) set_indenter (window, grammar_filename); out: g_object_unref (loader); gtk_window_present (GTK_WINDOW (window)); }
static void gtk_source_file_loader_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtkSourceFileLoader *loader = GTK_SOURCE_FILE_LOADER (object); switch (prop_id) { case PROP_BUFFER: g_assert (loader->priv->source_buffer == NULL); loader->priv->source_buffer = g_value_get_object (value); g_object_add_weak_pointer (G_OBJECT (loader->priv->source_buffer), (gpointer *)&loader->priv->source_buffer); break; case PROP_FILE: g_assert (loader->priv->file == NULL); loader->priv->file = g_value_get_object (value); g_object_add_weak_pointer (G_OBJECT (loader->priv->file), (gpointer *)&loader->priv->file); break; case PROP_LOCATION: g_assert (loader->priv->location == NULL); loader->priv->location = g_value_dup_object (value); break; case PROP_INPUT_STREAM: g_assert (loader->priv->input_stream_property == NULL); loader->priv->input_stream_property = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }