Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/cut-n-paste/recent-files/egg-recent-view-uimanager.c
diff options
context:
space:
mode:
authorNickolay V. Shmyrev <nshmyrev@src.gnome.org>2006-01-17 21:53:17 (GMT)
committer Nickolay V. Shmyrev <nshmyrev@src.gnome.org>2006-01-17 21:53:17 (GMT)
commitc7bae2c213369b853bb420e5cf09d192f38f8cce (patch)
tree7dcbe628e1289f4297214ae3f1b71eed8409c5a9 /cut-n-paste/recent-files/egg-recent-view-uimanager.c
parentaf71939e1812703087b8f9e4b39a3f79aa97f5a3 (diff)
Update from libegg.
* cut-n-paste/recent-files/egg-recent-item.c: (get_uri_shortname_for_display), (egg_recent_item_get_short_name): * cut-n-paste/recent-files/egg-recent-model.c: (parse_info_init), (parse_info_free), (valid_element), (start_element_handler), (end_element_handler), (text_handler), (egg_recent_model_filter), (egg_recent_model_monitor_cb), (egg_recent_model_poll_timeout), (egg_recent_model_monitor), (egg_recent_model_read), (egg_recent_model_open_file), (egg_recent_model_lock_file), (egg_recent_model_unlock_file), (egg_recent_model_finalize), (egg_recent_model_set_property), (egg_recent_model_class_init), (egg_recent_model_init), (egg_recent_model_add_full), (egg_recent_model_delete), (egg_recent_model_get_list), (egg_recent_model_clear), (egg_recent_model_clear_mime_filter), (egg_recent_model_set_filter_mime_types), (egg_recent_model_clear_group_filter), (egg_recent_model_set_filter_groups), (egg_recent_model_clear_scheme_filter), (egg_recent_model_set_filter_uri_schemes), (egg_recent_model_remove_expired): * cut-n-paste/recent-files/egg-recent-util.c: (egg_recent_util_get_icon): * cut-n-paste/recent-files/egg-recent-util.h: * cut-n-paste/recent-files/egg-recent-view-uimanager.c: (connect_proxy_cb), (egg_recent_view_uimanager_set_list), (egg_recent_view_uimanager_set_empty_list), (model_changed_cb), (egg_recent_view_uimanager_set_property), (egg_recent_view_uimanager_get_property), (egg_recent_view_uimanager_class_init), (egg_recent_view_uimanager_init), (egg_recent_view_uimanager_set_label_width), (egg_recent_view_uimanager_get_label_width): * cut-n-paste/recent-files/egg-recent-view-uimanager.h: * cut-n-paste/toolbar-editor/egg-editable-toolbar.c: * cut-n-paste/toolbar-editor/egg-editable-toolbar.h: * cut-n-paste/toolbar-editor/egg-toolbar-editor.c: * cut-n-paste/toolbar-editor/egg-toolbars-model.c: * cut-n-paste/toolbar-editor/egg-toolbars-model.h: Update from libegg.
Diffstat (limited to 'cut-n-paste/recent-files/egg-recent-view-uimanager.c')
-rw-r--r--cut-n-paste/recent-files/egg-recent-view-uimanager.c179
1 files changed, 148 insertions, 31 deletions
diff --git a/cut-n-paste/recent-files/egg-recent-view-uimanager.c b/cut-n-paste/recent-files/egg-recent-view-uimanager.c
index ac0b852..006112b 100644
--- a/cut-n-paste/recent-files/egg-recent-view-uimanager.c
+++ b/cut-n-paste/recent-files/egg-recent-view-uimanager.c
@@ -1,6 +1,6 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/**
+/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
@@ -43,7 +43,14 @@
#define EGG_RECENT_ACTION "EggRecentFile"
#define EGG_RECENT_SEPARATOR (NULL)
-#define LABEL_WIDTH_CHARS 32
+#ifndef EGG_COMPILATION
+#include <glib/gi18n.h>
+#else
+#define _(x) (x)
+#define N_(x) (x)
+#endif
+
+#define DEFAULT_LABEL_WIDTH_CHARS 30
struct _EggRecentViewUIManager {
GObject parent_instance;
@@ -73,6 +80,8 @@ struct _EggRecentViewUIManager {
EggRecentModel *model;
GConfClient *client;
GtkIconSize icon_size;
+
+ gint label_width;
};
@@ -94,12 +103,30 @@ enum {
PROP_UIMANAGER,
PROP_PATH,
PROP_SHOW_ICONS,
- PROP_SHOW_NUMBERS
+ PROP_SHOW_NUMBERS,
+ PROP_LABEL_WIDTH
};
static guint view_signals[LAST_SIGNAL] = { 0 };
static void
+connect_proxy_cb (GtkActionGroup *action_group,
+ GtkAction *action,
+ GtkWidget *proxy,
+ EggRecentViewUIManager *view)
+{
+ if (GTK_IS_MENU_ITEM (proxy))
+ {
+ GtkWidget *label;
+
+ label = GTK_BIN (proxy)->child;
+
+ gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
+ gtk_label_set_max_width_chars (GTK_LABEL (label), view->label_width);
+ }
+}
+
+static void
egg_recent_view_uimanager_clear (EggRecentViewUIManager *view)
{
if (view->merge_id != 0) {
@@ -117,23 +144,6 @@ egg_recent_view_uimanager_clear (EggRecentViewUIManager *view)
}
static void
-connect_proxy_cb (GtkActionGroup *action_group,
- GtkAction *action,
- GtkWidget *proxy)
-{
- if (GTK_IS_MENU_ITEM (proxy))
- {
- GtkLabel *label;
-
- label = (GtkLabel *) ((GtkBin *) proxy)->child;
-
- gtk_label_set_ellipsize (label, PANGO_ELLIPSIZE_END);
- gtk_label_set_max_width_chars (label, LABEL_WIDTH_CHARS);
- }
-}
-
-
-static void
egg_recent_view_uimanager_set_list (EggRecentViewUIManager *view, GList *list)
{
GList *scan;
@@ -152,7 +162,8 @@ egg_recent_view_uimanager_set_list (EggRecentViewUIManager *view, GList *list)
view->action_group = gtk_action_group_new (group);
g_signal_connect (view->action_group, "connect-proxy",
G_CALLBACK (connect_proxy_cb), view);
- gtk_ui_manager_insert_action_group (view->uimanager, view->action_group, -1);
+ gtk_ui_manager_insert_action_group (view->uimanager,
+ view->action_group, -1);
g_free (group);
}
@@ -190,7 +201,10 @@ egg_recent_view_uimanager_set_list (EggRecentViewUIManager *view, GList *list)
if (view->tooltip_func != NULL)
tooltip = (*view->tooltip_func) (item, view->tooltip_func_data);
- basename = g_path_get_basename (uri);
+ if (!tooltip)
+ tooltip = g_strdup_printf (_("Open '%s'"), uri);
+
+ basename = egg_recent_item_get_short_name (item);
escaped = egg_recent_util_escape_underlines (basename);
g_free (basename);
g_free (uri);
@@ -260,6 +274,84 @@ egg_recent_view_uimanager_set_list (EggRecentViewUIManager *view, GList *list)
}
static void
+egg_recent_view_uimanager_set_empty_list (EggRecentViewUIManager *view)
+{
+ gboolean is_embedded;
+
+ g_return_if_fail (view);
+
+ egg_recent_view_uimanager_clear (view);
+
+ if (view->merge_id == 0)
+ view->merge_id = gtk_ui_manager_new_merge_id (view->uimanager);
+
+ if (view->action_group == NULL) {
+ gchar *group = g_strdup_printf ("EggRecentActions%u",
+ view->merge_id);
+ view->action_group = gtk_action_group_new (group);
+ g_signal_connect (view->action_group, "connect-proxy",
+ G_CALLBACK (connect_proxy_cb), view);
+ gtk_ui_manager_insert_action_group (view->uimanager,
+ view->action_group, -1);
+ g_free (group);
+ }
+
+ if (view->leading_sep) {
+ gchar *sep_action = g_strdup_printf ("EggRecentLeadingSeparator%u",
+ view->merge_id);
+ gtk_ui_manager_add_ui (view->uimanager,
+ view->merge_id,
+ view->path,
+ sep_action,
+ EGG_RECENT_SEPARATOR,
+ GTK_UI_MANAGER_AUTO,
+ FALSE);
+ g_free (sep_action);
+ }
+
+ is_embedded = (view->leading_sep && view->trailing_sep);
+
+ if (is_embedded) {
+ GtkAction *action;
+ gchar *name;
+
+ name = g_strdup_printf (EGG_RECENT_NAME_PREFIX "%u-0", view->merge_id);
+
+ action = g_object_new (GTK_TYPE_ACTION,
+ "name", name,
+ "label", _("Empty"),
+ "sensitive", FALSE,
+ NULL);
+
+ gtk_action_group_add_action (view->action_group, action);
+ g_object_unref (action);
+
+ gtk_ui_manager_add_ui (view->uimanager,
+ view->merge_id,
+ view->path,
+ name,
+ name,
+ GTK_UI_MANAGER_AUTO,
+ FALSE);
+
+ g_free (name);
+ }
+
+ if (view->trailing_sep) {
+ gchar *sep_action = g_strdup_printf ("EggRecentTrailingSeparator%u",
+ view->merge_id);
+ gtk_ui_manager_add_ui (view->uimanager,
+ view->merge_id,
+ view->path,
+ sep_action,
+ EGG_RECENT_SEPARATOR,
+ GTK_UI_MANAGER_AUTO,
+ FALSE);
+ g_free (sep_action);
+ }
+}
+
+static void
model_changed_cb (EggRecentModel *model,
GList *list,
EggRecentViewUIManager *view)
@@ -267,7 +359,8 @@ model_changed_cb (EggRecentModel *model,
if (list != NULL)
egg_recent_view_uimanager_set_list (view, list);
else
- egg_recent_view_uimanager_clear (view);
+ egg_recent_view_uimanager_set_empty_list (view);
+
gtk_ui_manager_ensure_update (view->uimanager);
}
@@ -349,6 +442,9 @@ egg_recent_view_uimanager_set_property (GObject *object,
case PROP_SHOW_NUMBERS:
egg_recent_view_uimanager_show_numbers (view, g_value_get_boolean (value));
break;
+ case PROP_LABEL_WIDTH:
+ egg_recent_view_uimanager_set_label_width (view, g_value_get_int (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -376,6 +472,9 @@ egg_recent_view_uimanager_get_property (GObject *object,
case PROP_SHOW_NUMBERS:
g_value_set_boolean (value, view->show_numbers);
break;
+ case PROP_LABEL_WIDTH:
+ g_value_set_int (value, view->label_width);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -474,6 +573,16 @@ egg_recent_view_uimanager_class_init (EggRecentViewUIManagerClass * klass)
"Whether or not to show numbers",
TRUE,
G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
+ PROP_LABEL_WIDTH,
+ g_param_spec_int ("label-width",
+ "Label Width",
+ "The desired width of the menu label, in characters",
+ -1,
+ G_MAXINT,
+ DEFAULT_LABEL_WIDTH_CHARS,
+ G_PARAM_READWRITE));
+
klass->activate = NULL;
}
@@ -549,6 +658,7 @@ egg_recent_view_uimanager_init (EggRecentViewUIManager * view)
view->tooltip_func_data = NULL;
view->icon_size = GTK_ICON_SIZE_MENU;
+ view->label_width = DEFAULT_LABEL_WIDTH_CHARS;
}
void
@@ -664,6 +774,21 @@ egg_recent_view_uimanager_get_path (EggRecentViewUIManager *view)
}
void
+egg_recent_view_uimanager_set_label_width (EggRecentViewUIManager *view,
+ gint chars)
+{
+ g_return_if_fail (EGG_IS_RECENT_VIEW_UIMANAGER (view));
+ view->label_width = chars;
+}
+
+gint
+egg_recent_view_uimanager_get_label_width (EggRecentViewUIManager *view)
+{
+ g_return_val_if_fail (EGG_IS_RECENT_VIEW_UIMANAGER (view), DEFAULT_LABEL_WIDTH_CHARS);
+ return view->label_width;
+}
+
+void
egg_recent_view_uimanager_set_action_func (EggRecentViewUIManager *view,
GCallback callback,
gpointer user_data)
@@ -707,14 +832,6 @@ egg_recent_view_uimanager_new (GtkUIManager *uimanager,
return EGG_RECENT_VIEW_UIMANAGER (view);
}
-/**
- * egg_recent_view_uimanager_get_type:
- * @:
- *
- * This returns a GType representing a EggRecentViewUIManager object.
- *
- * Returns: a GType
- */
GType
egg_recent_view_uimanager_get_type (void)
{