gtk-demo: Load sources from resources
This commit is contained in:
@ -501,12 +501,12 @@ void
|
|||||||
load_file (const gchar *filename)
|
load_file (const gchar *filename)
|
||||||
{
|
{
|
||||||
GtkTextIter start, end;
|
GtkTextIter start, end;
|
||||||
char *full_filename;
|
char *resource_filename;
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
int state = 0;
|
int state = 0;
|
||||||
gboolean in_para = 0;
|
gboolean in_para = 0;
|
||||||
gchar **names, **lines;
|
gchar **names, **lines;
|
||||||
gchar *contents;
|
GBytes *bytes;
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
remove_data_tabs ();
|
remove_data_tabs ();
|
||||||
@ -530,26 +530,19 @@ load_file (const gchar *filename)
|
|||||||
gtk_text_buffer_get_bounds (source_buffer, &start, &end);
|
gtk_text_buffer_get_bounds (source_buffer, &start, &end);
|
||||||
gtk_text_buffer_delete (source_buffer, &start, &end);
|
gtk_text_buffer_delete (source_buffer, &start, &end);
|
||||||
|
|
||||||
full_filename = demo_find_file (names[0], &err);
|
resource_filename = g_strconcat ("/sources/", names[0], NULL);
|
||||||
if (!full_filename)
|
bytes = g_resources_lookup_data (resource_filename, 0, &err);
|
||||||
|
g_free (resource_filename);
|
||||||
|
|
||||||
|
if (bytes == NULL)
|
||||||
{
|
{
|
||||||
g_warning ("%s", err->message);
|
g_warning ("Cannot open source for %s: %s\n", names[0], err->message);
|
||||||
g_error_free (err);
|
g_error_free (err);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!g_file_get_contents (full_filename, &contents, NULL, &err))
|
lines = g_strsplit (g_bytes_get_data (bytes, NULL), "\n", -1);
|
||||||
{
|
g_bytes_unref (bytes);
|
||||||
g_warning ("Cannot open %s: %s\n", full_filename, err->message);
|
|
||||||
g_error_free (err);
|
|
||||||
g_free (full_filename);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_free (full_filename);
|
|
||||||
|
|
||||||
lines = g_strsplit (contents, "\n", -1);
|
|
||||||
g_free (contents);
|
|
||||||
|
|
||||||
gtk_text_buffer_get_iter_at_offset (info_buffer, &start, 0);
|
gtk_text_buffer_get_iter_at_offset (info_buffer, &start, 0);
|
||||||
for (i = 0; lines[i] != NULL; i++)
|
for (i = 0; lines[i] != NULL; i++)
|
||||||
|
|||||||
Reference in New Issue
Block a user