When testing, we need to set the location of the bitmaps our TimezoneMap is
using, so let it try to get the location from the environment.
---
widgets/src/Makefile.am | 4 +++-
widgets/src/TimezoneMap.c | 22 +++++++++++++++-------
widgets/src/tz.c | 17 ++++++++++++++++-
widgets/src/tz.h | 5 +----
4 files changed, 35 insertions(+), 13 deletions(-)
diff --git a/widgets/src/Makefile.am b/widgets/src/Makefile.am
index cef38b5..79afc82 100644
--- a/widgets/src/Makefile.am
+++ b/widgets/src/Makefile.am
@@ -53,12 +53,14 @@ SOURCES = $(GISOURCES) $(NONGISOURCES)
HDRS = $(GIHDRS) $(NONGIHDRS)
-TZMAPDATA = '"$(datadir)/anaconda/tzmapdata"'
+WIDGETSDATA = '"$(datadir)/anaconda"'
+TZMAPDATA = '"tzmapdata"'
noinst_HEADERS = gettext.h intl.h
lib_LTLIBRARIES = libAnacondaWidgets.la
libAnacondaWidgets_la_CFLAGS = $(GTK_CFLAGS) $(GLADEUI_CFLAGS) -Wall -g\
+ -DWIDGETS_DATADIR=$(WIDGETSDATA)\
-DTZMAP_DATADIR=$(TZMAPDATA)
libAnacondaWidgets_la_LIBADD = $(GTK_LIBS) $(GLADEUI_LIBS)
libAnacondaWidgets_la_LDFLAGS = $(LTLIBINTL)
diff --git a/widgets/src/TimezoneMap.c b/widgets/src/TimezoneMap.c
index fb2ff5f..1071390 100644
--- a/widgets/src/TimezoneMap.c
+++ b/widgets/src/TimezoneMap.c
@@ -24,6 +24,7 @@
#include "TimezoneMap.h"
#include <math.h>
#include <string.h>
+#include <stdlib.h>
#include "tz.h"
/**
@@ -73,7 +74,6 @@ enum {
static guint signals[LAST_SIGNAL];
-
static AnacondaTimezoneMapOffset color_codes[] =
{
{-11.0, 43, 0, 0, 255 },
@@ -335,7 +335,8 @@ anaconda_timezone_map_draw (GtkWidget *widget,
cairo_paint (cr);
/* paint hilight */
- file = g_strdup_printf (TZMAP_DATADIR "/timezone_%s.png",
+ file = g_strdup_printf ("%s/" TZMAP_DATADIR "/timezone_%s.png",
+ get_widgets_datadir(),
g_ascii_formatd (buf, sizeof (buf),
"%g", priv->selected_offset));
orig_hilight = gdk_pixbuf_new_from_file (file, &err);
@@ -360,7 +361,10 @@ anaconda_timezone_map_draw (GtkWidget *widget,
}
/* load pin icon */
- pin = gdk_pixbuf_new_from_file (TZMAP_DATADIR "/pin.png", &err);
+
+ file = g_strdup_printf("%s/" TZMAP_DATADIR "/pin.png", get_widgets_datadir());
+ pin = gdk_pixbuf_new_from_file (file, &err);
+ g_free(file);
if (err) {
g_warning ("Could not load pin icon: %s", err->message);
@@ -521,11 +525,13 @@ static void
anaconda_timezone_map_init (AnacondaTimezoneMap *self) {
AnacondaTimezoneMapPrivate *priv;
GError *err = NULL;
+ gchar *file;
priv = self->priv = TIMEZONE_MAP_PRIVATE (self);
- priv->orig_background = gdk_pixbuf_new_from_file (TZMAP_DATADIR "/bg.png",
- &err);
+ file = g_strdup_printf("%s/" TZMAP_DATADIR "/bg.png", get_widgets_datadir());
+ priv->orig_background = gdk_pixbuf_new_from_file (file, &err);
+ g_free(file);
if (!priv->orig_background) {
g_warning ("Could not load background image: %s",
@@ -533,8 +539,10 @@ anaconda_timezone_map_init (AnacondaTimezoneMap *self) {
g_clear_error (&err);
}
- priv->orig_color_map = gdk_pixbuf_new_from_file (TZMAP_DATADIR "/cc.png",
- &err);
+ file = g_strdup_printf("%s/" TZMAP_DATADIR "/cc.png", get_widgets_datadir());
+ priv->orig_color_map = gdk_pixbuf_new_from_file (file, &err);
+ g_free(file);
+
if (!priv->orig_color_map) {
g_warning ("Could not load background image: %s",
(err) ? err->message : "Unknown error");
diff --git a/widgets/src/tz.c b/widgets/src/tz.c
index 5173808..ca42f8c 100644
--- a/widgets/src/tz.c
+++ b/widgets/src/tz.c
@@ -41,6 +41,17 @@ static void sort_locations_by_country (GPtrArray *locations);
static gchar * tz_data_file_get (void);
static void load_backward_tz (TzDB *tz_db);
+gchar *get_widgets_datadir() {
+ gchar *env_value;
+
+ env_value = getenv("ANACONDA_WIDGETS_DATA");
+ if (env_value == NULL)
+ //defined in the widgets/src/Makefile.am
+ return WIDGETS_DATADIR;
+ else
+ return env_value;
+}
+
/* ---------------- *
* Public interface *
* ---------------- */
@@ -381,13 +392,17 @@ load_backward_tz (TzDB *tz_db)
GError *error = NULL;
char **lines, *contents;
guint i;
+ gchar *file;
tz_db->backward = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
- if (g_file_get_contents (BACKWARDDIR "timezones_backward", &contents, NULL, &error) == FALSE) {
+ file = g_strdup_printf ("%s/" TZMAP_DATADIR "/timezones_backward", get_widgets_datadir());
+ if (g_file_get_contents (file, &contents, NULL, &error) == FALSE) {
g_warning ("Failed to load 'backward' file: %s", error->message);
return;
}
+ g_free(file);
+
lines = g_strsplit (contents, "\n", -1);
g_free (contents);
for (i = 0; lines[i] != NULL; i++) {
diff --git a/widgets/src/tz.h b/widgets/src/tz.h
index 7056364..ec8a569 100644
--- a/widgets/src/tz.h
+++ b/widgets/src/tz.h
@@ -22,10 +22,6 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*/
-#ifndef BACKWARDDIR
-#define BACKWARDDIR "/usr/share/anaconda/tzmapdata/"
-#endif
-
#ifndef _E_TZ_H
#define _E_TZ_H
@@ -37,6 +33,7 @@ typedef struct _TzDB TzDB;
typedef struct _TzLocation TzLocation;
typedef struct _TzInfo TzInfo;
+gchar *get_widgets_datadir();
struct _TzDB
{
--
1.7.4.4