[gnac/devel] Code refactoring
- From: BenoÃt Dupasquier <bdupasqu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnac/devel] Code refactoring
- Date: Sun, 30 Oct 2011 11:42:38 +0000 (UTC)
commit f271cbca9b9c832a4810d256d718b276eb8f7955
Author: BenoÃt Dupasquier <bdupasqu src gnome org>
Date: Sun Oct 30 11:41:22 2011 +0000
Code refactoring
src/gnac-prefs.c | 4 +
src/gnac-properties.c | 370 ++++++++++++++++++++--------------
src/gnac-utils.c | 7 +
src/gnac-utils.h | 3 +
src/profiles/gnac-profiles-manager.c | 2 +-
5 files changed, 229 insertions(+), 157 deletions(-)
---
diff --git a/src/gnac-prefs.c b/src/gnac-prefs.c
index 687cf6f..d0f6be5 100644
--- a/src/gnac-prefs.c
+++ b/src/gnac-prefs.c
@@ -70,6 +70,10 @@ gnac_prefs_get_folder_hierarchy_as_str(void);
static gchar *
gnac_prefs_get_rename_pattern_as_str(void);
+static void
+gnac_prefs_select_custom_pattern(GtkComboBox *combo_box);
+
+
static gchar *
gnac_prefs_get_tooltip_patterns(void)
{
diff --git a/src/gnac-properties.c b/src/gnac-properties.c
index 5339e07..83f3b54 100644
--- a/src/gnac-properties.c
+++ b/src/gnac-properties.c
@@ -39,30 +39,6 @@
#include "libgnac-metadata.h"
-static void
-gnac_properties_set_entry(const gchar *entry_name,
- const GValue *entry_value);
-
-static void
-gnac_properties_build_table(void);
-
-static gchar *
-gnac_properties_get_property_from_value(const gchar *name,
- const GValue *value);
-static void
-gnac_properties_set_property(const gchar *name,
- const GValue *value);
-
-static void
-gnac_properties_update_forward_arrow(void);
-
-static void
-gnac_properties_update_backward_arrow(void);
-
-static void
-gnac_properties_reset_spin_if_empty(const gchar *name);
-
-
static GtkBuilder *gnac_properties_builder = NULL;
static GHashTable *gnac_properties_table;
static GtkTreeModel *properties_filter;
@@ -113,12 +89,64 @@ static const gchar *displayed_properties[][2] = {
static LibgnacTags *tags;
+
+static void
+gnac_properties_set_entry(const gchar *entry_name,
+ const GValue *entry_value);
+
+static void
+gnac_properties_build_table(void);
+
+static gchar *
+gnac_properties_get_property_from_value(const gchar *name,
+ const GValue *value);
+
+static void
+gnac_properties_reset_basic_tab(void);
+
+static void
+gnac_properties_reset_properties_tab(void);
+
+static void
+gnac_properties_set_property(const gchar *name,
+ const GValue *value);
+
+static gchar *
+gnac_properties_dup_bitrate(const GValue *value);
+
+static gchar *
+gnac_properties_dup_rate(const GValue *value);
+
+static gchar *
+gnac_properties_dup_framerate(const GValue *value);
+
+static gchar *
+gnac_properties_dup_channels(const GValue *value);
+
+static void
+gnac_properties_update_forward_arrow(void);
+
+static void
+gnac_properties_update_backward_arrow(void);
+
+static void
+gnac_properties_reset_spin_if_empty(const gchar *name);
+
+
+static GObject *
+gnac_properties_get_object(const gchar *object_name)
+{
+ return gtk_builder_get_object(gnac_properties_builder, object_name);
+}
+
+
static GtkWidget *
gnac_properties_get_widget(const gchar *widget_name)
{
- return GTK_WIDGET(gtk_builder_get_object(gnac_properties_builder, widget_name));
+ return GTK_WIDGET(gnac_properties_get_object(widget_name));
}
+
static gboolean
gnac_properties_visible_func(GtkTreeModel *model,
GtkTreeIter *iter,
@@ -134,67 +162,54 @@ static void
gnac_properties_build_table(void)
{
GtkCellRenderer *renderer;
- GtkTreeModel *model;
- GtkWidget *view;
+ GtkTreeModel *model;
+ GtkTreeView *view;
- GtkTreeRowReference *ref = NULL;
- GtkTreeIter iter;
guint i;
- model = GTK_TREE_MODEL(gtk_builder_get_object(gnac_properties_builder,
- "properties_store"));
- view = GTK_WIDGET(gtk_builder_get_object(gnac_properties_builder,
- "properties_view"));
+ model = GTK_TREE_MODEL(gnac_properties_get_object("properties_store"));
+ view = GTK_TREE_VIEW(gnac_properties_get_widget("properties_view"));
- gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(view), PROPERTY_TOOLTIP);
+ gtk_tree_view_set_tooltip_column(view, PROPERTY_TOOLTIP);
properties_filter = gtk_tree_model_filter_new(model, NULL);
gtk_tree_model_filter_set_visible_func(
- GTK_TREE_MODEL_FILTER(properties_filter),
- gnac_properties_visible_func, NULL, NULL);
- gtk_tree_view_set_model(GTK_TREE_VIEW(view), properties_filter);
+ GTK_TREE_MODEL_FILTER(properties_filter),
+ gnac_properties_visible_func, NULL, NULL);
+ gtk_tree_view_set_model(view, properties_filter);
renderer = gtk_cell_renderer_text_new();
g_object_set(G_OBJECT(renderer), "xalign", 1.0, NULL);
g_object_set(G_OBJECT(renderer), "xpad", 6, NULL);
g_object_set(G_OBJECT(renderer), "weight", 700, NULL);
- gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),
- -1,
- "Property",
- renderer,
- "text",
- PROPERTY_NAME,
- NULL);
+ gtk_tree_view_insert_column_with_attributes(view, -1,
+ "Property", renderer, "text", PROPERTY_NAME, NULL);
renderer = gtk_cell_renderer_text_new();
g_object_set(G_OBJECT(renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL);
- gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view),
- -1,
- "Value",
- renderer,
- "text",
- PROPERTY_VALUE,
- NULL);
-
- gnac_properties_table = g_hash_table_new_full(g_str_hash,
- g_str_equal,
- g_free,
- (GDestroyNotify)gtk_tree_row_reference_free);
+ gtk_tree_view_insert_column_with_attributes(view, -1,
+ "Value", renderer, "text", PROPERTY_VALUE, NULL);
+
+ gnac_properties_table = g_hash_table_new_full(g_str_hash,
+ g_str_equal, g_free, (GDestroyNotify)gtk_tree_row_reference_free);
for (i = 0; displayed_properties[i][0]; i++)
{
+ GtkTreeIter iter;
GtkTreePath *path;
+ GtkTreeRowReference *ref;
gtk_list_store_append(GTK_LIST_STORE(model), &iter);
gtk_list_store_set(GTK_LIST_STORE(model), &iter,
- PROPERTY_NAME, gettext(displayed_properties[i][1]),
- PROPERTY_VISIBLE, TRUE, -1);
+ PROPERTY_NAME, gettext(displayed_properties[i][1]),
+ PROPERTY_VISIBLE, TRUE,
+ -1);
path = gtk_tree_model_get_path(model, &iter);
ref = gtk_tree_row_reference_new(model, path);
- g_hash_table_insert(gnac_properties_table,
- g_strdup(displayed_properties[i][0]), ref);
+ g_hash_table_insert(gnac_properties_table,
+ g_strdup(displayed_properties[i][0]), ref);
gtk_tree_path_free(path);
}
@@ -204,18 +219,30 @@ gnac_properties_build_table(void)
static void
gnac_properties_reset_properties(void)
{
- guint i;
+ gnac_properties_reset_basic_tab();
+ gnac_properties_reset_properties_tab();
- /* reset the basic tab */
+ gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(properties_filter));
+}
+
+
+static void
+gnac_properties_reset_basic_tab(void)
+{
+ guint i;
for (i = 0; displayed_tags[i]; i++) {
gnac_properties_set_entry(displayed_tags[i], NULL);
}
+}
+
+static void
+gnac_properties_reset_properties_tab(void)
+{
+ guint i;
for (i = 0; displayed_properties[i][0]; i++) {
gnac_properties_set_property(displayed_properties[i][0], NULL);
}
-
- gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(properties_filter));
}
@@ -233,85 +260,84 @@ gnac_properties_set_property(const gchar *name,
if (!str_value) visible = FALSE;
- model = GTK_TREE_MODEL(gtk_builder_get_object(gnac_properties_builder,
- "properties_store"));
+ model = GTK_TREE_MODEL(gnac_properties_get_object("properties_store"));
ref = g_hash_table_lookup(gnac_properties_table, name);
- if (ref) {
- gchar *desc = NULL;
- gchar *tooltip = NULL;
-
- path = gtk_tree_row_reference_get_path(ref);
- if (path) {
-
- GtkTreeIter iter;
-
- if (gtk_tree_model_get_iter(model, &iter, path))
- {
- gtk_tree_model_get(model, &iter,
- PROPERTY_VALUE, &desc,
- PROPERTY_TOOLTIP, &tooltip,
- -1);
-
- gtk_list_store_set(GTK_LIST_STORE(model), &iter,
- PROPERTY_VALUE, str_value,
- PROPERTY_VISIBLE, visible,
- -1);
-
- if (LIBGNAC_METADATA_TAG_IS_LOCATION(name) ||
- LIBGNAC_METADATA_TAG_IS_FILENAME(name))
- {
- gtk_list_store_set(GTK_LIST_STORE(model), &iter,
- PROPERTY_TOOLTIP, str_value,
- -1);
- }
-
- g_free(desc);
- g_free(tooltip);
- }
- }
+ if (!ref) {
+ return;
+ }
+
+ path = gtk_tree_row_reference_get_path(ref);
+ if (!path) {
g_free(str_value);
- gtk_tree_path_free(path);
- gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(properties_filter));
+ return;
+ }
+
+ GtkTreeIter iter;
+
+ if (gtk_tree_model_get_iter(model, &iter, path))
+ {
+ gtk_list_store_set(GTK_LIST_STORE(model), &iter,
+ PROPERTY_VALUE, str_value,
+ PROPERTY_VISIBLE, visible,
+ -1);
+
+ if (LIBGNAC_METADATA_TAG_IS_LOCATION(name) ||
+ LIBGNAC_METADATA_TAG_IS_FILENAME(name))
+ {
+ gtk_list_store_set(GTK_LIST_STORE(model), &iter,
+ PROPERTY_TOOLTIP, str_value, -1);
+ }
+ }
+
+ g_free(str_value);
+ gtk_tree_path_free(path);
+ gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(properties_filter));
+}
+
+
+static void
+gnac_properties_reset_field(GtkWidget *widget)
+{
+ if (GTK_IS_ENTRY(widget)) {
+ gtk_entry_set_text(GTK_ENTRY(widget), "");
+ } else if (GTK_IS_IMAGE(widget)) {
+ gtk_image_clear(GTK_IMAGE(widget));
}
}
+static void
+gnac_properties_set_image(GtkWidget *widget,
+ const GValue *value)
+{
+ GdkPixbuf *pixbuf = g_value_get_object(value);
+ pixbuf = gnac_utils_scale_pixbuf(pixbuf, 96, 96);
+ pixbuf = gnac_utils_add_border_to_pixbuf(pixbuf);
+ gtk_image_set_from_pixbuf(GTK_IMAGE(widget), pixbuf);
+}
+
+
static void
gnac_properties_set_entry(const gchar *entry_name,
const GValue *entry_value)
{
- GtkWidget *entry = NULL;
+ GtkWidget *widget = NULL;
gdouble value;
- entry = GTK_WIDGET(gtk_builder_get_object(gnac_properties_builder, entry_name));
- if (!entry)
- {
+ widget = gnac_properties_get_widget(entry_name);
+ if (!widget) {
gnac_properties_set_property(entry_name, entry_value);
return;
}
- /* if there is no value for this field, reset it */
- if (!entry_value)
- {
- if (GTK_IS_ENTRY(entry))
- {
- gtk_entry_set_text(GTK_ENTRY(entry), "");
- }
- else if (GTK_IS_IMAGE(entry))
- {
- /* TODO look for a cover in the current directory?
- * (folder.jpg, cover.jpg, front.jpg, ...) */
- gtk_image_clear(GTK_IMAGE(entry));
- }
+ if (!entry_value) {
+ gnac_properties_reset_field(widget);
return;
}
if (LIBGNAC_METADATA_TAG_IS_IMAGE(entry_name))
{
- GdkPixbuf *pixbuf = g_value_get_object(entry_value);
- pixbuf = gnac_utils_scale_pixbuf(pixbuf, 96, 96);
- pixbuf = gnac_utils_add_border_to_pixbuf(pixbuf);
- gtk_image_set_from_pixbuf(GTK_IMAGE(entry), pixbuf);
+ gnac_properties_set_image(widget, entry_value);
return;
}
@@ -319,19 +345,18 @@ gnac_properties_set_entry(const gchar *entry_name,
switch (type) {
case G_TYPE_STRING:
- gtk_entry_set_text(GTK_ENTRY(entry),
- g_value_get_string(entry_value));
+ gtk_entry_set_text(GTK_ENTRY(widget), g_value_get_string(entry_value));
return;
case G_TYPE_UINT:
value = (gdouble) g_value_get_uint(entry_value);
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(entry), value);
- gtk_spin_button_set_range(GTK_SPIN_BUTTON(entry), value, value);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), value);
+ gtk_spin_button_set_range(GTK_SPIN_BUTTON(widget), value, value);
return;
default:
- gtk_entry_set_text(GTK_ENTRY(entry),
- g_strdup_value_contents(entry_value));
+ gtk_entry_set_text(GTK_ENTRY(widget),
+ g_strdup_value_contents(entry_value));
libgnac_debug("%s has an unknown type: %s",
entry_name, g_type_name(type));
return;
@@ -351,17 +376,7 @@ gnac_properties_get_property_from_value(const gchar *name,
}
if (LIBGNAC_METADATA_TAG_IS_BITRATE(name))
{
- guint val = g_value_get_uint(value);
- if (val == 0) return NULL;
- /* convert the bitrate from bps to kbps */
- val /= 1000;
- if (libgnac_metadata_tag_exists(tags, GNAC_TAG_VBR)) {
- /* Translators: variable bitrate */
- return g_strdup_printf(_("~%d kbps (VBR)"), val);
- } else {
- /* Translators: bitrate */
- return g_strdup_printf(_("%d kbps"), val);
- }
+ return gnac_properties_dup_bitrate(value);
}
if (LIBGNAC_METADATA_TAG_IS_FILE_SIZE(name))
{
@@ -373,24 +388,15 @@ gnac_properties_get_property_from_value(const gchar *name,
}
if (LIBGNAC_METADATA_TAG_IS_RATE(name))
{
- gint val = g_value_get_int(value);
- if (val == 0) return NULL;
- /* Translators: rate */
- else return g_strdup_printf(_("%d Hz"), val);
+ return gnac_properties_dup_rate(value);
}
if (LIBGNAC_METADATA_TAG_IS_FRAMERATE(name))
{
- gfloat val = g_value_get_float(value);
- if (val == 0) return NULL;
- /* Translators: framerate */
- else return g_strdup_printf(_("%.3lf fps"), val);
+ return gnac_properties_dup_framerate(value);
}
if (LIBGNAC_METADATA_TAG_IS_CHANNELS(name))
{
- gint val = g_value_get_int(value);
- if (val == 0) return NULL;
- else return g_strdup_printf("%d%s", val,
- val == 1 ? " (mono)" : val == 2 ? " (stereo)" : "");
+ return gnac_properties_dup_channels(value);
}
if (LIBGNAC_METADATA_TAG_IS_TRACK_GAIN(name) ||
LIBGNAC_METADATA_TAG_IS_TRACK_PEAK(name))
@@ -415,12 +421,65 @@ gnac_properties_get_property_from_value(const gchar *name,
}
+static gchar *
+gnac_properties_dup_bitrate(const GValue *value)
+{
+ guint val = g_value_get_uint(value);
+ if (val == 0) return NULL;
+
+ val = gnac_utils_convert_bps_to_kbps(val);
+
+ if (libgnac_metadata_tag_exists(tags, GNAC_TAG_VBR)) {
+ /* Translators: variable bitrate */
+ return g_strdup_printf(_("~%d kbps (VBR)"), val);
+ } else {
+ /* Translators: bitrate */
+ return g_strdup_printf(_("%d kbps"), val);
+ }
+}
+
+
+static gchar *
+gnac_properties_dup_rate(const GValue *value)
+{
+ gint val = g_value_get_int(value);
+ if (val == 0) return NULL;
+
+ /* Translators: rate */
+ return g_strdup_printf(_("%d Hz"), val);
+}
+
+
+static gchar *
+gnac_properties_dup_framerate(const GValue *value)
+{
+ gfloat val = g_value_get_float(value);
+ if (val == 0) return NULL;
+
+ /* Translators: framerate */
+ return g_strdup_printf(_("%.3lf fps"), val);
+}
+
+
+static gchar *
+gnac_properties_dup_channels(const GValue *value)
+{
+ gint val = g_value_get_int(value);
+ if (val == 0) return NULL;
+
+ /* Translators: channels */
+ return g_strdup_printf("%d%s", val,
+ val == 1 ? _(" (mono)") : val == 2 ? _(" (stereo)") : "");
+}
+
+
GtkWidget *
gnac_properties_window_new(void)
{
GtkWidget *properties_window;
- gnac_properties_builder = gnac_utils_create_gtk_builder(PKGDATADIR "/gnac-properties-window.xml");
+ gnac_properties_builder = gnac_utils_create_gtk_builder(
+ PKGDATADIR "/gnac-properties-window.xml");
gnac_properties_build_table();
@@ -428,8 +487,9 @@ gnac_properties_window_new(void)
backward_arrow = gnac_properties_get_widget("backward_btn");
forward_arrow = gnac_properties_get_widget("forward_btn");
gtk_window_set_transient_for(GTK_WINDOW(properties_window),
- GTK_WINDOW(gnac_ui_get_widget("main_window")));
- gtk_window_set_type_hint(GTK_WINDOW(properties_window), GDK_WINDOW_TYPE_HINT_DIALOG);
+ GTK_WINDOW(gnac_ui_get_widget("main_window")));
+ gtk_window_set_type_hint(GTK_WINDOW(properties_window),
+ GDK_WINDOW_TYPE_HINT_DIALOG);
return properties_window;
}
@@ -519,11 +579,9 @@ gnac_properties_window_show(void)
if (gnac_file_list_get(current_ref, &file_uri))
{
GFile *uri;
-
uri = g_file_new_for_uri(file_uri);
gnac_properties_update_display(uri);
g_object_unref(uri);
-
g_free(file_uri);
}
}
diff --git a/src/gnac-utils.c b/src/gnac-utils.c
index 5ecf023..48b72ff 100644
--- a/src/gnac-utils.c
+++ b/src/gnac-utils.c
@@ -93,6 +93,13 @@ gnac_utils_format_duration_for_display(guint64 duration)
}
+guint
+gnac_utils_convert_bps_to_kbps(guint value)
+{
+ return value/1000;
+}
+
+
guint64
gnac_utils_moving_avg_add_sample(guint64 sample)
{
diff --git a/src/gnac-utils.h b/src/gnac-utils.h
index 7e82f00..2e63908 100644
--- a/src/gnac-utils.h
+++ b/src/gnac-utils.h
@@ -37,6 +37,9 @@ gnac_utils_get_display_name(const gchar *uri,
gchar *
gnac_utils_format_duration_for_display(guint64 duration);
+guint
+gnac_utils_convert_bps_to_kbps(guint value);
+
guint64
gnac_utils_moving_avg_add_sample(guint64 sample);
diff --git a/src/profiles/gnac-profiles-manager.c b/src/profiles/gnac-profiles-manager.c
index 19397e0..d8acd37 100644
--- a/src/profiles/gnac-profiles-manager.c
+++ b/src/profiles/gnac-profiles-manager.c
@@ -161,7 +161,7 @@ static GtkWidget *
gnac_profiles_mgr_get_widget(const gchar *widget_name)
{
GtkWidget *widget;
- widget = GTK_WIDGET(gtk_builder_get_object(profiles_mgr_builder, widget_name));
+ widget = GTK_WIDGET(gnac_profiles_mgr_get_object(widget_name));
return widget;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]