[Goodies-commits] r7145 - in gigolo/trunk: . src
Enrico Troeger
enrico at xfce.org
Thu Apr 9 14:30:18 CEST 2009
Author: enrico
Date: 2009-04-09 12:30:18 +0000 (Thu, 09 Apr 2009)
New Revision: 7145
Modified:
gigolo/trunk/ChangeLog
gigolo/trunk/TODO
gigolo/trunk/src/backendgvfs.c
gigolo/trunk/src/backendgvfs.h
gigolo/trunk/src/bookmarkdialog.c
gigolo/trunk/src/bookmarkeditdialog.c
gigolo/trunk/src/browsenetworkpanel.c
gigolo/trunk/src/common.h
gigolo/trunk/src/main.c
gigolo/trunk/src/window.c
gigolo/trunk/src/window.h
Log:
Rework the whole network browsing code:
Since GVfs doesn't auto-mount smb:// anymore by default, we need to mount it manually if necessary in order to be able to use it.
Modified: gigolo/trunk/ChangeLog
===================================================================
--- gigolo/trunk/ChangeLog 2009-04-08 21:15:10 UTC (rev 7144)
+++ gigolo/trunk/ChangeLog 2009-04-09 12:30:18 UTC (rev 7145)
@@ -1,3 +1,13 @@
+2009-04-09 Enrico Tröger <enrico(at)xfce(dot)org>
+
+ * src/bookmarkdialog.c, src/window.c, src/window.h, src/backendgvfs.c,
+ src/backendgvfs.h, src/main.c, src/bookmarkeditdialog.c,
+ src/browsenetworkpanel.c, src/common.h:
+ Rework the whole network browsing code:
+ Since GVfs doesn't auto-mount smb:// anymore by default, we need
+ to mount it manually if necessary in order to be able to use it.
+
+
2009-04-06 Enrico Tröger <enrico(at)xfce(dot)org>
* src/browsenetworkpanel.c:
Modified: gigolo/trunk/TODO
===================================================================
--- gigolo/trunk/TODO 2009-04-08 21:15:10 UTC (rev 7144)
+++ gigolo/trunk/TODO 2009-04-09 12:30:18 UTC (rev 7145)
@@ -1,2 +1,5 @@
- better program icon
- libnotify - to notify about new mounts or disappeared mounts (ftp timeout, etc.)
+- split GigoloApp from GigoloWindow
+- Samba mounts with set credentials can fail
+
Modified: gigolo/trunk/src/backendgvfs.c
===================================================================
--- gigolo/trunk/src/backendgvfs.c 2009-04-08 21:15:10 UTC (rev 7144)
+++ gigolo/trunk/src/backendgvfs.c 2009-04-09 12:30:18 UTC (rev 7145)
@@ -42,11 +42,20 @@
{
MOUNTS_CHANGED,
OPERATION_FAILED,
+ BROWSE_NETWORK_FINISHED,
LAST_SIGNAL
};
static guint signals[LAST_SIGNAL];
+enum
+{
+ BROWSE_MODE_INVALID,
+ BROWSE_MODE_DOMAINS,
+ BROWSE_MODE_HOSTS,
+ BROWSE_MODE_SHARES,
+};
+
typedef struct
{
GigoloBackendGVFS *self;
@@ -54,6 +63,18 @@
gboolean show_errors;
} MountInfo;
+typedef struct
+{
+ GigoloBackendGVFS *self;
+
+ gint mode;
+ gchar *uri;
+ GtkWindow *parent;
+ GtkTreeStore *store;
+ GtkTreePath *parent_path;
+} BrowseData;
+
+
struct _GigoloBackendGVFSPrivate
{
GtkListStore *store;
@@ -62,6 +83,7 @@
static void gigolo_backend_gvfs_finalize (GObject *object);
static void gigolo_backend_gvfs_set_property (GObject *object, guint prop_id,
const GValue *value, GParamSpec *pspec);
+static void browse_network_real (BrowseData *bd);
G_DEFINE_TYPE(GigoloBackendGVFS, gigolo_backend_gvfs, G_TYPE_OBJECT);
@@ -141,6 +163,14 @@
NULL,
gigolo_backend_gvfs_cclosure_marshal_VOID__STRING_STRING,
G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
+ signals[BROWSE_NETWORK_FINISHED] = g_signal_new("browse-network-finished",
+ G_TYPE_FROM_CLASS(klass),
+ (GSignalFlags) 0,
+ 0,
+ 0,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
}
@@ -497,8 +527,9 @@
}
-gchar **gigolo_backend_gvfs_get_smb_shares_from_uri(const gchar *uri)
+gchar **gigolo_backend_gvfs_get_smb_shares(const gchar *hostname, const gchar *user, const gchar *domain)
{
+ gchar *uri;
gchar **shares = NULL;
GList *l, *shares_list = NULL;
GFile *file;
@@ -506,8 +537,17 @@
GError *error = NULL;
GFileEnumerator *e;
- g_return_val_if_fail(uri != NULL, NULL);
+ g_return_val_if_fail(hostname != NULL, NULL);
+ uri = g_strdup_printf("smb://%s%s%s%s%s/",
+ (NZV(domain)) ? domain : "",
+ (NZV(domain)) ? ";" : "",
+ (NZV(user)) ? user : "",
+ (NZV(user) || NZV(domain)) ? "@" : "",
+ hostname);
+
+ /** TODO mount if necessary, merge with browse_network_real */
+
verbose("Querying \"%s\" for available shares", uri);
file = g_file_new_for_uri(uri);
@@ -550,52 +590,60 @@
}
g_object_unref(file);
+ g_free(uri);
return shares;
}
-gchar **gigolo_backend_gvfs_get_smb_shares(const gchar *hostname, const gchar *user, const gchar *domain)
+static gboolean browse_network_ready_cb(gpointer data)
{
- gchar **shares = NULL;
- gchar *uri;
+ g_signal_emit(data, signals[BROWSE_NETWORK_FINISHED], 0);
+ verbose("Browse Network finished");
+ return FALSE;
+}
- g_return_val_if_fail(hostname != NULL, NULL);
- uri = g_strdup_printf("smb://%s%s%s%s%s/",
- (NZV(domain)) ? domain : "",
- (NZV(domain)) ? ";" : "",
- (NZV(user)) ? user : "",
- (NZV(user) || NZV(domain)) ? "@" : "",
- hostname);
+static void browse_network_mount_ready_cb(GFile *location, GAsyncResult *res, BrowseData *bd)
+{
+ gboolean success;
+ GError *error = NULL;
- shares = gigolo_backend_gvfs_get_smb_shares_from_uri(uri);
- g_free(uri);
+ success = g_file_mount_enclosing_volume_finish(location, res, &error);
- return shares;
+ if (error != NULL)
+ {
+ verbose("%s (%s)", G_STRFUNC, error->message);
+ g_error_free(error);
+ }
+ else
+ {
+ browse_network_real(bd);
+ }
}
-GigoloHostUri **gigolo_backend_gvfs_browse_network(const gchar *uri)
+static void browse_network_real(BrowseData *bd)
{
- GigoloHostUri *h, **hosts = NULL;
- GList *l, *hosts_list = NULL;
+ GigoloBackendGVFS *backend;
GFile *file;
GFileInfo *info;
GError *error = NULL;
GFileEnumerator *e;
+ GtkTreeStore *store;
+ GtkWindow *parent;
+ gint mode;
- /* If a uri is passed, we assume this is an URI pointing to a workgroup like
- * "smb://WORKGROUP/", if passed NULL, we use "smb://" to search for workgroups */
- if (uri == NULL)
- uri = "smb://";
+ g_return_if_fail(bd != NULL);
- verbose("Querying \"%s\" for available groups/hosts", uri);
+ store = bd->store;
+ mode = bd->mode;
+ parent = bd->parent;
+ backend = bd->self;
- file = g_file_new_for_uri(uri);
+ file = g_file_new_for_uri(bd->uri);
e = g_file_enumerate_children(file,
- G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT ","
G_FILE_ATTRIBUTE_STANDARD_TARGET_URI ","
G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME ","
G_FILE_ATTRIBUTE_STANDARD_ICON,
@@ -603,56 +651,113 @@
if (error != NULL)
{
- verbose("%s: %s", G_STRFUNC, error->message);
- g_error_free(error);
+ if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_NOT_MOUNTED))
+ {
+ GMountOperation *op = gigolo_mount_operation_new(bd->parent);
+ /* if the URI wasn't mounted yet, mount it and try again from the mount ready callback */
+ g_file_mount_enclosing_volume(file, G_MOUNT_MOUNT_NONE, op, NULL,
+ (GAsyncReadyCallback) browse_network_mount_ready_cb, bd);
+ g_error_free(error);
+ g_object_unref(file);
+ g_object_unref(op);
+ return;
+ }
+ else
+ {
+ verbose("%s: %s", G_STRFUNC, error->message);
+ g_error_free(error);
+ }
}
else
{
- guint i, len;
- const gchar *h_uri;
+ const gchar *uri;
+ GtkTreeIter iter, parent_iter_tmp;
+ GtkTreeIter *parent_iter;
+ gint child_mode;
+ verbose("Querying \"%s\" for available groups/hosts", bd->uri);
+
while ((info = g_file_enumerator_next_file(e, NULL, NULL)) != NULL)
{
- h_uri = g_file_info_get_attribute_string(info, G_FILE_ATTRIBUTE_STANDARD_TARGET_URI);
- if (h_uri != NULL && g_str_has_prefix(h_uri, "smb://"))
+ uri = g_file_info_get_attribute_string(info, G_FILE_ATTRIBUTE_STANDARD_TARGET_URI);
+ if (uri != NULL)
{
- h = g_new(GigoloHostUri, 1);
- h->name = g_strdup(g_file_info_get_display_name(info));
- h->uri = g_strdup(h_uri);
- h->icon = g_object_ref(g_file_info_get_icon(info));
- hosts_list = g_list_append(hosts_list, h);
+ /* set parent item */
+ if (bd->parent_path != NULL)
+ {
+ gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &parent_iter_tmp, bd->parent_path);
+ parent_iter = &parent_iter_tmp;
+ }
+ else
+ parent_iter = NULL;
+
+ /* insert the item into the tree store */
+ gtk_tree_store_append(store, &iter, parent_iter);
+ gtk_tree_store_set(store, &iter,
+ GIGOLO_BROWSE_NETWORK_COL_URI, uri,
+ GIGOLO_BROWSE_NETWORK_COL_NAME, g_file_info_get_display_name(info),
+ GIGOLO_BROWSE_NETWORK_COL_ICON, g_file_info_get_icon(info),
+ GIGOLO_BROWSE_NETWORK_COL_CAN_MOUNT, (mode == BROWSE_MODE_SHARES),
+ -1);
+
+ /* set mode for the next level or stop recursion */
+ switch (mode)
+ {
+ case BROWSE_MODE_DOMAINS:
+ child_mode = BROWSE_MODE_HOSTS;
+ break;
+ case BROWSE_MODE_HOSTS:
+ child_mode = BROWSE_MODE_SHARES;
+ break;
+ default:
+ child_mode = BROWSE_MODE_INVALID;
+ }
+
+ /* setup child data and fire it */
+ if (child_mode != BROWSE_MODE_INVALID)
+ {
+ BrowseData *bd_child = g_new0(BrowseData, 1);
+ bd_child->mode = child_mode;
+ bd_child->uri = g_strdup(uri);
+ bd_child->store = store;
+ bd_child->parent = parent;
+ bd_child->parent_path = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &iter);
+ /* recurse into the next level */
+ browse_network_real(bd_child);
+ }
}
g_object_unref(info);
}
g_object_unref(e);
+ }
+ /** TODO this is very suboptimal as a fixed timeout of ~ 2 seconds is by no means good enough
+ * as we never know how long the whole operating will take. Find a better way to determine
+ * when the operation is finsihed. */
+ /* When the mode of this run was BROWSE_MODE_DOMAINS, this was the top-level call to initially
+ * start browsing, so in theory when we are here, we are finsihed. This isn't true due to
+ * possibly necessary mounting above. So, we use a timeout to estimate the finished operation. */
+ if (bd->mode == BROWSE_MODE_DOMAINS)
+ g_timeout_add_seconds(2, browse_network_ready_cb, backend);
- len = g_list_length(hosts_list);
- if (len > 0)
- {
- i = 0;
- hosts = g_new(GigoloHostUri*, len + 1);
-
- for (l = hosts_list; l != NULL; l = g_list_next(l))
- {
- hosts[i] = (GigoloHostUri*) l->data;
- i++;
- }
- hosts[i] = NULL;
- }
- g_list_free(hosts_list);
- }
g_object_unref(file);
-
- return hosts;
+ g_free(bd->uri);
+ gtk_tree_path_free(bd->parent_path);
+ g_free(bd);
}
-gpointer gigolo_backend_gvfs_get_share_icon(void)
+void gigolo_backend_gvfs_browse_network(GigoloBackendGVFS *backend, GtkWindow *parent, GtkTreeStore *store)
{
- if (gtk_check_version(2, 14, 0) == NULL)
- return g_themed_icon_new("folder-remote");
- else
- return NULL;
+ BrowseData *bd = g_new0(BrowseData, 1);
+
+ bd->mode = BROWSE_MODE_DOMAINS;
+ bd->parent_path = NULL;
+ bd->parent = parent;
+ bd->store = store;
+ bd->uri = g_strdup("smb://");
+ bd->self = backend;
+
+ browse_network_real(bd);
}
Modified: gigolo/trunk/src/backendgvfs.h
===================================================================
--- gigolo/trunk/src/backendgvfs.h 2009-04-08 21:15:10 UTC (rev 7144)
+++ gigolo/trunk/src/backendgvfs.h 2009-04-09 12:30:18 UTC (rev 7145)
@@ -55,6 +55,36 @@
} GigoloHostUri;
+enum
+{
+ GIGOLO_BROWSE_NETWORK_COL_NAME,
+ GIGOLO_BROWSE_NETWORK_COL_URI,
+ GIGOLO_BROWSE_NETWORK_COL_ICON,
+ GIGOLO_BROWSE_NETWORK_COL_CAN_MOUNT,
+ GIGOLO_BROWSE_NETWORK_N_COLUMNS
+};
+
+
+enum
+{
+ GIGOLO_WINDOW_COL_IS_MOUNTED,
+ GIGOLO_WINDOW_COL_SCHEME,
+ GIGOLO_WINDOW_COL_NAME,
+ GIGOLO_WINDOW_COL_REF,
+ GIGOLO_WINDOW_COL_REF_TYPE, /* volume or mount, see enum below */
+ GIGOLO_WINDOW_COL_PIXBUF,
+ GIGOLO_WINDOW_COL_ICON_NAME,
+ GIGOLO_WINDOW_COL_TOOLTIP,
+ GIGOLO_WINDOW_N_COLUMNS
+};
+
+enum
+{
+ GIGOLO_WINDOW_REF_TYPE_VOLUME,
+ GIGOLO_WINDOW_REF_TYPE_MOUNT /* mounted volume */
+};
+
+
GType gigolo_backend_gvfs_get_type (void);
GigoloBackendGVFS* gigolo_backend_gvfs_new (GtkListStore *store);
@@ -72,20 +102,18 @@
gchar* gigolo_backend_gvfs_get_volume_identifier (gpointer volume);
-gchar** gigolo_backend_gvfs_get_smb_shares_from_uri (const gchar *uri);
-
gchar** gigolo_backend_gvfs_get_smb_shares (const gchar *hostname,
const gchar *user,
const gchar *domain);
-GigoloHostUri** gigolo_backend_gvfs_browse_network (const gchar *uri);
+void gigolo_backend_gvfs_browse_network (GigoloBackendGVFS *backend,
+ GtkWindow *parent,
+ GtkTreeStore *store);
const gchar *const* gigolo_backend_gvfs_get_supported_uri_schemes (void);
gboolean gigolo_backend_gvfs_is_scheme_supported (const gchar *scheme);
-gpointer gigolo_backend_gvfs_get_share_icon (void);
-
G_END_DECLS
#endif /* __BACKENDGVFS_H__ */
Modified: gigolo/trunk/src/bookmarkdialog.c
===================================================================
--- gigolo/trunk/src/bookmarkdialog.c 2009-04-08 21:15:10 UTC (rev 7144)
+++ gigolo/trunk/src/bookmarkdialog.c 2009-04-09 12:30:18 UTC (rev 7145)
@@ -25,6 +25,7 @@
#include "settings.h"
#include "bookmark.h"
+#include "backendgvfs.h"
#include "window.h"
#include "compat.h"
#include "common.h"
Modified: gigolo/trunk/src/bookmarkeditdialog.c
===================================================================
--- gigolo/trunk/src/bookmarkeditdialog.c 2009-04-08 21:15:10 UTC (rev 7144)
+++ gigolo/trunk/src/bookmarkeditdialog.c 2009-04-09 12:30:18 UTC (rev 7145)
@@ -30,8 +30,8 @@
#include "compat.h"
#include "settings.h"
#include "bookmark.h"
+#include "backendgvfs.h"
#include "window.h"
-#include "backendgvfs.h"
#include "bookmarkeditdialog.h"
Modified: gigolo/trunk/src/browsenetworkpanel.c
===================================================================
--- gigolo/trunk/src/browsenetworkpanel.c 2009-04-08 21:15:10 UTC (rev 7144)
+++ gigolo/trunk/src/browsenetworkpanel.c 2009-04-09 12:30:18 UTC (rev 7145)
@@ -58,17 +58,10 @@
enum
{
- COLUMN_NAME,
- COLUMN_URI,
- COLUMN_ICON,
- COLUMN_CAN_MOUNT,
- N_COLUMNS,
ACTION_BOOKMARK,
ACTION_CONNECT
};
-
-
static void tree_selection_changed_cb(GtkTreeSelection *selection, GigoloBrowseNetworkPanel *panel);
@@ -108,14 +101,15 @@
if (gtk_tree_selection_get_selected(selection, &model, &iter) &&
! gtk_tree_model_iter_has_child(model, &iter))
{
- gchar *uri, *share, *full_uri;
+ gchar *uri, *share;
GigoloBookmark *bm;
- gtk_tree_model_get(model, &iter, COLUMN_NAME, &share, COLUMN_URI, &uri, -1);
+ gtk_tree_model_get(model, &iter,
+ GIGOLO_BROWSE_NETWORK_COL_NAME, &share,
+ GIGOLO_BROWSE_NETWORK_COL_URI, &uri,
+ -1);
- full_uri = g_strconcat(uri, share, NULL);
-
- bm = gigolo_bookmark_new_from_uri(share, full_uri);
+ bm = gigolo_bookmark_new_from_uri(share, uri);
if (gigolo_bookmark_is_valid(bm))
{
GtkWidget *edit_dialog;
@@ -146,7 +140,6 @@
g_object_unref(bm);
g_free(uri);
- g_free(full_uri);
g_free(share);
}
}
@@ -164,107 +157,29 @@
}
-static void gigolo_browse_network_panel_refresh(GigoloBrowseNetworkPanel *panel)
+static void browse_network_finished_cb(G_GNUC_UNUSED GigoloBackendGVFS *bnd, GigoloBrowseNetworkPanel *panel)
{
GigoloBrowseNetworkPanelPrivate *priv = GIGOLO_BROWSE_NETWORK_PANEL_GET_PRIVATE(panel);
- GigoloHostUri **groups;
- GigoloHostUri **hosts;
- guint g, i, j;
- GtkTreeIter iter_group, iter_host, iter_share;
- gchar **shares;
- gpointer icon_share = NULL;
- gtk_widget_set_sensitive(priv->button_refresh, FALSE);
- gtk_tree_store_clear(priv->store);
+ gtk_tree_view_expand_all(GTK_TREE_VIEW(priv->tree));
- /* TODO make this async? */
+ gtk_widget_set_sensitive(priv->button_refresh, TRUE);
- /* Iterate over workgroups */
- groups = gigolo_backend_gvfs_browse_network(NULL);
- if (groups != NULL)
- {
- icon_share = gigolo_backend_gvfs_get_share_icon();
- for (g = 0; groups[g] != NULL; g++)
- {
- gtk_tree_store_append(priv->store, &iter_group, NULL);
- gtk_tree_store_set(priv->store, &iter_group,
- COLUMN_URI, groups[g]->uri,
- COLUMN_NAME, groups[g]->name,
- COLUMN_ICON, groups[g]->icon,
- COLUMN_CAN_MOUNT, FALSE,
- -1);
+ tree_selection_changed_cb(NULL, panel);
- /* Iterate over hosts */
- hosts = gigolo_backend_gvfs_browse_network(groups[g]->uri);
- if (hosts != NULL)
- {
- for (i = 0; hosts[i] != NULL; i++)
- {
- gtk_tree_store_append(priv->store, &iter_host, &iter_group);
- gtk_tree_store_set(priv->store, &iter_host,
- COLUMN_URI, hosts[i]->uri,
- COLUMN_NAME, hosts[i]->name,
- COLUMN_ICON, hosts[i]->icon,
- COLUMN_CAN_MOUNT, FALSE,
- -1);
+ gdk_window_set_cursor(gigolo_widget_get_window(GTK_WIDGET(panel)), NULL);
+}
- /* Iterate over shares */
- shares = gigolo_backend_gvfs_get_smb_shares_from_uri(hosts[i]->uri);
- if (shares != NULL)
- {
- for (j = 0; shares[j] != NULL; j++)
- {
- gtk_tree_store_append(priv->store, &iter_share, &iter_host);
- gtk_tree_store_set(priv->store, &iter_share,
- COLUMN_NAME, shares[j],
- COLUMN_URI, hosts[i]->uri,
- COLUMN_ICON, icon_share,
- COLUMN_CAN_MOUNT, TRUE,
- -1);
- }
- g_strfreev(shares);
- }
- else
- verbose("No Shares found for %s", hosts[i]->name);
- g_object_unref(hosts[i]->icon);
- g_free(hosts[i]->uri);
- g_free(hosts[i]->name);
- g_free(hosts[i]);
- }
- g_free(hosts);
- }
- else
- verbose("No Hosts found for %s", groups[g]->name);
+static void gigolo_browse_network_panel_refresh(GigoloBrowseNetworkPanel *panel)
+{
+ GigoloBrowseNetworkPanelPrivate *priv = GIGOLO_BROWSE_NETWORK_PANEL_GET_PRIVATE(panel);
- g_object_unref(groups[g]->icon);
- g_free(groups[g]->uri);
- g_free(groups[g]->name);
- g_free(groups[g]);
- }
- g_free(groups);
- if (icon_share != NULL)
- g_object_unref(icon_share);
- }
- else
- verbose("No Workgroups found");
+ gtk_widget_set_sensitive(priv->button_refresh, FALSE);
+ gtk_tree_store_clear(priv->store);
- if (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(priv->store), NULL) == 0)
- {
- GtkTreeIter iter;
- gtk_tree_store_append(priv->store, &iter, NULL);
- gtk_tree_store_set(priv->store, &iter,
- COLUMN_NAME, _("No Workgroups found"),
- COLUMN_CAN_MOUNT, FALSE,
- -1);
- }
-
- gtk_tree_view_expand_all(GTK_TREE_VIEW(priv->tree));
-
- gdk_window_set_cursor(gigolo_widget_get_window(GTK_WIDGET(panel)), NULL);
- gtk_widget_set_sensitive(priv->button_refresh, TRUE);
-
- tree_selection_changed_cb(NULL, panel);
+ gigolo_backend_gvfs_browse_network(gigolo_window_get_backend(priv->parent),
+ GTK_WINDOW(priv->parent), priv->store);
}
@@ -340,7 +255,7 @@
{
gboolean can_mount;
- gtk_tree_model_get(model, &iter, COLUMN_CAN_MOUNT, &can_mount, -1);
+ gtk_tree_model_get(model, &iter, GIGOLO_BROWSE_NETWORK_COL_CAN_MOUNT, &can_mount, -1);
/* double click on parent node expands/collapses it */
if (! can_mount)
{
@@ -399,9 +314,9 @@
{
gchar *uri, *share;
gtk_tree_model_get(model, &iter,
- COLUMN_CAN_MOUNT, &set,
- COLUMN_URI, &uri,
- COLUMN_NAME, &share,
+ GIGOLO_BROWSE_NETWORK_COL_CAN_MOUNT, &set,
+ GIGOLO_BROWSE_NETWORK_COL_URI, &uri,
+ GIGOLO_BROWSE_NETWORK_COL_NAME, &share,
-1);
if (set)
@@ -434,7 +349,7 @@
GigoloBrowseNetworkPanelPrivate *priv = GIGOLO_BROWSE_NETWORK_PANEL_GET_PRIVATE(panel);
tree = gtk_tree_view_new();
- store = gtk_tree_store_new(N_COLUMNS,
+ store = gtk_tree_store_new(GIGOLO_BROWSE_NETWORK_N_COLUMNS,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_ICON, G_TYPE_BOOLEAN);
column = gtk_tree_view_column_new();
@@ -443,14 +358,16 @@
{
icon_renderer = gtk_cell_renderer_pixbuf_new();
gtk_tree_view_column_pack_start(column, icon_renderer, FALSE);
- gtk_tree_view_column_set_attributes(column, icon_renderer, "gicon", COLUMN_ICON, NULL);
+ gtk_tree_view_column_set_attributes(column, icon_renderer,
+ "gicon", GIGOLO_BROWSE_NETWORK_COL_ICON, NULL);
g_object_set(icon_renderer, "xalign", 0.0, NULL);
}
text_renderer = gtk_cell_renderer_text_new();
gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tree), FALSE);
gtk_tree_view_column_pack_start(column, text_renderer, TRUE);
- gtk_tree_view_column_set_attributes(column, text_renderer, "text", COLUMN_NAME, NULL);
+ gtk_tree_view_column_set_attributes(column, text_renderer,
+ "text", GIGOLO_BROWSE_NETWORK_COL_NAME, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column);
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE);
@@ -492,7 +409,7 @@
}
-static void realize_cb(GtkWidget *panel, G_GNUC_UNUSED gpointer data)
+static void realize_cb(GigoloBrowseNetworkPanel *panel, G_GNUC_UNUSED gpointer data)
{
g_timeout_add(250, (GSourceFunc) delay_refresh, panel);
}
@@ -565,12 +482,16 @@
{
GtkWidget *self;
GigoloBrowseNetworkPanelPrivate *priv;
+ GigoloBackendGVFS *backend;
self = g_object_new(GIGOLO_BROWSE_NETWORK_PANEL_TYPE, NULL);
priv = GIGOLO_BROWSE_NETWORK_PANEL_GET_PRIVATE(self);
priv->parent = parent;
+ backend = gigolo_window_get_backend(parent);
+ g_signal_connect(backend, "browse-network-finished", G_CALLBACK(browse_network_finished_cb), self);
+
return self;
}
Modified: gigolo/trunk/src/common.h
===================================================================
--- gigolo/trunk/src/common.h 2009-04-08 21:15:10 UTC (rev 7144)
+++ gigolo/trunk/src/common.h 2009-04-09 12:30:18 UTC (rev 7145)
@@ -28,25 +28,6 @@
((ptr) && (ptr)[0])
-enum
-{
- GIGOLO_WINDOW_COL_IS_MOUNTED,
- GIGOLO_WINDOW_COL_SCHEME,
- GIGOLO_WINDOW_COL_NAME,
- GIGOLO_WINDOW_COL_REF,
- GIGOLO_WINDOW_COL_REF_TYPE, /* volume or mount, see enum below */
- GIGOLO_WINDOW_COL_PIXBUF,
- GIGOLO_WINDOW_COL_ICON_NAME,
- GIGOLO_WINDOW_COL_TOOLTIP,
- GIGOLO_WINDOW_N_COLUMNS
-};
-
-enum
-{
- GIGOLO_WINDOW_REF_TYPE_VOLUME,
- GIGOLO_WINDOW_REF_TYPE_MOUNT /* mounted volume */
-};
-
#ifdef DEBUG
void debug(gchar const *format, ...);
#else
Modified: gigolo/trunk/src/main.c
===================================================================
--- gigolo/trunk/src/main.c 2009-04-08 21:15:10 UTC (rev 7144)
+++ gigolo/trunk/src/main.c 2009-04-09 12:30:18 UTC (rev 7145)
@@ -31,8 +31,8 @@
#include "common.h"
#include "settings.h"
#include "bookmark.h"
+#include "backendgvfs.h"
#include "window.h"
-#include "backendgvfs.h"
#include "singleinstance.h"
Modified: gigolo/trunk/src/window.c
===================================================================
--- gigolo/trunk/src/window.c 2009-04-08 21:15:10 UTC (rev 7144)
+++ gigolo/trunk/src/window.c 2009-04-09 12:30:18 UTC (rev 7145)
@@ -30,12 +30,12 @@
#include "common.h"
#include "bookmark.h"
#include "settings.h"
+#include "backendgvfs.h"
#include "window.h"
#include "bookmarkdialog.h"
#include "bookmarkeditdialog.h"
#include "menubuttonaction.h"
#include "preferencesdialog.h"
-#include "backendgvfs.h"
#include "mountdialog.h"
#include "browsenetworkpanel.h"
@@ -1542,3 +1542,15 @@
}
+GigoloBackendGVFS *gigolo_window_get_backend(GigoloWindow *window)
+{
+ GigoloWindowPrivate *priv;
+
+ g_return_val_if_fail(window != NULL, NULL);
+
+ priv = GIGOLO_WINDOW_GET_PRIVATE(window);
+
+ return priv->backend_gvfs;
+}
+
+
Modified: gigolo/trunk/src/window.h
===================================================================
--- gigolo/trunk/src/window.h 2009-04-08 21:15:10 UTC (rev 7144)
+++ gigolo/trunk/src/window.h 2009-04-09 12:30:18 UTC (rev 7145)
@@ -61,6 +61,8 @@
GigoloSettings* gigolo_window_get_settings (GigoloWindow *window);
+GigoloBackendGVFS* gigolo_window_get_backend (GigoloWindow *window);
+
G_END_DECLS
#endif /* __WINDOW_H__ */
More information about the Goodies-commits
mailing list