[gnac/devel] Code cleanup
- From: BenoÃt Dupasquier <bdupasqu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnac/devel] Code cleanup
- Date: Thu, 3 Nov 2011 15:08:16 +0000 (UTC)
commit ca411bf58a7069bd198f46702d7485e439dbf425
Author: BenoÃt Dupasquier <bdupasqu src gnome org>
Date: Thu Nov 3 15:07:35 2011 +0000
Code cleanup
src/gnac-utils.c | 13 +-
src/profiles/gnac-profiles-default.c | 78 +++---
src/profiles/gnac-profiles-manager.c | 413 ++++++++++++++++-------------
src/profiles/gnac-profiles-properties.c | 220 +++++++++-------
src/profiles/gnac-profiles-utils.c | 308 ++++++++++++----------
src/profiles/gnac-profiles-xml-engine.c | 435 ++++++++++++++++---------------
src/profiles/gnac-profiles.c | 21 +-
7 files changed, 797 insertions(+), 691 deletions(-)
---
diff --git a/src/gnac-utils.c b/src/gnac-utils.c
index 3116137..b5a41eb 100644
--- a/src/gnac-utils.c
+++ b/src/gnac-utils.c
@@ -122,18 +122,17 @@ gnac_utils_moving_avg_reset(void)
gint
gnac_utils_get_combo_size(GtkComboBox *combo)
{
- gboolean valid;
+ gboolean has_next;
guint count = 0;
GtkTreeIter iter;
GtkTreeModel *model;
model = gtk_combo_box_get_model(combo);
- valid = gtk_tree_model_get_iter_first(model, &iter);
+ has_next = gtk_tree_model_get_iter_first(model, &iter);
- while (valid)
- {
+ while (has_next) {
count++;
- valid = gtk_tree_model_iter_next(model, &iter);
+ has_next = gtk_tree_model_iter_next(model, &iter);
}
return count;
@@ -187,6 +186,7 @@ gnac_utils_add_border_to_pixbuf(GdkPixbuf *pixbuf)
gdk_pixbuf_fill(bordered, 0xff);
gdk_pixbuf_copy_area(pixbuf, 0, 0, width, height, bordered,
GNAC_UTILS_ICON_BORDER_WIDTH, GNAC_UTILS_ICON_BORDER_WIDTH);
+
return bordered;
}
@@ -304,6 +304,7 @@ gnac_utils_create_gtk_builder(const gchar *filename)
{
GError *error = NULL;
GtkBuilder *builder;
+
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, filename, &error);
if (error) {
@@ -311,7 +312,7 @@ gnac_utils_create_gtk_builder(const gchar *filename)
g_error_free(error);
}
- g_assert(error == NULL && builder);
+ g_assert(!error && builder);
gtk_builder_connect_signals(builder, NULL);
diff --git a/src/profiles/gnac-profiles-default.c b/src/profiles/gnac-profiles-default.c
index 4d2c073..48b191f 100755
--- a/src/profiles/gnac-profiles-default.c
+++ b/src/profiles/gnac-profiles-default.c
@@ -27,6 +27,7 @@
#include "gnac-main.h"
#include "gnac-profiles-default.h"
+#include "gnac-utils.h"
#include "libgnac-debug.h"
@@ -39,15 +40,7 @@ gnac_profiles_default_init(BasicFormatInfo *bfi,
GtkWidget *profile_advanced_base_widget;
GError *error = NULL;
- bfi->builder = gtk_builder_new();
-
- if (!gtk_builder_add_from_file(bfi->builder, bfi->gtkbuilder_xml_file,
- &error))
- {
- libgnac_critical("%s", error->message);
- g_clear_error(&error);
- gnac_exit(EXIT_FAILURE);
- }
+ bfi->builder = gnac_utils_create_gtk_builder(bfi->gtkbuilder_xml_file);
widget = gnac_profiles_default_get_properties_alignment(bfi);
@@ -162,18 +155,19 @@ void
gnac_profiles_default_fullfill_fields(AudioProfileGeneric *profile,
BasicFormatInfo *bfi)
{
- GtkWidget *widget;
-
- if (profile == NULL) {
+ if (!profile) {
gnac_profiles_utils_reinit_values_combo(bfi,
"combo-channels", "combo-sample-rate", NULL);
- } else {
- widget = gnac_profiles_utils_get_widget(bfi, "combo-channels");
- gnac_profiles_utils_set_value_combo(widget, profile->channels);
-
- widget = gnac_profiles_utils_get_widget(bfi, "combo-sample-rate");
- gnac_profiles_utils_set_value_combo(widget, profile->rate);
+ return;
}
+
+ GtkWidget *widget;
+
+ widget = gnac_profiles_utils_get_widget(bfi, "combo-channels");
+ gnac_profiles_utils_set_value_combo(widget, profile->channels);
+
+ widget = gnac_profiles_utils_get_widget(bfi, "combo-sample-rate");
+ gnac_profiles_utils_set_value_combo(widget, profile->rate);
}
@@ -225,29 +219,32 @@ gnac_profiles_default_save_profile(AudioProfileGeneric *profile,
XMLDoc *
-gnac_profiles_default_load_generic_audio_profile(const gchar *filename,
- AudioProfileGeneric **generic)
+gnac_profiles_default_load_generic_audio_profile(
+ const gchar *filename,
+ AudioProfileGeneric **generic)
{
XMLDoc *doc;
- AudioProfileGeneric *profile;
doc = gnac_profiles_xml_engine_load_doc_xpath(filename);
- if (doc != NULL) {
- profile = gnac_profiles_utils_allocate_audio_profile_generic();
- *generic = profile;
- gnac_profiles_utils_load_saved_profile(doc, "/audio-profile/base/",
- "format-id", &profile->format_id,
- "format-name", &profile->format_name,
- "format-extension", &profile->extension,
- "name", &profile->name,
- "description", &profile->description,
- "channels", &profile->channels,
- "sample-rate", &profile->rate,
- "pipeline", &profile->pipeline,
- NULL);
- } else {
+ if (!doc) {
*generic = NULL;
+ return NULL;
}
+
+ AudioProfileGeneric *profile;
+
+ profile = gnac_profiles_utils_allocate_audio_profile_generic();
+ *generic = profile;
+ gnac_profiles_utils_load_saved_profile(doc, "/audio-profile/base/",
+ "format-id", &profile->format_id,
+ "format-name", &profile->format_name,
+ "format-extension", &profile->extension,
+ "name", &profile->name,
+ "description", &profile->description,
+ "channels", &profile->channels,
+ "sample-rate", &profile->rate,
+ "pipeline", &profile->pipeline,
+ NULL);
return doc;
}
@@ -256,13 +253,14 @@ gnac_profiles_default_load_generic_audio_profile(const gchar *filename,
void
gnac_profiles_default_clean_up(BasicFormatInfo *bfi)
{
- GtkWidget *widget_advanced;
GtkWidget *widget;
- widget_advanced = gnac_profiles_utils_get_widget(bfi, "table-advanced-base");
+ widget = gnac_profiles_utils_get_widget(bfi, "table-advanced-base");
+ gtk_widget_destroy(widget);
+
widget = gnac_profiles_default_get_properties_alignment(bfi);
- gnac_profiles_utils_free_combo_values(bfi, "combo-channels",
- "combo-sample-rate", NULL);
- gtk_widget_destroy(widget_advanced);
gtk_widget_destroy(widget);
+
+ gnac_profiles_utils_free_combo_values(bfi,
+ "combo-channels", "combo-sample-rate", NULL);
}
diff --git a/src/profiles/gnac-profiles-manager.c b/src/profiles/gnac-profiles-manager.c
index 4cfa101..998c538 100644
--- a/src/profiles/gnac-profiles-manager.c
+++ b/src/profiles/gnac-profiles-manager.c
@@ -93,9 +93,9 @@ static void
gnac_profiles_mgr_delete_profile_file(const gchar *name);
static void
-gnac_profiles_mgr_get(GtkTreeRowReference *ref,
- gint col_number,
- gpointer *data);
+gnac_profiles_mgr_get(GtkTreeRowReference *ref,
+ gint col_number,
+ AudioProfileGeneric **profile);
static void
gnac_profiles_mgr_set(GtkTreeRowReference *ref, ...);
@@ -183,8 +183,8 @@ gnac_profiles_mgr_init(void)
view = GTK_TREE_VIEW(gnac_profiles_mgr_get_widget("profile_treeview"));
model = gtk_tree_view_get_model(view);
-
selection = gtk_tree_view_get_selection(view);
+
g_signal_connect(G_OBJECT(selection), "changed",
G_CALLBACK(gnac_profiles_mgr_on_treeselection_changed), NULL);
@@ -244,16 +244,19 @@ gnac_profiles_mgr_get_profiles_dir(void)
saved_profiles_dir = g_build_filename(g_get_user_data_dir(),
"gnac", "profiles", NULL);
dir = g_file_new_for_path(saved_profiles_dir);
- if (!g_file_query_exists(dir, NULL)) {
- if (!g_file_make_directory_with_parents(dir, NULL, &error)) {
- libgnac_warning("%s: %s",
- _("Unable to create the profiles directory"), error->message);
- g_error_free(error);
- return NULL;
- } else {
- gnac_profiles_mgr_import_default_profiles();
- }
+ if (g_file_query_exists(dir, NULL)) {
+ return dir;
}
+
+ if (!g_file_make_directory_with_parents(dir, NULL, &error)) {
+ libgnac_warning("%s: %s",
+ _("Unable to create the profiles directory"), error->message);
+ g_error_free(error);
+ return NULL;
+ }
+
+ gnac_profiles_mgr_import_default_profiles();
+
return dir;
}
@@ -400,33 +403,7 @@ gnac_profiles_mgr_populate(void)
G_FILE_ATTRIBUTE_STANDARD_NAME ","
G_FILE_ATTRIBUTE_STANDARD_TYPE,
G_FILE_QUERY_INFO_NONE, NULL, &error);
-
- if (files != NULL) {
- while ((file_info = g_file_enumerator_next_file(files, NULL, NULL)) != NULL)
- {
- if (g_file_info_get_file_type(file_info) == G_FILE_TYPE_REGULAR) {
- profile_file = g_file_enumerator_get_container(files);
- profile_file_path = g_file_get_path(profile_file);
- profile_file_name = g_file_info_get_name(file_info);
- profile_file_full_path = g_build_filename(profile_file_path,
- profile_file_name, NULL);
- profile = gnac_profiles_properties_load_profile_from_file(
- profile_file_full_path, profile_file_name, &error);
- if (profile != NULL) {
- gnac_profiles_mgr_insert(profile);
- } else if (error) {
- libgnac_warning("%s", error->message);
- g_clear_error(&error);
- }
- /* Cleanup */
- g_free(profile_file_path);
- g_free(profile_file_full_path);
- }
- g_object_unref(G_OBJECT(file_info));
- }
- gnac_profiles_mgr_display_status_message(NULL, NULL);
-
- } else {
+ if (!files) {
const gchar *msg = N_("Unable to browse the profiles directory");
libgnac_warning("%s: %s", msg, error->message);
gnac_profiles_mgr_display_status_message(NULL, msg);
@@ -434,7 +411,33 @@ gnac_profiles_mgr_populate(void)
return;
}
- /* Cleanup */
+ while ((file_info = g_file_enumerator_next_file(files, NULL, NULL)) != NULL)
+ {
+ if (g_file_info_get_file_type(file_info) == G_FILE_TYPE_REGULAR) {
+ profile_file = g_file_enumerator_get_container(files);
+ profile_file_path = g_file_get_path(profile_file);
+ profile_file_name = g_file_info_get_name(file_info);
+ profile_file_full_path = g_build_filename(profile_file_path,
+ profile_file_name, NULL);
+ profile = gnac_profiles_properties_load_profile_from_file(
+ profile_file_full_path, profile_file_name, &error);
+
+ g_free(profile_file_path);
+ g_free(profile_file_full_path);
+
+ if (profile) {
+ gnac_profiles_mgr_insert(profile);
+ } else if (error) {
+ libgnac_warning("%s", error->message);
+ g_clear_error(&error);
+ }
+ }
+
+ g_object_unref(G_OBJECT(file_info));
+ }
+
+ gnac_profiles_mgr_display_status_message(NULL, NULL);
+
g_object_unref(dir);
g_file_enumerator_close(files, NULL, NULL);
g_object_unref(files);
@@ -477,7 +480,7 @@ gnac_profiles_mgr_import_default_profiles(void)
return;
}
- while ((file_info = g_file_enumerator_next_file(files, NULL, NULL)) != NULL)
+ while ((file_info = g_file_enumerator_next_file(files, NULL, NULL)))
{
if (g_file_info_get_file_type(file_info) == G_FILE_TYPE_REGULAR) {
profile_file = g_file_enumerator_get_container(files);
@@ -487,14 +490,14 @@ gnac_profiles_mgr_import_default_profiles(void)
profile_file_name, NULL);
profile = gnac_profiles_properties_load_profile_from_file(
profile_file_full_path, profile_file_name, &error);
- if (profile != NULL) {
+
+ if (profile) {
gnac_profiles_properties_save_profile(profile);
} else if (error) {
libgnac_warning("%s", error->message);
g_clear_error(&error);
}
- /* Cleanup */
g_free(profile_file_path);
g_free(profile_file_full_path);
gnac_profiles_properties_free_audio_profile(profile);
@@ -503,7 +506,6 @@ gnac_profiles_mgr_import_default_profiles(void)
g_object_unref(G_OBJECT(file_info));
}
- /* Cleanup */
g_object_unref(dir);
g_file_enumerator_close(files, NULL, NULL);
g_object_unref(files);
@@ -513,17 +515,19 @@ gnac_profiles_mgr_import_default_profiles(void)
GList *
gnac_profiles_mgr_get_profiles_list(void)
{
+ gboolean has_next;
GList *list = NULL;
GtkTreeModel *model;
GtkTreeIter iter;
AudioProfileGeneric *profile;
model = GTK_TREE_MODEL(gnac_profiles_mgr_get_object("liststore"));
- if (gtk_tree_model_get_iter_first(model, &iter)) {
- do {
- gtk_tree_model_get(model, &iter, COL_PROFILE, (gpointer*)&profile, -1);
- list = g_list_append(list, (gpointer) profile);
- } while (gtk_tree_model_iter_next(model, &iter));
+ has_next = gtk_tree_model_get_iter_first(model, &iter);
+
+ while (has_next) {
+ gtk_tree_model_get(model, &iter, COL_PROFILE, &profile, -1);
+ list = g_list_append(list, profile);
+ has_next = gtk_tree_model_iter_next(model, &iter);
}
return list;
@@ -576,16 +580,18 @@ gnac_profiles_mgr_show(void)
static void
gnac_profiles_mgr_clear(void)
{
- GtkTreeModel *model;
- GtkTreeIter iter;
+ gboolean has_next;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
AudioProfileGeneric *profile;
model = GTK_TREE_MODEL(gnac_profiles_mgr_get_object("liststore"));
- if (gtk_tree_model_get_iter_first(model, &iter)) {
- do {
- gtk_tree_model_get(model, &iter, COL_PROFILE, (gpointer*)&profile, -1);
- gnac_profiles_properties_free_audio_profile(profile);
- } while (gtk_tree_model_iter_next(model, &iter));
+ has_next = gtk_tree_model_get_iter_first(model, &iter);
+
+ while (has_next) {
+ gtk_tree_model_get(model, &iter, COL_PROFILE, &profile, -1);
+ gnac_profiles_properties_free_audio_profile(profile);
+ has_next = gtk_tree_model_iter_next(model, &iter);
}
gtk_list_store_clear(GTK_LIST_STORE(model));
@@ -595,10 +601,10 @@ gnac_profiles_mgr_clear(void)
static void
gnac_profiles_mgr_insert(gpointer profile)
{
- GtkListStore *model;
- GtkTreeIter iter;
+ GtkListStore *model;
+ GtkTreeIter iter;
AudioProfileGeneric *generic;
- gchar *formatted_name;
+ gchar *formatted_name;
generic = ((AudioProfileGeneric*) profile)->generic;
model = GTK_LIST_STORE(gnac_profiles_mgr_get_object("liststore"));
@@ -607,10 +613,10 @@ gnac_profiles_mgr_insert(gpointer profile)
generic->name, MAX_NAME_DISPLAY_SIZE);
gtk_list_store_append(model, &iter);
gtk_list_store_set(model, &iter,
- 0, formatted_name,
- 1, generic->format_name,
- 2, generic->extension,
- 3, profile,
+ COL_NAME, formatted_name,
+ COL_FORMAT, generic->format_name,
+ COL_EXTENSION, generic->extension,
+ COL_PROFILE, profile,
-1);
g_free(formatted_name);
@@ -622,46 +628,44 @@ gnac_profiles_mgr_remove(GtkTreeRowReference *ref)
{
GtkTreeModel *model;
GtkTreePath *path;
- gpointer profile = NULL;
g_return_if_fail(ref);
model = GTK_TREE_MODEL(gnac_profiles_mgr_get_object("liststore"));
path = gtk_tree_row_reference_get_path(ref);
+ if (!path) return;
- if (path) {
- GtkTreeIter iter;
+ AudioProfileGeneric *profile;
+ GtkTreeIter iter;
- if (gtk_tree_model_get_iter(model, &iter, path)) {
- gtk_tree_model_get(model, &iter, COL_PROFILE, &profile, -1);
- gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
- }
+ if (gtk_tree_model_get_iter(model, &iter, path)) {
+ gtk_tree_model_get(model, &iter, COL_PROFILE, &profile, -1);
+ gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
}
gtk_tree_path_free(path);
- gnac_profiles_properties_free_audio_profile((AudioProfileGeneric*)profile);
+ gnac_profiles_properties_free_audio_profile(profile);
}
static void
-gnac_profiles_mgr_get(GtkTreeRowReference *ref,
- gint col_number,
- gpointer *data)
+gnac_profiles_mgr_get(GtkTreeRowReference *ref,
+ gint col_number,
+ AudioProfileGeneric **profile)
{
+ g_return_if_fail(ref);
+
GtkTreeModel *model;
GtkTreePath *path;
- g_return_if_fail(ref);
-
model = GTK_TREE_MODEL(gnac_profiles_mgr_get_object("liststore"));
path = gtk_tree_row_reference_get_path(ref);
+ if (!path) return;
- if (path) {
- GtkTreeIter iter;
+ GtkTreeIter iter;
- if (gtk_tree_model_get_iter(model, &iter, path)) {
- gtk_tree_model_get(model, &iter, col_number, data, -1);
- }
+ if (gtk_tree_model_get_iter(model, &iter, path)) {
+ gtk_tree_model_get(model, &iter, col_number, profile, -1);
}
gtk_tree_path_free(path);
@@ -671,22 +675,21 @@ gnac_profiles_mgr_get(GtkTreeRowReference *ref,
static void
gnac_profiles_mgr_set(GtkTreeRowReference *ref, ...)
{
+ g_return_if_fail(ref);
+
GtkListStore *list_store;
GtkTreePath *path;
- va_list ap;
-
- g_return_if_fail(ref);
list_store = GTK_LIST_STORE(gnac_profiles_mgr_get_object("liststore"));
path = gtk_tree_row_reference_get_path(ref);
+ if (!path) return;
- if (path) {
- GtkTreeIter iter;
-
- if (gtk_tree_model_get_iter(GTK_TREE_MODEL(list_store), &iter, path)) {
- va_start(ap, ref);
- gtk_list_store_set_valist(list_store, &iter, ap);
- }
+ GtkTreeIter iter;
+ va_list ap;
+
+ if (gtk_tree_model_get_iter(GTK_TREE_MODEL(list_store), &iter, path)) {
+ va_start(ap, ref);
+ gtk_list_store_set_valist(list_store, &iter, ap);
}
gtk_tree_path_free(path);
@@ -711,6 +714,7 @@ gnac_profiles_mgr_get_selected_rows(void)
/* Convert path to GtkTreeRowReference */
next = gtk_tree_selection_get_selected_rows(selection, &model);
next_temp = next;
+
while (next) {
row_references = g_list_prepend(row_references,
gtk_tree_row_reference_new(model, next->data));
@@ -788,10 +792,6 @@ gnac_profiles_mgr_display_status_message(const gchar *success_message,
const gchar *error_message)
{
GtkWidget *frame_status;
- GtkWidget *label_status_ok;
- GtkWidget *image_status_ok;
- GtkWidget *label_status_error;
- GtkWidget *image_status_error;
frame_status = gnac_profiles_mgr_get_widget("frame-status");
@@ -802,6 +802,11 @@ gnac_profiles_mgr_display_status_message(const gchar *success_message,
gtk_widget_show_all(frame_status);
+ GtkWidget *label_status_ok;
+ GtkWidget *image_status_ok;
+ GtkWidget *label_status_error;
+ GtkWidget *image_status_error;
+
label_status_ok = gnac_profiles_mgr_get_widget("label-status-ok");
image_status_ok = gnac_profiles_mgr_get_widget("image-status-ok");
label_status_error = gnac_profiles_mgr_get_widget("label-status-error");
@@ -837,9 +842,7 @@ gnac_profiles_mgr_on_drag_data_received(GtkWidget *widget,
guint time,
gpointer data)
{
- gchar **uris;
- GError *error = NULL;
- ThreadCopyData *tcopy_data;
+ gchar **uris;
uris = g_uri_list_extract_uris((const gchar*) selection_data->data);
if (!uris) {
@@ -847,10 +850,13 @@ gnac_profiles_mgr_on_drag_data_received(GtkWidget *widget,
return;
}
+ ThreadCopyData *tcopy_data;
tcopy_data = g_malloc(sizeof(ThreadCopyData));
tcopy_data->uris = uris;
tcopy_data->info = info;
+ GError *error = NULL;
+
g_thread_create((GThreadFunc) gnac_profiles_mgr_copy_and_load_files,
tcopy_data, TRUE, &error);
if (error) {
@@ -886,7 +892,7 @@ gnac_profiles_mgr_copy_and_load_files(gpointer data)
gnac_profiles_mgr_show_import_progressbar(TRUE);
gdk_threads_leave();
- while (uri != NULL) {
+ while (uri) {
GFile *file;
GFileInfo *file_info;
@@ -907,14 +913,14 @@ gnac_profiles_mgr_copy_and_load_files(gpointer data)
case TARGET_URI:
if (g_file_info_get_file_type(file_info) == G_FILE_TYPE_REGULAR) {
name = g_file_info_get_name(file_info);
- if (name != NULL) ok = TRUE;
+ if (name) ok = TRUE;
}
break;
case TARGET_PLAIN:
if (g_file_info_get_file_type(file_info) == G_FILE_TYPE_UNKNOWN) {
name = g_file_get_basename(file);
- if (name != NULL) ok = TRUE;
+ if (name) ok = TRUE;
}
break;
@@ -956,6 +962,7 @@ gnac_profiles_mgr_copy_and_load_files(gpointer data)
} else {
++profiles_ok;
}
+
g_free(path);
g_object_unref(dest);
}
@@ -966,8 +973,10 @@ gnac_profiles_mgr_copy_and_load_files(gpointer data)
++profiles_error;
}
}
+
++index;
uri = uris[index];
+
g_object_unref(file);
g_object_unref(file_info);
}
@@ -978,10 +987,11 @@ gnac_profiles_mgr_copy_and_load_files(gpointer data)
if (profiles_error > 0) {
errors = g_strdup_printf(ngettext("%d file failed to be imported",
"%d files failed to be imported", profiles_error), profiles_error);
- if (profiles_ok > 0) {
- oks = g_strdup_printf(ngettext("%d file successfully imported",
- "%d files successfully imported", profiles_ok), profiles_ok);
- }
+ }
+
+ if (profiles_ok > 0) {
+ oks = g_strdup_printf(ngettext("%d file successfully imported",
+ "%d files successfully imported", profiles_ok), profiles_ok);
}
gdk_threads_enter();
@@ -990,7 +1000,6 @@ gnac_profiles_mgr_copy_and_load_files(gpointer data)
gnac_profiles_mgr_display_status_message(oks,errors);
gdk_threads_leave();
- /* Cleanup */
g_free(oks);
g_free(errors);
g_strfreev(tcopy_data->uris);
@@ -1023,13 +1032,16 @@ gnac_profiles_mgr_on_drag_profile_copied(goffset current_num_bytes,
} else {
profile = gnac_profiles_properties_load_profile_from_file(
copy_data->path, copy_data->name, copy_data->error);
- if (profile != NULL && !(*(copy_data->error))) {
+
+ if (profile && !(*(copy_data->error))) {
gdk_threads_enter();
gnac_profiles_properties_save_profile(profile);
gnac_profiles_mgr_insert(profile);
gdk_threads_leave();
}
+
file = g_file_new_for_path(copy_data->path);
+
g_file_delete(file, NULL, NULL);
g_object_unref(file);
}
@@ -1055,26 +1067,32 @@ static gchar **
gnac_profiles_mgr_get_selected_uris(void)
{
GList *selected;
- GList *temp;
- gchar **uris;
- gint i;
selected = gnac_profiles_mgr_get_selected_rows();
+ if (!selected) return NULL;
+
+ gchar **uris;
+ GList *temp;
+ GtkTreeRowReference *reference;
+ guint i;
+
+ reference = (GtkTreeRowReference*) selected->data;
uris = g_malloc((g_list_length(selected)+1) * sizeof(gchar*));
- for (i = 0, temp = selected; temp != NULL; temp = temp->next, ++i) {
+ for (i = 0, temp = selected; temp; temp = temp->next, ++i) {
GFile *file;
AudioProfileGeneric *profile;
gchar *path;
- gnac_profiles_mgr_get((GtkTreeRowReference*)selected->data,
- COL_PROFILE, (gpointer*) &profile);
+ gnac_profiles_mgr_get(reference, COL_PROFILE, &profile);
profile = profile->generic;
path = g_strconcat(GNAC_SAVED_PROFILES_URL_WITH_EXT(profile->name), NULL);
file = g_file_new_for_path(path);
uris[i] = g_file_get_uri(file);
+
g_free(path);
}
+
uris[i] = NULL;
g_list_free_full(selected, (GDestroyNotify) gtk_tree_row_reference_free);
@@ -1105,20 +1123,25 @@ void
gnac_profiles_mgr_on_copy(GtkWidget *widget,
gpointer data)
{
- AudioProfileGeneric *profile;
- AudioProfileGeneric *generic;
- AudioProfileGeneric *copy_profile;
- gchar *full_path;
- gchar *new_path;
- gchar *new_name;
- GError *error = NULL;
- GFile *dst;
- GFile *src;
- GList *selected;
+ GList *selected;
selected = gnac_profiles_mgr_get_selected_rows();
- gnac_profiles_mgr_get((GtkTreeRowReference*)selected->data,
- COL_PROFILE, (gpointer*)&profile);
+ if (!selected) return;
+
+ AudioProfileGeneric *copy_profile;
+ AudioProfileGeneric *generic;
+ AudioProfileGeneric *profile;
+ gchar *full_path;
+ gchar *new_name;
+ gchar *new_path;
+ GError *error = NULL;
+ GFile *dst;
+ GFile *src;
+ GtkTreeRowReference *reference;
+
+ reference = (GtkTreeRowReference*) selected->data;
+
+ gnac_profiles_mgr_get(reference, COL_PROFILE, &profile);
generic = profile->generic;
full_path = g_strconcat(GNAC_SAVED_PROFILES_URL_WITH_EXT(generic->name),
@@ -1129,6 +1152,7 @@ gnac_profiles_mgr_on_copy(GtkWidget *widget,
src = g_file_new_for_path(full_path);
dst = g_file_new_for_path(new_path);
+
g_free(full_path);
g_file_copy(src, dst, G_FILE_COPY_NONE, NULL, NULL, NULL, &error);
@@ -1139,13 +1163,13 @@ gnac_profiles_mgr_on_copy(GtkWidget *widget,
gnac_profiles_mgr_display_status_message(
NULL, _("Failed to copy the profile"));
- /* Cleanup */
g_clear_error(&error);
g_object_unref(src);
g_object_unref(dst);
g_free(new_path);
g_free(new_name);
g_list_free_full(selected, (GDestroyNotify) gtk_tree_row_reference_free);
+
return;
}
@@ -1167,7 +1191,6 @@ gnac_profiles_mgr_on_copy(GtkWidget *widget,
g_clear_error(&error);
}
- /* cleanup */
g_object_unref(src);
g_object_unref(dst);
g_free(new_path);
@@ -1181,12 +1204,15 @@ gnac_profiles_mgr_on_edit(GtkWidget *widget,
gpointer data)
{
GList *selected;
- AudioProfileGeneric *profile;
selected = gnac_profiles_mgr_get_selected_rows();
+ if (!selected) return;
- gnac_profiles_mgr_get((GtkTreeRowReference*)selected->data,
- COL_PROFILE, (gpointer*)&profile);
+ AudioProfileGeneric *profile;
+ GtkTreeRowReference *reference;
+
+ reference = (GtkTreeRowReference*) selected->data;
+ gnac_profiles_mgr_get(reference, COL_PROFILE, &profile);
profile->generic->user_data = selected->data;
g_list_free_full(selected, (GDestroyNotify) gtk_tree_row_reference_free);
@@ -1200,17 +1226,22 @@ static void
gnac_profiles_mgr_on_edit_profile(GtkWidget *widget,
gpointer data)
{
- AudioProfileGeneric *profile;
- AudioProfileGeneric *generic;
- AudioProfileGeneric *old_generic;
- gpointer old_profile;
- gchar *formatted_name;
GList *selected;
selected = gnac_profiles_mgr_get_selected_rows();
- gnac_profiles_mgr_get((GtkTreeRowReference*)selected->data,
- COL_PROFILE, &old_profile);
- old_generic = ((AudioProfileGeneric*)old_profile)->generic;
+ if (!selected) return;
+
+ AudioProfileGeneric *generic;
+ AudioProfileGeneric *old_generic;
+ AudioProfileGeneric *old_profile;
+ AudioProfileGeneric *profile;
+ gchar *formatted_name;
+ GtkTreeRowReference *reference;
+
+ reference = (GtkTreeRowReference*) selected->data;
+
+ gnac_profiles_mgr_get(reference, COL_PROFILE, &old_profile);
+ old_generic = old_profile->generic;
profile = (AudioProfileGeneric*) data;
generic = profile->generic;
@@ -1221,11 +1252,11 @@ gnac_profiles_mgr_on_edit_profile(GtkWidget *widget,
formatted_name = gnac_profiles_properties_filter_text_for_displaying(
generic->name, MAX_NAME_DISPLAY_SIZE);
- gnac_profiles_mgr_set((GtkTreeRowReference*) selected->data,
- 0, formatted_name,
- 1, generic->format_name,
- 2, generic->extension,
- 3, profile,
+ gnac_profiles_mgr_set(reference,
+ COL_NAME, formatted_name,
+ COL_FORMAT, generic->format_name,
+ COL_EXTENSION, generic->extension,
+ COL_PROFILE, profile,
-1);
g_free(formatted_name);
@@ -1242,50 +1273,50 @@ void
gnac_profiles_mgr_on_remove(GtkWidget *widget,
gpointer data)
{
- GList *selected;
- GtkTreeModel *model;
- GtkTreePath *path;
- GtkTreeIter iter;
- gboolean new_selected = FALSE;
- AudioProfileGeneric *profile;
+ GList *selected;
selected = gnac_profiles_mgr_get_selected_rows();
- if (selected != NULL) {
- gnac_profiles_mgr_get((GtkTreeRowReference*)selected->data,
- COL_PROFILE, (gpointer*) &profile);
- gnac_profiles_mgr_delete_profile_file(profile->generic->name);
-
- gnac_profiles_mgr_display_status_message(NULL, NULL);
-
- model = gtk_tree_row_reference_get_model(
- (GtkTreeRowReference*)selected->data);
- path = gtk_tree_row_reference_get_path(
- (GtkTreeRowReference*)selected->data);
-
- if (gtk_tree_model_get_iter(model, &iter, path)) {
- if (gtk_tree_model_iter_next(model, &iter)
- || (gtk_tree_path_prev(path) &&
- gtk_tree_model_get_iter(model, &iter, path)))
- {
- GtkTreeView *view;
- GtkTreeSelection *selection;
+ if (!selected) return;
- view = GTK_TREE_VIEW(gnac_profiles_mgr_get_widget("profile_treeview"));
- selection = gtk_tree_view_get_selection(view);
- gtk_tree_selection_select_iter(selection, &iter);
- new_selected = TRUE;
- }
- }
+ AudioProfileGeneric *profile;
+ gboolean new_selected = FALSE;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ GtkTreePath *path;
+ GtkTreeRowReference *reference;
- gnac_profiles_mgr_remove((GtkTreeRowReference*)selected->data);
-
- gnac_profiles_mgr_activate_buttons(new_selected);
- gnac_profiles_mgr_show_description_frame(new_selected);
+ reference = (GtkTreeRowReference*) selected->data;
- /* Cleanup */
- gtk_tree_path_free(path);
- g_list_free_full(selected, (GDestroyNotify) gtk_tree_row_reference_free);
+ gnac_profiles_mgr_get(reference, COL_PROFILE, &profile);
+ gnac_profiles_mgr_delete_profile_file(profile->generic->name);
+
+ gnac_profiles_mgr_display_status_message(NULL, NULL);
+
+ model = gtk_tree_row_reference_get_model(reference);
+ path = gtk_tree_row_reference_get_path(reference);
+
+ if (gtk_tree_model_get_iter(model, &iter, path)) {
+ if (gtk_tree_model_iter_next(model, &iter)
+ || (gtk_tree_path_prev(path) &&
+ gtk_tree_model_get_iter(model, &iter, path)))
+ {
+ GtkTreeView *view;
+ GtkTreeSelection *selection;
+
+ view = GTK_TREE_VIEW(gnac_profiles_mgr_get_widget("profile_treeview"));
+ selection = gtk_tree_view_get_selection(view);
+ gtk_tree_selection_select_iter(selection, &iter);
+ new_selected = TRUE;
+ }
}
+
+ gnac_profiles_mgr_remove(reference);
+
+ gnac_profiles_mgr_activate_buttons(new_selected);
+ gnac_profiles_mgr_show_description_frame(new_selected);
+
+ gtk_tree_path_free(path);
+ g_list_free_full(selected, (GDestroyNotify) gtk_tree_row_reference_free);
}
@@ -1298,6 +1329,7 @@ gnac_profiles_mgr_delete_profile_file(const gchar *name)
full_path = g_strconcat(GNAC_SAVED_PROFILES_URL_WITH_EXT(name), NULL);
file = g_file_new_for_path(full_path);
g_file_delete(file, NULL, NULL);
+
g_object_unref(file);
g_free(full_path);
}
@@ -1306,28 +1338,31 @@ gnac_profiles_mgr_delete_profile_file(const gchar *name)
static void
gnac_profiles_mgr_on_treeselection_changed(void)
{
- AudioProfileGeneric *profile;
- gchar *descr;
- GList *selected;
- GtkWidget *widget;
+ GList *selected;
selected = gnac_profiles_mgr_get_selected_rows();
if (!selected) return;
+ AudioProfileGeneric *profile;
+ gchar *descr;
+ GtkTreeRowReference *reference;
+ GtkWidget *widget;
+
+ reference = (GtkTreeRowReference*) selected->data;
+
gnac_profiles_mgr_activate_buttons(TRUE);
gnac_profiles_mgr_display_status_message(NULL, NULL);
- gnac_profiles_mgr_get((GtkTreeRowReference*)selected->data,
- COL_PROFILE, (gpointer*) &profile);
+ gnac_profiles_mgr_get(reference, COL_PROFILE, &profile);
widget = gnac_profiles_mgr_get_widget("label-description-content");
descr = gnac_profiles_properties_filter_text_for_displaying(
profile->generic->description, MAX_DESCR_DISPLAY_SIZE);
gtk_label_set_text(GTK_LABEL(widget), descr);
+
g_free(descr);
gnac_profiles_mgr_show_description_frame(TRUE);
- /* Cleanup */
g_list_free_full(selected, (GDestroyNotify) gtk_tree_row_reference_free);
}
diff --git a/src/profiles/gnac-profiles-properties.c b/src/profiles/gnac-profiles-properties.c
index a0183d1..f51fc6e 100644
--- a/src/profiles/gnac-profiles-properties.c
+++ b/src/profiles/gnac-profiles-properties.c
@@ -48,6 +48,13 @@
#include "libgnac-debug.h"
+enum {
+ COL_NAME,
+ COL_MODULE,
+ COL_ORDER,
+ NUM_COLS
+};
+
#ifdef G_OS_WIN32
static const gchar forbidden_chars[] = {
'\\', '/', ':', '*', '?', '"', '<', '>', '|', '{', '}'
@@ -128,8 +135,8 @@ gnac_profiles_properties_get_widget(const gchar *widget_name)
void
gnac_profiles_properties_init(void)
{
- GtkWidget *widget;
- GtkWidget *combo_format;
+ GtkWidget *combo_format;
+ GtkWindow *window;
GtkCellRenderer *renderer_format;
profiles_properties_builder = gnac_utils_create_gtk_builder(
@@ -147,14 +154,14 @@ gnac_profiles_properties_init(void)
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_format),
renderer_format, "text", 0, NULL);
- widget = gnac_profiles_properties_get_widget("window1");
- gtk_window_set_type_hint(GTK_WINDOW(widget), GDK_WINDOW_TYPE_HINT_DIALOG);
+ window = GTK_WINDOW(gnac_profiles_properties_get_widget("window1"));
+ gtk_window_set_type_hint(window, GDK_WINDOW_TYPE_HINT_DIALOG);
gnac_profiles_properties_init_format();
gnac_profiles_properties_display_status_message(NULL);
- gtk_window_set_modal(GTK_WINDOW(widget), TRUE);
+ gtk_window_set_modal(window, TRUE);
}
@@ -201,22 +208,23 @@ gnac_profiles_properties_init_format(void) {
format_id = format_module->funcs.init(
gnac_profiles_properties_update_textbuffer);
format_name = format_module->funcs.get_combo_format_name();
+
g_hash_table_insert(formats, (gpointer) format_id, format_module);
-
gtk_list_store_append(model, &iter);
+
if (!gnac_utils_str_equal(format_id, "custom-format")) {
gtk_list_store_set(model, &iter,
- 0, format_name,
- 1, format_module,
- 2, format_name,
+ COL_NAME, format_name,
+ COL_MODULE, format_module,
+ COL_ORDER, format_name,
-1);
} else {
// XXX This is a big hack to be sure that Custom Format
// will be at the end :-D
gtk_list_store_set(model, &iter,
- 0, format_name,
- 1, format_module,
- 2, "ZZZZZZZZZZZZZZZZZZZ",
+ COL_NAME, format_name,
+ COL_MODULE, format_module,
+ COL_ORDER, "ZZZZZZZZZZZZZZZZZZZ",
-1);
}
@@ -246,13 +254,8 @@ gnac_profiles_properties_show(gpointer profile,
const gchar *title,
GCallback call_back)
{
- AudioProfileGeneric *p;
- GtkWidget *widget;
- GtkWidget *format_combo_box;
- FormatModule *format_module;
- GtkTreeIter iter;
- GtkTreePath *tree_path;
- GtkTreeModel *model;
+ GtkWidget *widget;
+ GtkWidget *format_combo_box;
gnac_profiles_properties_reinit();
@@ -265,31 +268,43 @@ gnac_profiles_properties_show(gpointer profile,
gtk_window_set_title(GTK_WINDOW(widget), title);
format_combo_box = gnac_profiles_properties_get_widget("format_combo_box");
+
if (!profile) {
gtk_widget_show(widget);
gtk_combo_box_set_active(GTK_COMBO_BOX(format_combo_box), 0);
- } else {
- const gchar *format_id;
- p = ((AudioProfileGeneric*)profile)->generic;
- format_id = p->format_id;
- if (format_id) {
- format_module = g_hash_table_lookup(formats, format_id);
- if (format_module == NULL) {
- libgnac_warning(_("Format not supported"));
- } else {
- model = gtk_combo_box_get_model(GTK_COMBO_BOX(format_combo_box));
- gnac_profiles_properties_name_description_set_text(p->name,
- p->description);
- format_module->funcs.fullfill_fields(profile);
- tree_path = gtk_tree_row_reference_get_path(format_module->tree_ref);
- gtk_tree_model_get_iter(model, &iter, tree_path);
- gtk_combo_box_set_active_iter(GTK_COMBO_BOX(format_combo_box), &iter);
- format_module->funcs.generate_pipeline(NULL);
- gtk_widget_show(widget);
- gtk_tree_path_free(tree_path);
- }
- }
+ return;
+ }
+
+ AudioProfileGeneric *generic;
+ const gchar *format_id;
+
+ generic = ((AudioProfileGeneric*)profile)->generic;
+ format_id = generic->format_id;
+ if (!format_id) return;
+
+ FormatModule *format_module;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ GtkTreePath *path;
+
+ format_module = g_hash_table_lookup(formats, format_id);
+ if (!format_module) {
+ libgnac_warning(_("Format not supported"));
+ return;
}
+
+ model = gtk_combo_box_get_model(GTK_COMBO_BOX(format_combo_box));
+ gnac_profiles_properties_name_description_set_text(generic->name,
+ generic->description);
+ format_module->funcs.fullfill_fields(profile);
+ path = gtk_tree_row_reference_get_path(format_module->tree_ref);
+ gtk_tree_model_get_iter(model, &iter, path);
+ gtk_combo_box_set_active_iter(GTK_COMBO_BOX(format_combo_box), &iter);
+ format_module->funcs.generate_pipeline(NULL);
+
+ gtk_widget_show(widget);
+
+ gtk_tree_path_free(path);
}
@@ -298,49 +313,50 @@ gnac_profiles_properties_free_audio_profile(gpointer profile)
{
if (!profile) return;
- AudioProfileGeneric *p;
- const gchar *format_id;
- FormatModule *format_module;
+ AudioProfileGeneric *generic;
+ const gchar *format_id;
- p = ((AudioProfileGeneric*)profile)->generic;
- format_id = p->format_id;
- if (format_id) {
- format_module = g_hash_table_lookup(formats, format_id);
- if (format_module) {
- format_module->funcs.free_audio_profile(profile);
- } else {
- libgnac_warning(_("Format not supported"));
- }
+ generic = ((AudioProfileGeneric*)profile)->generic;
+ format_id = generic->format_id;
+ if (!format_id) return;
+
+ FormatModule *format_module;
+
+ format_module = g_hash_table_lookup(formats, format_id);
+ if (!format_module) {
+ libgnac_warning(_("Format not supported"));
+ return;
}
+
+ format_module->funcs.free_audio_profile(profile);
}
void
gnac_profiles_properties_destroy(void)
{
- if (formats) {
- GList *list;
- GList *temp;
- GtkWidget *window;
- FormatModule *format_module;
-
- list = g_hash_table_get_values(formats);
- for (temp = list; temp != NULL; temp = temp->next) {
- format_module = ((FormatModule*)temp->data);
- format_module->funcs.clean_up();
- g_free(format_module);
- }
+ if (!formats) return;
- /* Cleanup */
- g_list_free(list);
- g_hash_table_destroy(formats);
- formats = NULL;
- g_free(saved_profiles_dir);
+ GList *list;
+ GList *temp;
+ GtkWidget *window;
+ FormatModule *format_module;
- window = gnac_profiles_properties_get_widget("window1");
- g_object_unref(G_OBJECT(profiles_properties_builder));
- gtk_widget_destroy(window);
+ list = g_hash_table_get_values(formats);
+ for (temp = list; temp; temp = temp->next) {
+ format_module = ((FormatModule*)temp->data);
+ format_module->funcs.clean_up();
+ g_free(format_module);
}
+
+ g_list_free(list);
+ g_hash_table_destroy(formats);
+ formats = NULL;
+ g_free(saved_profiles_dir);
+
+ window = gnac_profiles_properties_get_widget("window1");
+ gtk_widget_destroy(window);
+ g_object_unref(G_OBJECT(profiles_properties_builder));
}
@@ -356,32 +372,31 @@ gnac_profiles_properties_combo_format_on_changed(GtkComboBox *widget,
FormatModule *format_module;
model = gtk_combo_box_get_model(widget);
- if (gtk_combo_box_get_active_iter(widget, &iter)) {
- gtk_tree_model_get(model, &iter, 1, (gpointer*)&format_module, -1);
+ if (!gtk_combo_box_get_active_iter(widget, &iter)) return;
- gnac_profiles_properties_display_status_message(NULL);
-
- if (current_format_module && format_module != current_format_module)
- {
- properties = current_format_module->funcs.get_widget(NULL);
- gtk_widget_hide(properties);
- }
+ gtk_tree_model_get(model, &iter, 1, (gpointer*)&format_module, -1);
- text_view = gnac_profiles_properties_get_widget("gstreamer_pipeline_text_view");
- gtk_text_view_set_editable(GTK_TEXT_VIEW(text_view), FALSE);
- #ifdef GNOME_ENABLE_DEBUG
- text_view = gnac_profiles_properties_get_widget("gstreamer_pipeline_box");
- gtk_widget_hide(text_view);
- #endif
+ gnac_profiles_properties_display_status_message(NULL);
- label = gnac_profiles_properties_get_widget("format_decription_label");
- gtk_label_set_markup(GTK_LABEL(label),
- format_module->funcs.get_description());
- properties = format_module->funcs.get_widget(NULL);
- gtk_widget_show(properties);
- format_module->funcs.generate_pipeline(NULL);
- current_format_module = format_module;
+ if (current_format_module && format_module != current_format_module) {
+ properties = current_format_module->funcs.get_widget(NULL);
+ gtk_widget_hide(properties);
}
+
+ text_view = gnac_profiles_properties_get_widget("gstreamer_pipeline_text_view");
+ gtk_text_view_set_editable(GTK_TEXT_VIEW(text_view), FALSE);
+
+ #ifdef GNOME_ENABLE_DEBUG
+ text_view = gnac_profiles_properties_get_widget("gstreamer_pipeline_box");
+ gtk_widget_hide(text_view);
+ #endif
+
+ label = gnac_profiles_properties_get_widget("format_decription_label");
+ gtk_label_set_markup(GTK_LABEL(label), format_module->funcs.get_description());
+ properties = format_module->funcs.get_widget(NULL);
+ gtk_widget_show(properties);
+ format_module->funcs.generate_pipeline(NULL);
+ current_format_module = format_module;
}
@@ -393,6 +408,7 @@ gnac_profiles_properties_update_textbuffer(const gchar *pipeline)
text_view = gnac_profiles_properties_get_widget("gstreamer_pipeline_text_view");
pipeline_text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view));
+
gtk_text_buffer_set_text(pipeline_text_buffer, pipeline,
g_utf8_strlen(pipeline, -1));
}
@@ -425,8 +441,10 @@ gnac_profiles_properties_reinit(void)
gnac_profiles_properties_display_status_message(NULL);
gnac_profiles_properties_update_textbuffer("");
gnac_profiles_properties_name_description_set_text("", "");
+
list = g_hash_table_get_values(formats);
- for (temp = list; temp != NULL; temp = temp->next) {
+
+ for (temp = list; temp; temp = temp->next) {
((FormatModule*)temp->data)->funcs.fullfill_fields(NULL);
}
@@ -480,6 +498,7 @@ gnac_profiles_properties_on_save(GtkWidget *widget,
GtkWidget *text_view;
GtkWidget *window;
GError *error = NULL;
+
StandardCallBack call_back = (StandardCallBack) data;
window = gnac_profiles_properties_get_widget("window1");
@@ -615,7 +634,7 @@ static gboolean
gnac_profiles_properties_is_valid_filename_chars(const gchar *chars)
{
glong len;
- guint i, j;
+ guint i, j;
len = g_utf8_strlen(chars, -1);
for (i = 0; i < len; i++) {
@@ -645,14 +664,14 @@ gnac_profiles_properties_load_profile_from_file(const gchar *path,
const gchar *filename,
GError **error)
{
- g_return_val_if_fail(error == NULL || *error == NULL, NULL);
+ g_return_val_if_fail(!error || !*error, NULL);
XMLDoc *doc;
AudioProfileGeneric *profile;
FormatModule *format_module;
doc = gnac_profiles_default_load_generic_audio_profile(path, &profile);
- if (!doc || !(profile->format_id)) {
+ if (!doc || !(profile->format_id)) {
*error = g_error_new(g_quark_from_static_string("gnac"), 0,
_("File \"%s\" is not a valid profile file."), filename);
} else {
@@ -702,12 +721,13 @@ gnac_profiles_properties_saved_profiles_contain_name(const gchar *name,
void
gnac_profiles_properties_save_profile(gpointer profile)
{
- const gchar *format_id;
- FormatModule *format_module;
+ const gchar *format_id;
format_id = ((AudioProfileGeneric*)profile)->generic->format_id;
if (!format_id) return;
+ FormatModule *format_module;
+
format_module = g_hash_table_lookup(formats, format_id);
if (format_module) {
format_module->funcs.save_profile_in_file(profile);
diff --git a/src/profiles/gnac-profiles-utils.c b/src/profiles/gnac-profiles-utils.c
index c660900..c68c38d 100755
--- a/src/profiles/gnac-profiles-utils.c
+++ b/src/profiles/gnac-profiles-utils.c
@@ -43,6 +43,7 @@ gnac_profiles_utils_init_name_extension(XMLDoc *doc,
xpath_query_name = g_strconcat("//profile[ id='", format, "']/name", NULL);
xpath_query_extension = g_strconcat("//profile[ id='", format,
"']/output-file-extension", NULL);
+
*name = gnac_profiles_xml_engine_get_text_node(doc, xpath_query_name);
*extension = gnac_profiles_xml_engine_get_text_node(doc,
xpath_query_extension);
@@ -167,16 +168,18 @@ gnac_profiles_utils_register_combo(GtkWidget *widget,
combo = g_malloc(sizeof(ComboValues));
result = gnac_profiles_xml_engine_get_combo_values(doc, xpath_query, combo);
- if (result == 0) {
- gnac_profiles_utils_add_values_combo(widget, combo);
- g_object_set_data(G_OBJECT(widget), "combo-values", combo);
- g_signal_connect(G_OBJECT(widget), "changed", call_back, user_data);
- } else {
+
+ if (result != 0) {
libgnac_warning("Impossible to register combo with xpath query %s",
xpath_query);
g_free(combo);
+ return result;
}
+ gnac_profiles_utils_add_values_combo(widget, combo);
+ g_object_set_data(G_OBJECT(widget), "combo-values", combo);
+ g_signal_connect(G_OBJECT(widget), "changed", call_back, user_data);
+
return result;
}
@@ -193,16 +196,18 @@ gnac_profiles_utils_register_slider(GtkWidget *widget,
slider = g_malloc(sizeof(SliderValues));
result = gnac_profiles_xml_engine_get_slider_values(doc, xpath_query, slider);
- if (result == 0) {
- gnac_profiles_utils_add_values_slider(widget, slider);
- g_object_set_data(G_OBJECT(widget), "slider-values", slider);
- g_signal_connect(G_OBJECT(widget), "value-changed", call_back, user_data);
- } else {
+
+ if (result != 0) {
libgnac_warning("Impossible to register slider with xpath query %s",
xpath_query);
g_free(slider);
+ return result;
}
+ gnac_profiles_utils_add_values_slider(widget, slider);
+ g_object_set_data(G_OBJECT(widget), "slider-values", slider);
+ g_signal_connect(G_OBJECT(widget), "value-changed", call_back, user_data);
+
return result;
}
@@ -219,15 +224,16 @@ gnac_profiles_utils_register_check(GtkWidget *widget,
check = g_malloc(sizeof(CheckValues));
result = gnac_profiles_xml_engine_get_check_values(doc, xpath_query, check);
- if (result == 0) {
- g_object_set_data(G_OBJECT(widget), "check-values", check);
- g_signal_connect(G_OBJECT(widget), "toggled", call_back, user_data);
- } else {
+ if (result != 0) {
libgnac_warning("Impossible to register check with xpath query %s",
xpath_query);
g_free(check);
+ return result;
}
+ g_object_set_data(G_OBJECT(widget), "check-values", check);
+ g_signal_connect(G_OBJECT(widget), "toggled", call_back, user_data);
+
return result;
}
@@ -241,13 +247,14 @@ gnac_profiles_utils_register_advanced_channels(GtkBuilder *builder,
GtkWidget *widget = NULL;
widget = gnac_utils_get_widget(builder, "combo-channels");
- if (widget) {
- gnac_profiles_utils_register_combo(widget, doc,
- "//variable[ id='channels']/*", call_back, user_data);
- } else {
+ if (!widget) {
libgnac_warning("Impossible to find widget %s", "combo-channels");
+ return NULL;
}
+ gnac_profiles_utils_register_combo(widget, doc,
+ "//variable[ id='channels']/*", call_back, user_data);
+
return widget;
}
@@ -261,13 +268,14 @@ gnac_profiles_utils_register_advanced_sample_rate(GtkBuilder *builder,
GtkWidget *widget = NULL;
widget = gnac_utils_get_widget(builder, "combo-sample-rate");
- if (widget) {
- gnac_profiles_utils_register_combo(widget, doc,
- "//variable[ id='sample-rate']/*", call_back, user_data);
- } else {
+ if (!widget) {
libgnac_warning("Impossible to find widget %s", "combo-sample-rate");
+ return NULL;
}
+ gnac_profiles_utils_register_combo(widget, doc,
+ "//variable[ id='sample-rate']/*", call_back, user_data);
+
return widget;
}
@@ -284,11 +292,13 @@ gnac_profiles_utils_add_values_combo(GtkWidget *combo,
list_names = values->names;
list_values = values->values;
- while (list_names != NULL) {
+ while (list_names) {
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo),
(const gchar*) list_names->data);
- if (gnac_utils_str_equal(values->default_value, (const gchar*) list_values->data)) {
+ if (gnac_utils_str_equal(values->default_value,
+ (const gchar*) list_values->data))
+ {
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), index);
}
@@ -305,20 +315,20 @@ gnac_profiles_utils_reinit_values_combo(BasicFormatInfo *bfi, ...)
GtkWidget *widget;
ComboValues *values;
va_list ap;
- gpointer v;
+ const gchar *combo_name;
va_start(ap, bfi);
- v = va_arg(ap, gpointer);
- while (v != NULL) {
- const gchar *combo_name = (const gchar *) v;
-
+ combo_name = va_arg(ap, const gchar *);
+
+ while (combo_name) {
widget = gnac_profiles_utils_get_widget(bfi, combo_name);
values = g_object_get_data(G_OBJECT(widget), "combo-values");
gnac_profiles_utils_set_value_combo(widget, values->default_value);
- v = va_arg(ap, gpointer);
+ combo_name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -332,13 +342,16 @@ gnac_profiles_utils_set_value_combo(GtkWidget *combo,
gint index;
values = g_object_get_data(G_OBJECT(combo), "combo-values");
- list_values= values->values;
- if (value == NULL) value = values->default_value;
+ list_values = values->values;
+
+ if (!value) value = values->default_value;
+
index = 0;
- while (list_values != NULL) {
+ while (list_values) {
if (gnac_utils_str_equal(value, (const gchar*) list_values->data)) {
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), index);
}
+
list_values = list_values->next;
++index;
}
@@ -355,15 +368,14 @@ gnac_profiles_utils_set_values_combo(BasicFormatInfo *bfi, ...)
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
-
- value = va_arg(ap, const gchar *);
+ while (name) {
+ value = va_arg(ap, const gchar *);
widget = gnac_profiles_utils_get_widget(bfi, name);
gnac_profiles_utils_set_value_combo(widget, value);
-
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -379,21 +391,22 @@ gnac_profiles_utils_set_values_checked_combo(BasicFormatInfo *bfi, ...)
va_start(ap, bfi);
name_combo = va_arg(ap, const gchar *);
- while (name_combo != NULL) {
-
+
+ while (name_combo) {
name_checkbox = va_arg(ap, const gchar *);
value = va_arg(ap, const gchar *);
- if (value != NULL) {
+ if (value) {
widget = gnac_profiles_utils_get_widget(bfi, name_combo);
gnac_profiles_utils_set_value_combo(widget, value);
}
widget = gnac_profiles_utils_get_widget(bfi, name_checkbox);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), (value != NULL));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), value != NULL);
name_combo = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -402,10 +415,11 @@ gchar *
gnac_profiles_utils_get_value_combo(GtkWidget *combo)
{
ComboValues *values;
- gint index;
+ gint index;
- index = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
+ index = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
values = g_object_get_data(G_OBJECT(combo), "combo-values");
+
return g_strconcat(g_list_nth_data(values->values, index), NULL);
}
@@ -431,15 +445,14 @@ gnac_profiles_utils_get_values_combo_and_set(BasicFormatInfo *bfi, ...)
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
-
- value = va_arg(ap, gchar **);
+ while (name) {
+ value = va_arg(ap, gchar **);
widget = gnac_profiles_utils_get_widget(bfi, name);
*value = gnac_profiles_utils_get_value_combo(widget);
-
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -455,11 +468,12 @@ gnac_profiles_utils_get_values_checked_combo_and_set(BasicFormatInfo *bfi, ...)
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
+
+ while (name) {
checkbox_name = va_arg(ap, const gchar *);
value = va_arg(ap, const gchar **);
-
widget = gnac_profiles_utils_get_widget(bfi, checkbox_name);
+
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
widget = gnac_profiles_utils_get_widget(bfi, name);
*value = gnac_profiles_utils_get_value_combo(widget);
@@ -467,6 +481,7 @@ gnac_profiles_utils_get_values_checked_combo_and_set(BasicFormatInfo *bfi, ...)
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -477,20 +492,18 @@ gnac_profiles_utils_reinit_values_slider(BasicFormatInfo *bfi, ...)
GtkWidget *widget;
SliderValues *values;
va_list ap;
- gpointer v;
+ const gchar *slider_name;
va_start(ap, bfi);
- v = va_arg(ap, gpointer);
- while (v != NULL) {
- const gchar *slider_name = (const gchar *) v;
-
+ slider_name = va_arg(ap, const gchar *);
+
+ while (slider_name) {
widget = gnac_profiles_utils_get_widget(bfi, slider_name);
values = g_object_get_data(G_OBJECT(widget), "slider-values");
-
gtk_range_set_value(GTK_RANGE(widget), values->default_value);
-
- v = va_arg(ap, gpointer);
+ slider_name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -505,14 +518,14 @@ gnac_profiles_utils_set_values_slider(BasicFormatInfo *bfi, ...)
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
+ while (name) {
value = va_arg(ap, gdouble);
widget = gnac_profiles_utils_get_widget(bfi, name);
gtk_range_set_value(GTK_RANGE(widget), value);
-
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -528,8 +541,8 @@ gnac_profiles_utils_set_values_checked_slider(BasicFormatInfo *bfi, ...)
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
+ while (name) {
checkbox_name = va_arg(ap, const gchar *);
value = va_arg(ap, gdouble);
@@ -537,11 +550,13 @@ gnac_profiles_utils_set_values_checked_slider(BasicFormatInfo *bfi, ...)
widget = gnac_profiles_utils_get_widget(bfi, name);
gtk_range_set_value(GTK_RANGE(widget), value);
}
+
widget = gnac_profiles_utils_get_widget(bfi, checkbox_name);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), (value != -1));
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -556,15 +571,14 @@ gnac_profiles_utils_get_values_slider_and_set(BasicFormatInfo *bfi, ...)
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL){
-
- value = va_arg(ap, gdouble*);
+ while (name) {
+ value = va_arg(ap, gdouble*);
widget = gnac_profiles_utils_get_widget(bfi, name);
*value = gtk_range_get_value(GTK_RANGE(widget));
-
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -580,11 +594,12 @@ gnac_profiles_utils_get_values_checked_slider_and_set(BasicFormatInfo *bfi, ...)
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
+ while (name) {
checkbox_name = va_arg(ap, const gchar *);
value = va_arg(ap, gdouble*);
widget = gnac_profiles_utils_get_widget(bfi, checkbox_name);
+
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
widget = gnac_profiles_utils_get_widget(bfi, name);
*value = gtk_range_get_value(GTK_RANGE(widget));
@@ -592,6 +607,7 @@ gnac_profiles_utils_get_values_checked_slider_and_set(BasicFormatInfo *bfi, ...)
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -602,21 +618,19 @@ gnac_profiles_utils_reinit_values_check(BasicFormatInfo *bfi, ...)
GtkWidget *widget;
CheckValues *values;
va_list ap;
- gpointer v;
+ const gchar *check_name;
va_start(ap, bfi);
- v = va_arg(ap, gpointer);
- while (v != NULL) {
- const gchar *check_name = (const gchar *) v;
-
+ check_name = va_arg(ap, const gchar *);
+
+ while (check_name) {
widget = gnac_profiles_utils_get_widget(bfi, check_name);
values = g_object_get_data(G_OBJECT(widget), "check-values");
-
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
values->default_value);
-
- v = va_arg(ap, gpointer);
+ check_name = va_arg(ap, gpointer);
}
+
va_end(ap);
}
@@ -631,15 +645,15 @@ gnac_profiles_utils_set_values_check(BasicFormatInfo *bfi, ...)
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
+ while (name) {
value = va_arg(ap, const gchar *);
widget = gnac_profiles_utils_get_widget(bfi, name);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),
gnac_utils_str_equal(value, "true"));
-
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -654,15 +668,15 @@ gnac_profiles_utils_get_values_check_and_set(BasicFormatInfo *bfi, ...)
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
-
+
+ while (name) {
value = va_arg(ap, const gchar **);
widget = gnac_profiles_utils_get_widget(bfi, name);
*value = g_strdup(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) ?
"true" : "false");
-
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -677,26 +691,34 @@ gnac_profiles_utils_add_description_tooltip(BasicFormatInfo *bfi,
va_list ap;
description = gnac_profiles_xml_engine_get_text_node(bfi->doc, xpath_query);
- if (description != NULL) {
- va_start(ap, xpath_query);
- widget = va_arg(ap, GtkWidget*);
- while (widget != NULL) {
- gtk_widget_set_tooltip_markup(widget, description);
- widget = va_arg(ap, GtkWidget*);
- }
- g_free(description);
- } else {
+ if (!description) {
libgnac_warning("Impossible to find description in %s", xpath_query);
+ return;
}
+
+ va_start(ap, xpath_query);
+ widget = va_arg(ap, GtkWidget*);
+
+ while (widget) {
+ gtk_widget_set_tooltip_markup(widget, description);
+ widget = va_arg(ap, GtkWidget*);
+ }
+
+ va_end(ap);
+
+ g_free(description);
}
void
gnac_profiles_utils_init_raw_audioconvert(XMLDoc *doc)
{
- if (!raw && !audioconvert) {
+ if (!raw) {
raw = gnac_profiles_xml_engine_get_text_node(doc,
"//process[ id='gstreamer-audio']");
+ }
+
+ if (!audioconvert) {
audioconvert = gnac_profiles_xml_engine_get_text_node(doc,
"//process[ id='audioconvert']");
}
@@ -732,16 +754,16 @@ gnac_profiles_utils_add_pipes(gchar *pipeline,
{
GList *list_temp = values;
- while (list_temp != NULL) {
+ while (list_temp) {
Value *v = list_temp->data;
gchar *temp;
+
if (gnac_utils_string_is_null_or_empty(pipeline)) {
temp = g_strconcat(v->value, NULL);
} else {
temp = g_strconcat(pipeline, " ! ", v->value, NULL);
}
- /* Cleanup */
g_free(pipeline);
g_free(v->name);
g_free(v->value);
@@ -760,13 +782,15 @@ gnac_profiles_utils_add_property_combo(gchar *pipeline,
GtkWidget *combo)
{
gchar *temp;
+ gchar *value;
ComboValues *values;
gint index;
index = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
values = g_object_get_data(G_OBJECT(combo), "combo-values");
- gchar *value = g_list_nth_data(values->values, index);
+ value = g_list_nth_data(values->values, index);
temp = g_strconcat(pipeline, " ", values->variable_name, "=", value, NULL);
+
g_free(pipeline);
return temp;
@@ -784,13 +808,13 @@ gnac_profiles_utils_add_properties_combo(gchar *pipeline,
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
-
+
+ while (name) {
widget = gnac_profiles_utils_get_widget(bfi, name);
pipeline = gnac_profiles_utils_add_property_combo(pipeline, widget);
-
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
return pipeline;
@@ -809,10 +833,11 @@ gnac_profiles_utils_add_properties_checked_combo(gchar *pipeline,
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
- checkbox_name = va_arg(ap, const gchar *);
+ while (name) {
+ checkbox_name = va_arg(ap, const gchar *);
widget = gnac_profiles_utils_get_widget(bfi, checkbox_name);
+
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
widget = gnac_profiles_utils_get_widget(bfi, name);
pipeline = gnac_profiles_utils_add_property_combo(pipeline, widget);
@@ -820,6 +845,7 @@ gnac_profiles_utils_add_properties_checked_combo(gchar *pipeline,
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
return pipeline;
@@ -841,10 +867,8 @@ gnac_profiles_utils_add_property_slider(gchar *pipeline,
values = g_object_get_data(G_OBJECT(slider), "slider-values");
value_str = gnac_profiles_utils_gdouble_to_gchararray_format(value*factor,
format);
- temp = g_strconcat(pipeline, " ", values->variable_name,
- "=", value_str, NULL);
+ temp = g_strconcat(pipeline, " ", values->variable_name, "=", value_str, NULL);
- /* Cleanup */
g_free(pipeline);
g_free(value_str);
@@ -863,14 +887,14 @@ gnac_profiles_utils_add_properties_slider(gchar *pipeline,
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
-
+
+ while (name) {
widget = gnac_profiles_utils_get_widget(bfi, name);
pipeline = gnac_profiles_utils_add_property_slider(pipeline, "%.0f", 1,
widget);
-
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
return pipeline;
@@ -889,14 +913,14 @@ gnac_profiles_utils_add_properties_slider_format(gchar *pipeline,
va_start(ap, format);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
-
+
+ while (name) {
widget = gnac_profiles_utils_get_widget(bfi, name);
pipeline = gnac_profiles_utils_add_property_slider(pipeline, format, 1,
widget);
-
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
return pipeline;
@@ -915,10 +939,11 @@ gnac_profiles_utils_add_properties_checked_slider(gchar *pipeline,
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
- checkbox_name = va_arg(ap, const gchar *);
+ while (name) {
+ checkbox_name = va_arg(ap, const gchar *);
widget = gnac_profiles_utils_get_widget(bfi, checkbox_name);
+
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
widget = gnac_profiles_utils_get_widget(bfi, name);
pipeline = gnac_profiles_utils_add_property_slider(pipeline, "%.0f", 1,
@@ -927,6 +952,7 @@ gnac_profiles_utils_add_properties_checked_slider(gchar *pipeline,
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
return pipeline;
@@ -947,10 +973,11 @@ gnac_profiles_utils_add_properties_checked_slider_format(
va_start(ap, format);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
- checkbox_name = va_arg(ap, const gchar *);
+ while (name) {
+ checkbox_name = va_arg(ap, const gchar *);
widget = gnac_profiles_utils_get_widget(bfi, checkbox_name);
+
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
widget = gnac_profiles_utils_get_widget(bfi, name);
pipeline = gnac_profiles_utils_add_property_slider(pipeline, format, 1,
@@ -959,6 +986,7 @@ gnac_profiles_utils_add_properties_checked_slider_format(
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
return pipeline;
@@ -975,8 +1003,9 @@ gnac_profiles_utils_add_property_check(gchar *pipeline,
checked = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check));
values = g_object_get_data(G_OBJECT(check), "check-values");
- temp = g_strconcat(pipeline, " ", values->variable_name,
- "=", checked ? "true" : "false", NULL);
+ temp = g_strconcat(pipeline, " ", values->variable_name, "=",
+ checked ? "true" : "false", NULL);
+
g_free(pipeline);
return temp;
@@ -994,13 +1023,13 @@ gnac_profiles_utils_add_properties_check(gchar *pipeline,
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
+ while (name) {
widget = gnac_profiles_utils_get_widget(bfi, name);
pipeline = gnac_profiles_utils_add_property_check(pipeline, widget);
-
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
return pipeline;
@@ -1018,12 +1047,13 @@ gnac_profiles_utils_set_active_toggle_button(BasicFormatInfo *bfi,
va_start(ap, active);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
+
+ while (name) {
widget = gnac_profiles_utils_get_widget(bfi, name);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), active);
-
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -1043,8 +1073,7 @@ gnac_profiles_utils_save_specific_properties_in_file(XMLDoc *doc, ...)
va_list ap;
va_start(ap, doc);
- gnac_profiles_xml_engine_add_values(doc,
- "/audio-profile/format-specific", ap);
+ gnac_profiles_xml_engine_add_values(doc, "/audio-profile/format-specific", ap);
}
@@ -1060,15 +1089,15 @@ gnac_profiles_utils_load_saved_profile(XMLDoc *doc,
va_start(ap, base_query);
spec_query = va_arg(ap, const gchar *);
- while (spec_query != NULL) {
- value = va_arg(ap, gchar **);
+ while (spec_query) {
+ value = va_arg(ap, gchar **);
query = g_strconcat(base_query, spec_query, NULL);
*value = gnac_profiles_xml_engine_get_text_node(doc, query);
-
g_free(query);
spec_query = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -1079,6 +1108,7 @@ gnac_profiles_utils_allocate_audio_profile_generic(void)
AudioProfileGeneric *profile;
profile = g_malloc(sizeof(AudioProfileGeneric));
+ if (!profile) return NULL;
profile->generic = profile;
profile->name = NULL;
@@ -1114,18 +1144,18 @@ gnac_profiles_utils_free_audio_profile_generic(AudioProfileGeneric *profile)
void
gnac_profiles_utils_free_basic_format_info_content(BasicFormatInfo *bfi)
{
- if (bfi) {
- g_object_unref(bfi->builder);
- gnac_profiles_xml_engine_free_doc_xpath(bfi->doc);
- g_free(bfi->pipeline);
- g_free(bfi->pipeline_encoder);
- g_free(bfi->pipeline_multiplexers);
- g_free(bfi->format_id);
- g_free(bfi->format_plugin_name);
- g_free(bfi->format_name);
- g_free(bfi->file_extension);
- g_free(bfi->description);
- }
+ if (!bfi) return;
+
+ g_object_unref(bfi->builder);
+ gnac_profiles_xml_engine_free_doc_xpath(bfi->doc);
+ g_free(bfi->pipeline);
+ g_free(bfi->pipeline_encoder);
+ g_free(bfi->pipeline_multiplexers);
+ g_free(bfi->format_id);
+ g_free(bfi->format_plugin_name);
+ g_free(bfi->format_name);
+ g_free(bfi->file_extension);
+ g_free(bfi->description);
}
@@ -1139,12 +1169,14 @@ gnac_profiles_utils_free_combo_values(BasicFormatInfo *bfi, ...)
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
+
+ while (name) {
widget = gnac_profiles_utils_get_widget(bfi, name);
values = g_object_get_data(G_OBJECT(widget), "combo-values");
gnac_profiles_xml_engine_free_combo_values(values);
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -1159,12 +1191,14 @@ gnac_profiles_utils_free_slider_values(BasicFormatInfo *bfi, ...)
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
+
+ while (name) {
widget = gnac_profiles_utils_get_widget(bfi, name);
values = g_object_get_data(G_OBJECT(widget), "slider-values");
gnac_profiles_xml_engine_free_slider_values(values);
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -1179,12 +1213,14 @@ gnac_profiles_utils_free_check_values(BasicFormatInfo *bfi, ...)
va_start(ap, bfi);
name = va_arg(ap, const gchar *);
- while (name != NULL) {
+
+ while (name) {
widget = gnac_profiles_utils_get_widget(bfi, name);
values = g_object_get_data(G_OBJECT(widget), "check-values");
gnac_profiles_xml_engine_free_check_values(values);
name = va_arg(ap, const gchar *);
}
+
va_end(ap);
}
@@ -1238,8 +1274,10 @@ gnac_profiles_utils_text_view_get_text(GtkTextView *text_view)
GtkTextBuffer *buffer;
GtkTextIter start;
GtkTextIter end;
+
buffer = gtk_text_view_get_buffer(text_view);
gtk_text_buffer_get_start_iter(buffer, &start);
gtk_text_buffer_get_end_iter(buffer, &end);
+
return gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
}
diff --git a/src/profiles/gnac-profiles-xml-engine.c b/src/profiles/gnac-profiles-xml-engine.c
index c483be6..2c3ff66 100755
--- a/src/profiles/gnac-profiles-xml-engine.c
+++ b/src/profiles/gnac-profiles-xml-engine.c
@@ -58,20 +58,21 @@ gnac_profiles_xml_engine_load_doc_xpath(const gchar *filename)
{
xmlDocPtr doc;
xmlXPathContextPtr xpath;
- XMLDoc *dx = NULL;
+ XMLDoc *dx;
doc = xmlParseFile(filename);
if (!doc) return NULL;
xpath = xmlXPathNewContext(doc);
- if (xpath) {
- dx = g_malloc(sizeof(XMLDoc));
- dx->doc = (gpointer) doc;
- dx->xpath_context = (gpointer) xpath;
- } else {
+ if (!xpath) {
xmlFreeDoc(doc);
+ return NULL;
}
+ dx = g_malloc(sizeof(XMLDoc));
+ dx->doc = doc;
+ dx->xpath_context = xpath;
+
return dx;
}
@@ -83,6 +84,7 @@ gnac_profiles_xml_engine_get_format_id(XMLDoc *dx)
const gchar *expr = "//profiles/profile";
xpath_obj = gnac_profiles_xml_engine_evaluate_query(expr, dx->xpath_context);
+
if (xpath_obj && !xpath_obj->boolval) {
xmlNodeSetPtr nodes = xpath_obj->nodesetval;
@@ -92,7 +94,9 @@ gnac_profiles_xml_engine_get_format_id(XMLDoc *dx)
node = nodes->nodeTab[0];
format_id = g_strdup((const gchar *) node->properties->children->content);
+
xmlXPathFreeObject(xpath_obj);
+
return format_id;
}
}
@@ -110,6 +114,7 @@ gnac_profiles_xml_engine_get_text_node(XMLDoc *dx,
xmlXPathObjectPtr xpath_obj;
xpath_obj = gnac_profiles_xml_engine_evaluate_query(expr, dx->xpath_context);
+
if (xpath_obj && !xpath_obj->boolval) {
xmlNodeSetPtr nodes = xpath_obj->nodesetval;
@@ -117,6 +122,7 @@ gnac_profiles_xml_engine_get_text_node(XMLDoc *dx,
xmlNodePtr node;
node = nodes->nodeTab[0];
+
if (node->children) {
xmlXPathFreeObject(xpath_obj);
return g_strdup(gettext((const gchar *)node->children->content));
@@ -141,41 +147,38 @@ GList *
gnac_profiles_xml_engine_get_list_values(XMLDoc *dx,
const gchar *expr)
{
- xmlXPathObjectPtr xpath_obj;
+ GList *list = NULL;
+ xmlXPathObjectPtr xpath_obj;
xpath_obj = gnac_profiles_xml_engine_evaluate_query(expr, dx->xpath_context);
+
if (xpath_obj && !xpath_obj->boolval) {
xmlNodeSetPtr nodes = xpath_obj->nodesetval;
+ if (!nodes) {
+ xmlXPathFreeObject(xpath_obj);
+ return NULL;
+ }
- if (nodes) {
- gint nb_element;
- gint i;
- GList *list = NULL;
+ gint i;
+
+ for (i = 0; i < nodes->nodeNr; i++) {
+ xmlNode *current_node = nodes->nodeTab[i];
- nb_element = nodes->nodeNr;
- for (i = 0; i < nb_element; i++) {
- xmlNode *current_node = nodes->nodeTab[i];
- Value *v;
-
- if (!gnac_profiles_xml_engine_is_i12n_node(current_node)) {
- v = g_malloc(sizeof(Value));
- v->name = g_strdup(gettext(
- (const gchar*) current_node->children->content));
- v->value = g_strdup(
- (const gchar*) current_node->properties->children->content);
- list = g_list_append(list, v);
- }
+ if (!gnac_profiles_xml_engine_is_i12n_node(current_node)) {
+ Value *val;
+ val = g_malloc(sizeof(Value));
+ val->name = g_strdup(gettext(
+ (const gchar*) current_node->children->content));
+ val->value = g_strdup(
+ (const gchar*) current_node->properties->children->content);
+ list = g_list_append(list, val);
}
-
- xmlXPathFreeObject(xpath_obj);
-
- return list;
}
}
xmlXPathFreeObject(xpath_obj);
- return NULL;
+ return list;
}
@@ -197,84 +200,83 @@ gnac_profiles_xml_engine_get_combo_values(XMLDoc *dx,
xmlXPathObjectPtr xpath_obj;
xpath_obj = gnac_profiles_xml_engine_evaluate_query(expr, dx->xpath_context);
+
if (xpath_obj && !xpath_obj->boolval) {
xmlNodeSetPtr nodes = xpath_obj->nodesetval;
- if (nodes)
- {
- gint nb_element;
- gint i;
- gboolean is_combo = FALSE;
- xmlNode *values_first = NULL;
- xmlNode *values_last = NULL;
- gchar *default_value = NULL;
- gchar *variable_name = NULL;
-
- nb_element = nodes->nodeNr;
- for (i = 0; i < nb_element; i++)
+ if (!nodes) {
+ xmlXPathFreeObject(xpath_obj);
+ return -1;
+ }
+
+ gint i;
+ gboolean is_combo = FALSE;
+ xmlNode *values_first = NULL;
+ xmlNode *values_last = NULL;
+ gchar *default_value = NULL;
+ gchar *variable_name = NULL;
+
+ for (i = 0; i < nodes->nodeNr; i++) {
+ xmlNode *current_node = nodes->nodeTab[i];
+
+ if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "variable-name"))
{
- xmlNode *current_node = nodes->nodeTab[i];
- if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "variable-name"))
- {
- variable_name = g_strdup((gchar*) current_node->children->content);
- }
- else if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "control-type"))
- {
- is_combo = gnac_profiles_xml_engine_str_equal(
- current_node->children->content, "combo");
- }
- else if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "default-value"))
- {
- default_value = g_strdup((gchar*) current_node->children->content);
- }
- else if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "possible-values"))
- {
- values_first = current_node->children->next;
- values_last = current_node->last;
- }
+ variable_name = g_strdup((gchar*) current_node->children->content);
}
-
- if (is_combo && values_first && values_last &&
- default_value && variable_name)
+ else if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "control-type"))
+ {
+ is_combo = gnac_profiles_xml_engine_str_equal(
+ current_node->children->content, "combo");
+ }
+ else if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "default-value"))
{
- gboolean stop = FALSE;
- xmlNode *current_node = values_first;
- GList *values = NULL;
- GList *names = NULL;
+ default_value = g_strdup((gchar*) current_node->children->content);
+ }
+ else if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "possible-values"))
+ {
+ values_first = current_node->children->next;
+ values_last = current_node->last;
+ }
+ }
- do {
+ if (is_combo && values_first && values_last &&
+ default_value && variable_name)
+ {
+ GList *values = NULL;
+ GList *names = NULL;
+
+ xmlNode *current_node = values_first;
+
+ while (current_node && current_node != values_last) {
+ if (!gnac_profiles_xml_engine_is_i12n_node(current_node)) {
+ values = g_list_append(values,
+ g_strdup((gchar *) current_node->properties->children->content));
+
+ names = g_list_append(names, g_strdup(gettext(
+ (const gchar *) current_node->children->content)));
+ }
- if (!gnac_profiles_xml_engine_is_i12n_node(current_node)) {
- values = g_list_append(values,
- g_strdup((gchar*)current_node->properties->children->content));
-
- names = g_list_append(names, g_strdup(gettext(
- (const gchar*) current_node->children->content)));
- }
-
+ current_node = current_node->next;
+
+ if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "text"))
+ {
current_node = current_node->next;
- if (current_node == values_last) {
- stop = TRUE;
- } else if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "text"))
- {
- current_node = current_node->next;
- }
- } while (!stop);
-
- combo_values->values = values;
- combo_values->names = names;
- combo_values->default_value = default_value;
- combo_values->variable_name = variable_name;
+ }
+ }
- xmlXPathFreeObject(xpath_obj);
+ combo_values->values = values;
+ combo_values->names = names;
+ combo_values->default_value = default_value;
+ combo_values->variable_name = variable_name;
- return 0;
- }
+ xmlXPathFreeObject(xpath_obj);
+
+ return 0;
}
}
@@ -292,71 +294,72 @@ gnac_profiles_xml_engine_get_slider_values(XMLDoc *dx,
xmlXPathObjectPtr xpath_obj;
xpath_obj = gnac_profiles_xml_engine_evaluate_query(expr, dx->xpath_context);
+
if (xpath_obj && !xpath_obj->boolval) {
xmlNodeSetPtr nodes = xpath_obj->nodesetval;
-
- if (nodes) {
- gint nb_element;
- gint i;
- gboolean is_slider = FALSE;
- gdouble min = 0.0;
- gdouble max = 0.0;
- gdouble step = 0.0;
- gdouble default_value = 0.0;
- gchar *variable_name = NULL;
-
- nb_element = nodes->nodeNr;
- for (i = 0; i < nb_element; i++) {
- xmlNode *current_node = nodes->nodeTab[i];
- if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "variable-name"))
- {
- variable_name = g_strdup((gchar*) current_node->children->content);
- }
- else if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "control-type"))
- {
- is_slider = gnac_profiles_xml_engine_str_equal(
- current_node->children->content, "slider");
- }
- else if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "default-value"))
- {
- default_value = g_ascii_strtod(
- (const gchar*) current_node->children->content, NULL);
- }
- else if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "min-value"))
- {
- min = g_ascii_strtod(
- (const gchar*) current_node->children->content, NULL);
- }
- else if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "max-value"))
- {
- max = g_ascii_strtod(
- (const gchar*) current_node->children->content, NULL);
- }
- else if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "step-value"))
- {
- step = g_ascii_strtod(
- (const gchar*) current_node->children->content, NULL);
- }
- }
+ if (!nodes) {
+ xmlXPathFreeObject(xpath_obj);
+ return -1;
+ }
- if (is_slider && variable_name)
- {
- slider_values->min = min;
- slider_values->max = max;
- slider_values->step = step;
- slider_values->default_value = default_value;
- slider_values->variable_name = variable_name;
+ gint i;
+ gboolean is_slider = FALSE;
+ gdouble min = 0.0;
+ gdouble max = 0.0;
+ gdouble step = 0.0;
+ gdouble default_value = 0.0;
+ gchar *variable_name = NULL;
- xmlXPathFreeObject(xpath_obj);
+ for (i = 0; i < nodes->nodeNr; i++) {
+ xmlNode *current_node = nodes->nodeTab[i];
- return 0;
+ if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "variable-name"))
+ {
+ variable_name = g_strdup((gchar*) current_node->children->content);
+ }
+ else if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "control-type"))
+ {
+ is_slider = gnac_profiles_xml_engine_str_equal(
+ current_node->children->content, "slider");
+ }
+ else if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "default-value"))
+ {
+ default_value = g_ascii_strtod(
+ (const gchar*) current_node->children->content, NULL);
}
+ else if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "min-value"))
+ {
+ min = g_ascii_strtod(
+ (const gchar*) current_node->children->content, NULL);
+ }
+ else if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "max-value"))
+ {
+ max = g_ascii_strtod(
+ (const gchar*) current_node->children->content, NULL);
+ }
+ else if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "step-value"))
+ {
+ step = g_ascii_strtod(
+ (const gchar*) current_node->children->content, NULL);
+ }
+ }
+
+ if (is_slider && variable_name) {
+ slider_values->min = min;
+ slider_values->max = max;
+ slider_values->step = step;
+ slider_values->default_value = default_value;
+ slider_values->variable_name = variable_name;
+
+ xmlXPathFreeObject(xpath_obj);
+
+ return 0;
}
}
@@ -374,48 +377,49 @@ gnac_profiles_xml_engine_get_check_values(XMLDoc *dx,
xmlXPathObjectPtr xpath_obj;
xpath_obj = gnac_profiles_xml_engine_evaluate_query(expr, dx->xpath_context);
+
if (xpath_obj && !xpath_obj->boolval) {
xmlNodeSetPtr nodes = xpath_obj->nodesetval;
-
- if (nodes) {
- gint nb_element;
- gint i;
- gchar *variable_name = NULL;
- gboolean is_check = FALSE;
- gboolean default_value = FALSE;
-
- nb_element = nodes->nodeNr;
- for (i = 0; i < nb_element; i++) {
- xmlNode *current_node = nodes->nodeTab[i];
- if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "variable-name"))
- {
- variable_name = g_strdup((gchar*) current_node->children->content);
- }
- else if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "control-type"))
- {
- is_check = gnac_profiles_xml_engine_str_equal(
- current_node->children->content, "check");
- }
- else if (gnac_profiles_xml_engine_node_name_equal(current_node,
- "default-value"))
- {
- default_value = gnac_profiles_xml_engine_str_equal(
- current_node->children->content, "true");
- }
- }
+ if (!nodes) {
+ xmlXPathFreeObject(xpath_obj);
+ return -1;
+ }
- if (is_check && variable_name)
- {
- check_values->default_value = default_value;
- check_values->variable_name = variable_name;
+ gint i;
+ gchar *variable_name = NULL;
+ gboolean is_check = FALSE;
+ gboolean default_value = FALSE;
- xmlXPathFreeObject(xpath_obj);
+ for (i = 0; i < nodes->nodeNr; i++) {
+ xmlNode *current_node = nodes->nodeTab[i];
- return 0;
+ if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "variable-name"))
+ {
+ variable_name = g_strdup((gchar*) current_node->children->content);
+ }
+ else if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "control-type"))
+ {
+ is_check = gnac_profiles_xml_engine_str_equal(
+ current_node->children->content, "check");
+ }
+ else if (gnac_profiles_xml_engine_node_name_equal(current_node,
+ "default-value"))
+ {
+ default_value = gnac_profiles_xml_engine_str_equal(
+ current_node->children->content, "true");
}
}
+
+ if (is_check && variable_name) {
+ check_values->default_value = default_value;
+ check_values->variable_name = variable_name;
+
+ xmlXPathFreeObject(xpath_obj);
+
+ return 0;
+ }
}
xmlXPathFreeObject(xpath_obj);
@@ -429,28 +433,33 @@ gnac_profiles_xml_engine_modify_values(XMLDoc *dx,
const gchar *expr,
...)
{
- va_list ap;
- const gchar *value;
- xmlNodeSetPtr nodes;
xmlXPathObjectPtr xpath_obj;
- gint nbElement;
- gint i;
xpath_obj = gnac_profiles_xml_engine_evaluate_query(expr, dx->xpath_context);
+ if (!xpath_obj) return;
- nodes = xpath_obj->nodesetval;
- nbElement = nodes->nodeNr;
+ xmlNodeSetPtr nodes = xpath_obj->nodesetval;
+ if (!nodes) {
+ xmlXPathFreeObject(xpath_obj);
+ return;
+ }
+ const gchar *value;
+ va_list ap;
+
va_start(ap, expr);
value = va_arg(ap, const gchar *);
- for (i = nbElement-1; i >= 0; i--) {
- gchar *value_formatted = gnac_profiles_xml_engine_format_text_to_xml(value);
+ gint i;
+ for (i = nodes->nodeNr-1; i >= 0; i--) {
+ gchar *value_formatted;
+
+ value_formatted = gnac_profiles_xml_engine_format_text_to_xml(value);
xmlNodeSetContent(nodes->nodeTab[i], BAD_CAST value_formatted);
+
g_free(value_formatted);
- if (nodes->nodeTab[i]->type != XML_NAMESPACE_DECL)
- nodes->nodeTab[i] = NULL;
+ if (nodes->nodeTab[i]->type != XML_NAMESPACE_DECL) nodes->nodeTab[i] = NULL;
value = va_arg(ap, const gchar *);
}
@@ -474,11 +483,17 @@ gnac_profiles_xml_engine_add_values(XMLDoc *dx,
xmlChar *properties_indent;
xpath_obj = gnac_profiles_xml_engine_evaluate_query(expr, dx->xpath_context);
+ if (!xpath_obj) return;
nodes = xpath_obj->nodesetval;
+ if (!nodes) {
+ xmlXPathFreeObject(xpath_obj);
+ return;
+ }
+
format_node = nodes->nodeTab[0];
base_indent = format_node->prev->content;
- properties_indent = (xmlChar*) g_strconcat((const gchar*) base_indent,
+ properties_indent = (xmlChar *) g_strconcat((const gchar *) base_indent,
" ", NULL);
xmlAddChild(format_node, xmlNewText(BAD_CAST " "));
@@ -498,11 +513,7 @@ gnac_profiles_xml_engine_add_values(XMLDoc *dx,
}
name = va_arg(ap, const xmlChar *);
- if (name) {
- xmlAddChild(format_node, xmlNewText(properties_indent));
- } else {
- xmlAddChild(format_node, xmlNewText(base_indent));
- }
+ xmlAddChild(format_node, xmlNewText(name ? properties_indent : base_indent));
}
va_end(ap);
@@ -534,11 +545,11 @@ gnac_profiles_xml_engine_save_doc(XMLDoc *dx,
void
gnac_profiles_xml_engine_free_doc_xpath(XMLDoc *doc)
{
- if (doc) {
- xmlXPathFreeContext(doc->xpath_context);
- xmlFreeDoc(doc->doc);
- g_free(doc);
- }
+ if (!doc) return;
+
+ xmlXPathFreeContext(doc->xpath_context);
+ xmlFreeDoc(doc->doc);
+ g_free(doc);
}
diff --git a/src/profiles/gnac-profiles.c b/src/profiles/gnac-profiles.c
index 11eee50..4b7bbd3 100755
--- a/src/profiles/gnac-profiles.c
+++ b/src/profiles/gnac-profiles.c
@@ -164,19 +164,22 @@ gnac_profiles_get_name(void)
void
gnac_profiles_set_current_profile(const gchar *name)
{
+ gboolean found = FALSE;
+ gboolean has_next;
GtkTreeModel *model;
GtkTreeIter iter;
AudioProfileGeneric *profile;
model = gtk_combo_box_get_model(GTK_COMBO_BOX(combo_profile));
- if (gtk_tree_model_get_iter_first(model, &iter)) {
- do {
- gtk_tree_model_get(model, &iter, 1, &profile, -1);
- if (gnac_utils_str_equal(profile->name, name)) {
- gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo_profile), &iter);
- break;
- }
- } while (gtk_tree_model_iter_next(model, &iter));
+ has_next = gtk_tree_model_get_iter_first(model, &iter);
+
+ while (has_next && !found) {
+ gtk_tree_model_get(model, &iter, 1, &profile, -1);
+ if (gnac_utils_str_equal(profile->name, name)) {
+ gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo_profile), &iter);
+ found = TRUE;
+ }
+ has_next = gtk_tree_model_iter_next(model, &iter);
}
}
@@ -206,7 +209,7 @@ gnac_profiles_populate_combo(void)
gtk_widget_set_sensitive(combo_profile, TRUE);
set_active = FALSE;
- for (temp = profiles; temp != NULL; temp = temp->next) {
+ for (temp = profiles; temp; temp = temp->next) {
gchar *name;
gchar *formatted_name;
AudioProfileGeneric *profile;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]