[libchamplain/libchamplain-0-4] Add user configurable additional license text to view
- From: Pierre-Luc Beaudoin <plbeaudoin src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [libchamplain/libchamplain-0-4] Add user configurable additional license text to view
- Date: Tue, 5 Jan 2010 19:02:51 +0000 (UTC)
commit ed2d84af6726559cd569d6e02ad440084a4e601b
Author: Pierre-Luc Beaudoin <pierre-luc pierlux com>
Date: Mon Jan 4 18:52:02 2010 -0500
Add user configurable additional license text to view
champlain/champlain-view.c | 94 ++++++++++++++++++++++++++++++++++++++++---
champlain/champlain-view.h | 2 +
2 files changed, 89 insertions(+), 7 deletions(-)
---
diff --git a/champlain/champlain-view.c b/champlain/champlain-view.c
index 33e613a..5b9268f 100644
--- a/champlain/champlain-view.c
+++ b/champlain/champlain-view.c
@@ -93,6 +93,7 @@ enum
PROP_SCROLL_MODE,
PROP_KEEP_CENTER_ON_RESIZE,
PROP_SHOW_LICENSE,
+ PROP_LICENSE_EXTRA,
PROP_ZOOM_ON_DOUBLE_CLICK,
PROP_STATE,
PROP_SHOW_SCALE,
@@ -158,6 +159,7 @@ struct _ChamplainViewPrivate
gboolean show_license;
ClutterActor *license_actor; /* Contains the license info */
+ gchar *license_text; /* Extra license text */
ClutterActor *scale_actor;
gboolean show_scale;
@@ -622,6 +624,9 @@ champlain_view_get_property (GObject *object,
case PROP_SHOW_LICENSE:
g_value_set_boolean (value, priv->show_license);
break;
+ case PROP_LICENSE_EXTRA:
+ g_value_set_string (value, priv->license_text);
+ break;
case PROP_ZOOM_ON_DOUBLE_CLICK:
g_value_set_boolean (value, priv->zoom_on_double_click);
break;
@@ -685,6 +690,9 @@ champlain_view_set_property (GObject *object,
case PROP_SHOW_LICENSE:
champlain_view_set_show_license (view, g_value_get_boolean (value));
break;
+ case PROP_LICENSE_EXTRA:
+ champlain_view_set_license_text (view, g_value_get_string (value));
+ break;
case PROP_ZOOM_ON_DOUBLE_CLICK:
champlain_view_set_zoom_on_double_click (view, g_value_get_boolean (value));
break;
@@ -928,6 +936,23 @@ champlain_view_class_init (ChamplainViewClass *champlainViewClass)
TRUE, CHAMPLAIN_PARAM_READWRITE));
/**
+ * ChamplainView:license-text:
+ *
+ * Sets additional text to be displayed in the license area. The map's
+ * license will be added below it. Your text can have multiple line, just use
+ * "\n" in between.
+ *
+ * Since: 0.4.3
+ */
+ g_object_class_install_property (object_class,
+ PROP_LICENSE_EXTRA,
+ g_param_spec_string ("license-text",
+ "Additional license",
+ "Additional license text",
+ "",
+ CHAMPLAIN_PARAM_READWRITE));
+
+ /**
* ChamplainView:zoom-on-double-click:
*
* Should the view zoom in and recenter when the user double click on the map.
@@ -1234,6 +1259,7 @@ champlain_view_init (ChamplainView *view)
priv->zoom_on_double_click = TRUE;
priv->show_license = TRUE;
priv->license_actor = NULL;
+ priv->license_text = NULL;
priv->stage = g_object_ref (clutter_group_new ());
priv->scroll_mode = CHAMPLAIN_SCROLL_MODE_PUSH;
priv->viewport_size.x = 0;
@@ -1412,23 +1438,37 @@ static void
update_license (ChamplainView *view)
{
ChamplainViewPrivate *priv = view->priv;
+ gchar *license;
if (!priv->license_actor)
{
- priv->license_actor = g_object_ref (clutter_text_new_with_text ("sans 8",
- champlain_map_source_get_license (priv->map_source)));
+ priv->license_actor = g_object_ref (clutter_text_new ());
+ clutter_text_set_font_name (CLUTTER_TEXT (priv->license_actor), "sans 8");
+ clutter_actor_set_opacity (priv->license_actor, 128);
+ clutter_container_add_actor (CLUTTER_CONTAINER (priv->stage),
+ priv->license_actor);
+ clutter_actor_raise_top (priv->license_actor);
}
+ if (priv->license_text)
+ license = g_strjoin ("\n",
+ priv->license_text,
+ champlain_map_source_get_license (priv->map_source),
+ NULL);
+ else
+ license = g_strdup (champlain_map_source_get_license (priv->map_source));
+
+ clutter_text_set_text (CLUTTER_TEXT (priv->license_actor), license);
+
if (priv->show_license)
{
- clutter_actor_set_opacity (priv->license_actor, 128);
clutter_actor_show (priv->license_actor);
-
- clutter_container_add_actor (CLUTTER_CONTAINER (priv->stage),
- priv->license_actor);
- clutter_actor_raise_top (priv->license_actor);
license_set_position (view);
}
+ else
+ clutter_actor_hide (priv->license_actor);
+
+ g_free (license);
}
static gboolean
@@ -2436,6 +2476,28 @@ champlain_view_set_keep_center_on_resize (ChamplainView *view,
}
/**
+* champlain_view_set_license_text:
+* @view: a #ChamplainView
+* @text: a license
+*
+* Show the additional license text on the map view. The text will preceed the
+* map's licence when displayed. Use "\n" to separate the lines.
+*
+* Since: 0.4.3
+*/
+void
+champlain_view_set_license_text (ChamplainView *view,
+ const gchar *text)
+{
+ g_return_if_fail (CHAMPLAIN_IS_VIEW (view));
+
+ ChamplainViewPrivate *priv = view->priv;
+
+ priv->license_text = g_strdup (text);
+ update_license (view);
+}
+
+/**
* champlain_view_set_show_license:
* @view: a #ChamplainView
* @value: a #gboolean
@@ -2890,6 +2952,24 @@ champlain_view_get_show_license (ChamplainView *view)
}
/**
+ * champlain_view_get_license_text:
+ * @view: The view
+ *
+ * Returns: the additional license text
+ *
+ * Since: 0.4.3
+ */
+const gchar *
+champlain_view_get_license_text (ChamplainView *view)
+{
+ g_return_val_if_fail (CHAMPLAIN_IS_VIEW (view), FALSE);
+
+ ChamplainViewPrivate *priv = view->priv;
+ return priv->license_text;
+}
+
+
+/**
* champlain_view_get_show_scale:
* @view: The view
*
diff --git a/champlain/champlain-view.h b/champlain/champlain-view.h
index 3e422e8..5324b07 100644
--- a/champlain/champlain-view.h
+++ b/champlain/champlain-view.h
@@ -113,6 +113,7 @@ void champlain_view_set_scroll_mode (ChamplainView *view,
void champlain_view_set_keep_center_on_resize (ChamplainView *view,
gboolean value);
void champlain_view_set_show_license (ChamplainView *view, gboolean value);
+void champlain_view_set_license_text (ChamplainView *view, const gchar *text);
void champlain_view_set_show_scale (ChamplainView *view, gboolean value);
void champlain_view_set_scale_unit (ChamplainView *view, ChamplainUnit unit);
void champlain_view_set_max_scale_width (ChamplainView *view, guint value);
@@ -143,6 +144,7 @@ gdouble champlain_view_get_decel_rate (ChamplainView *view);
ChamplainScrollMode champlain_view_get_scroll_mode (ChamplainView *view);
gboolean champlain_view_get_keep_center_on_resize (ChamplainView *view);
gboolean champlain_view_get_show_license (ChamplainView *view);
+const gchar * champlain_view_get_license_text (ChamplainView *view);
gboolean champlain_view_get_show_scale (ChamplainView *view);
guint champlain_view_get_max_scale_width (ChamplainView *view);
ChamplainUnit champlain_view_get_scale_unit (ChamplainView *view);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]